115 lines
3.1 KiB
TypeScript
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();
|
|
});
|
|
});
|