4fdfc2d8b4
- Create public config API for frontend consumption - Add configuration fetching to homepage - Implement module show/hide logic based on config - Add support for Services items filtering - Add support for Products featured products and pricing display - Add support for News display count, categories, and sort order - Fix table name from 'configs' to 'siteConfig' in API route - Update type definitions for proper TypeScript support
87 lines
3.1 KiB
TypeScript
87 lines
3.1 KiB
TypeScript
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();
|
|
});
|
|
});
|
|
});
|