import { describe, it, expect, beforeAll, afterAll } from 'vitest'; import { getDb } from './db'; import { createAdminProduct, getAdminProducts, updateAdminProduct, deleteAdminProduct, createAdminWebsite, getAdminWebsites, updateAdminWebsite, deleteAdminWebsite, getAdminCategories, createAdminCategory } from './db'; import type { InsertCategory } from './db'; describe('Admin Product Management', () => { let createdProductId: number; it('should create a new product', async () => { const result = await createAdminProduct({ name: 'Test Product', description: 'Test Description', image: 'https://example.com/image.jpg', categoryId: 1, price: 99.99, link: 'https://example.com/product', websiteId: 1, imageUrl: 'https://example.com/image.jpg', }); expect(result).toBeDefined(); createdProductId = result.lastInsertRowid as number; }); it('should get products list', async () => { const products = await getAdminProducts(10, 0); expect(Array.isArray(products)).toBe(true); }); it('should update a product', async () => { if (createdProductId) { const result = await updateAdminProduct(createdProductId, { name: 'Updated Product', }); expect(result).toBeDefined(); } }); it('should delete a product', async () => { if (createdProductId) { const result = await deleteAdminProduct(createdProductId); expect(result).toBeDefined(); } }); }); describe('Admin Website Management', () => { let createdWebsiteId: number; it('should create a new website', async () => { const result = await createAdminWebsite({ name: 'Test Website', url: 'https://example.com', logo: 'https://example.com/logo.png', description: 'Test Website Description', categoryId: 1, }); expect(result).toBeDefined(); createdWebsiteId = result.lastInsertRowid as number; }); it('should get websites list', async () => { const websites = await getAdminWebsites(10, 0); expect(Array.isArray(websites)).toBe(true); }); it('should update a website', async () => { if (createdWebsiteId) { const result = await updateAdminWebsite(createdWebsiteId, { name: 'Updated Website', }); expect(result).toBeDefined(); } }); it('should delete a website', async () => { if (createdWebsiteId) { const result = await deleteAdminWebsite(createdWebsiteId); expect(result).toBeDefined(); } }); }); describe('Admin Category Management', () => { it('should get categories list', async () => { const categories = await getAdminCategories(); expect(Array.isArray(categories)).toBe(true); expect(categories.length).toBeGreaterThan(0); }); it('should create a new category', async () => { const timestamp = Date.now(); const categoryData: InsertCategory = { name: `Test Category ${timestamp}`, slug: `test-category-${timestamp}`, description: 'Test Category Description', }; const result = await createAdminCategory(categoryData); expect(result).toBeDefined(); }); });