import { describe, it, expect } from '@jest/globals'; import { users, content, siteConfig, auditLogs, contentVersions } from './schema'; describe('Database Schema', () => { describe('users table', () => { it('should have correct columns defined', () => { expect(users.id).toBeDefined(); expect(users.email).toBeDefined(); expect(users.passwordHash).toBeDefined(); expect(users.name).toBeDefined(); expect(users.isAdmin).toBeDefined(); expect(users.avatar).toBeDefined(); expect(users.createdAt).toBeDefined(); expect(users.updatedAt).toBeDefined(); }); it('should have default isAdmin as false', () => { const isAdmin = users.isAdmin; expect(isAdmin).toBeDefined(); }); }); describe('content table', () => { it('should have correct columns defined', () => { expect(content.id).toBeDefined(); expect(content.type).toBeDefined(); expect(content.title).toBeDefined(); expect(content.slug).toBeDefined(); expect(content.excerpt).toBeDefined(); expect(content.content).toBeDefined(); expect(content.coverImage).toBeDefined(); expect(content.category).toBeDefined(); expect(content.tags).toBeDefined(); expect(content.status).toBeDefined(); expect(content.publishedAt).toBeDefined(); expect(content.authorId).toBeDefined(); expect(content.sortOrder).toBeDefined(); expect(content.metadata).toBeDefined(); expect(content.createdAt).toBeDefined(); expect(content.updatedAt).toBeDefined(); }); it('should have default status as draft', () => { expect(content.status).toBeDefined(); }); }); describe('contentVersions table', () => { it('should have correct columns defined', () => { expect(contentVersions.id).toBeDefined(); expect(contentVersions.contentId).toBeDefined(); expect(contentVersions.version).toBeDefined(); expect(contentVersions.title).toBeDefined(); expect(contentVersions.content).toBeDefined(); expect(contentVersions.changes).toBeDefined(); expect(contentVersions.changedBy).toBeDefined(); expect(contentVersions.changedAt).toBeDefined(); }); }); describe('siteConfig table', () => { it('should have correct columns defined', () => { expect(siteConfig.id).toBeDefined(); expect(siteConfig.key).toBeDefined(); expect(siteConfig.value).toBeDefined(); expect(siteConfig.category).toBeDefined(); expect(siteConfig.description).toBeDefined(); expect(siteConfig.updatedAt).toBeDefined(); expect(siteConfig.updatedBy).toBeDefined(); }); }); describe('auditLogs table', () => { it('should have correct columns defined', () => { expect(auditLogs.id).toBeDefined(); expect(auditLogs.userId).toBeDefined(); expect(auditLogs.action).toBeDefined(); expect(auditLogs.resourceType).toBeDefined(); expect(auditLogs.resourceId).toBeDefined(); expect(auditLogs.details).toBeDefined(); expect(auditLogs.ipAddress).toBeDefined(); expect(auditLogs.userAgent).toBeDefined(); expect(auditLogs.timestamp).toBeDefined(); }); }); });