import { describe, it, expect } from 'vitest'; import * as schema from '../schema'; describe('Database Schema - YouTube Channels', () => { it('should have youtubeChannels table defined with correct columns', () => { expect(schema.youtubeChannels).toBeDefined(); expect(schema.youtubeChannels.channelId).toBeDefined(); expect(schema.youtubeChannels.syncStatus).toBeDefined(); }); it('should have sync_status enum defined', () => { expect(schema.syncStatusEnum).toBeDefined(); expect(schema.syncStatusEnum.enumValues).toContain('idle'); expect(schema.syncStatusEnum.enumValues).toContain('syncing'); expect(schema.syncStatusEnum.enumValues).toContain('errored'); }); }); describe('Database Schema - Detected Objects', () => { it('should have detectedObjects table defined with correct columns', () => { expect(schema.detectedObjects).toBeDefined(); expect(schema.detectedObjects.category).toBeDefined(); expect(schema.detectedObjects.status).toBeDefined(); expect(schema.detectedObjects.confidenceScore).toBeDefined(); expect(schema.detectedObjects.moderationStatus).toBeDefined(); expect(schema.detectedObjects.moderatedAt).toBeDefined(); expect(schema.detectedObjects.moderatedBy).toBeDefined(); expect(schema.detectedObjects.moderationMetadata).toBeDefined(); }); it('should have object_category enum defined', () => { expect(schema.objectCategory).toBeDefined(); expect(schema.objectCategory.enumValues).toContain('Tech'); expect(schema.objectCategory.enumValues).toContain('Fashion'); }); it('should have detection_status enum defined', () => { expect(schema.detectionStatus).toBeDefined(); expect(schema.detectionStatus.enumValues).toContain('pending_review'); expect(schema.detectionStatus.enumValues).toContain('flagged'); }); it('should have moderation_status enum defined', () => { expect(schema.moderationStatus).toBeDefined(); expect(schema.moderationStatus.enumValues).toContain('PENDING'); expect(schema.moderationStatus.enumValues).toContain('APPROVED'); expect(schema.moderationStatus.enumValues).toContain('REJECTED'); }); }); describe('Database Schema - Marketplace Matches', () => { it('should have marketplaceMatches table defined with correct columns', () => { expect(schema.marketplaceMatches).toBeDefined(); expect(schema.marketplaceMatches.marketplace).toBeDefined(); expect(schema.marketplaceMatches.availabilityStatus).toBeDefined(); expect(schema.marketplaceMatches.price).toBeDefined(); }); it('should have marketplace_type enum defined', () => { expect(schema.marketplaceType).toBeDefined(); expect(schema.marketplaceType.enumValues).toContain('amazon'); expect(schema.marketplaceType.enumValues).toContain('ebay'); expect(schema.marketplaceType.enumValues).toContain('etsy'); }); it('should have availability_status enum defined', () => { expect(schema.availabilityStatus).toBeDefined(); expect(schema.availabilityStatus.enumValues).toContain('IN_STOCK'); expect(schema.availabilityStatus.enumValues).toContain('SOLD_OUT'); expect(schema.availabilityStatus.enumValues).toContain('DISCONTINUED'); }); }); describe('Database Schema - Admin Moderation', () => { it('should have adminModeration table defined with correct columns', () => { expect(schema.adminModeration).toBeDefined(); expect(schema.adminModeration.detectionId).toBeDefined(); expect(schema.adminModeration.adminId).toBeDefined(); expect(schema.adminModeration.action).toBeDefined(); expect(schema.adminModeration.originalValues).toBeDefined(); }); it('should have admin_moderation_type enum defined', () => { expect(schema.adminModerationType).toBeDefined(); expect(schema.adminModerationType.enumValues).toContain('corrected'); expect(schema.adminModerationType.enumValues).toContain('marked_incorrect'); }); it('should have reason_code enum defined', () => { expect(schema.reasonCode).toBeDefined(); expect(schema.reasonCode.enumValues).toContain('wrong_object'); expect(schema.reasonCode.enumValues).toContain('false_positive'); }); });