Barazo AppView backend
barazo.forum
1import { describe, it, expect } from 'vitest'
2import { modNotes } from '../../../../src/db/schema/mod-notes.js'
3import { getTableName, getTableColumns } from 'drizzle-orm'
4
5describe('modNotes schema', () => {
6 it('should have the correct table name', () => {
7 expect(getTableName(modNotes)).toBe('mod_notes')
8 })
9
10 it('should have all required columns', () => {
11 const columns = getTableColumns(modNotes)
12 const columnNames = Object.keys(columns)
13 expect(columnNames).toContain('id')
14 expect(columnNames).toContain('communityDid')
15 expect(columnNames).toContain('authorDid')
16 expect(columnNames).toContain('subjectDid')
17 expect(columnNames).toContain('subjectUri')
18 expect(columnNames).toContain('content')
19 expect(columnNames).toContain('noteType')
20 expect(columnNames).toContain('createdAt')
21 })
22
23 it('should have id as primary key', () => {
24 const columns = getTableColumns(modNotes)
25 expect(columns.id.primary).toBe(true)
26 })
27
28 it('should mark required columns as not null', () => {
29 const columns = getTableColumns(modNotes)
30 expect(columns.communityDid.notNull).toBe(true)
31 expect(columns.authorDid.notNull).toBe(true)
32 expect(columns.content.notNull).toBe(true)
33 expect(columns.noteType.notNull).toBe(true)
34 expect(columns.createdAt.notNull).toBe(true)
35 })
36
37 it('should allow nullable subject columns', () => {
38 const columns = getTableColumns(modNotes)
39 expect(columns.subjectDid.notNull).toBe(false)
40 expect(columns.subjectUri.notNull).toBe(false)
41 })
42})