Files
ai_web/server/admin.test.ts
2026-01-27 13:41:31 +08:00

115 lines
3.1 KiB
TypeScript

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();
});
});