Barazo AppView backend barazo.forum
at main 107 lines 3.1 kB view raw
1import { describe, it, expect } from 'vitest' 2import { getTableName, getTableColumns } from 'drizzle-orm' 3import { plugins, pluginSettings, pluginPermissions } from '../../../../src/db/schema/plugins.js' 4 5describe('plugins schema', () => { 6 const columns = getTableColumns(plugins) 7 8 it('has the correct table name', () => { 9 expect(getTableName(plugins)).toBe('plugins') 10 }) 11 12 it('has all required columns', () => { 13 const columnNames = Object.keys(columns) 14 15 const expected = [ 16 'id', 17 'name', 18 'displayName', 19 'version', 20 'description', 21 'source', 22 'category', 23 'enabled', 24 'manifestJson', 25 'installedAt', 26 'updatedAt', 27 ] 28 29 for (const col of expected) { 30 expect(columnNames).toContain(col) 31 } 32 }) 33 34 it('has non-nullable columns', () => { 35 expect(columns.id.notNull).toBe(true) 36 expect(columns.name.notNull).toBe(true) 37 expect(columns.displayName.notNull).toBe(true) 38 expect(columns.version.notNull).toBe(true) 39 expect(columns.description.notNull).toBe(true) 40 expect(columns.source.notNull).toBe(true) 41 expect(columns.category.notNull).toBe(true) 42 expect(columns.enabled.notNull).toBe(true) 43 expect(columns.manifestJson.notNull).toBe(true) 44 expect(columns.installedAt.notNull).toBe(true) 45 expect(columns.updatedAt.notNull).toBe(true) 46 }) 47 48 it('has default values for enabled and timestamps', () => { 49 expect(columns.enabled.hasDefault).toBe(true) 50 expect(columns.installedAt.hasDefault).toBe(true) 51 expect(columns.updatedAt.hasDefault).toBe(true) 52 }) 53}) 54 55describe('pluginSettings schema', () => { 56 const columns = getTableColumns(pluginSettings) 57 58 it('has the correct table name', () => { 59 expect(getTableName(pluginSettings)).toBe('plugin_settings') 60 }) 61 62 it('has all required columns', () => { 63 const columnNames = Object.keys(columns) 64 65 const expected = ['id', 'pluginId', 'key', 'value'] 66 67 for (const col of expected) { 68 expect(columnNames).toContain(col) 69 } 70 }) 71 72 it('has non-nullable columns', () => { 73 expect(columns.id.notNull).toBe(true) 74 expect(columns.pluginId.notNull).toBe(true) 75 expect(columns.key.notNull).toBe(true) 76 expect(columns.value.notNull).toBe(true) 77 }) 78}) 79 80describe('pluginPermissions schema', () => { 81 const columns = getTableColumns(pluginPermissions) 82 83 it('has the correct table name', () => { 84 expect(getTableName(pluginPermissions)).toBe('plugin_permissions') 85 }) 86 87 it('has all required columns', () => { 88 const columnNames = Object.keys(columns) 89 90 const expected = ['id', 'pluginId', 'permission', 'grantedAt'] 91 92 for (const col of expected) { 93 expect(columnNames).toContain(col) 94 } 95 }) 96 97 it('has non-nullable columns', () => { 98 expect(columns.id.notNull).toBe(true) 99 expect(columns.pluginId.notNull).toBe(true) 100 expect(columns.permission.notNull).toBe(true) 101 expect(columns.grantedAt.notNull).toBe(true) 102 }) 103 104 it('has default value for grantedAt', () => { 105 expect(columns.grantedAt.hasDefault).toBe(true) 106 }) 107})