import { describe, expect, it } from 'vitest'; import { createAdminClient, createRandomString } from './config'; describe('ProjectService', () => { it('should register a new project', async () => { const client = await createAdminClient(); const code = `test-project-${createRandomString(4).toLowerCase()}`; const result = await client.projects.register({ code, name: `Test Project (${code})` }); expect(result).toBeDefined(); expect(result.responseCode).toBe('ok'); expect(result.id).toBeDefined(); }); it('should search projects', async () => { const client = await createAdminClient(); const result = await client.projects.search({}); expect(result).toBeDefined(); expect(result.responseCode).toBe('ok'); }); it('should get project by id after registration', async () => { const client = await createAdminClient(); const code = `test-project-${createRandomString(4).toLowerCase()}`; const registerResult = await client.projects.register({ code, name: `Test Project (${code})` }); const projectId = registerResult.id; const getResult = await client.projects.getById(projectId); expect(getResult).toBeDefined(); expect(getResult.responseCode).toBe('ok'); expect(getResult.project.id).toBe(projectId); }); it('should get project by code', async () => { const client = await createAdminClient(); const code = `test-project-${createRandomString(4).toLowerCase()}`; await client.projects.register({ code, name: `Test Project (${code})` }); const getResult = await client.projects.getByCode(code); expect(getResult).toBeDefined(); expect(getResult.responseCode).toBe('ok'); expect(getResult.project.code).toBe(code); }); it('should update a project', async () => { const client = await createAdminClient(); const code = `test-project-${createRandomString(4).toLowerCase()}`; const registerResult = await client.projects.register({ code, name: `Original ${code}` }); const projectId = registerResult.id; const updateResult = await client.projects.update({ projectId, name: `Updated ${code}` }); expect(updateResult).toBeDefined(); expect(updateResult.responseCode).toBe('ok'); }); it('should delete a project', async () => { const client = await createAdminClient(); const code = `test-project-${createRandomString(4).toLowerCase()}`; const registerResult = await client.projects.register({ code, name: `Test Project (${code})` }); const projectId = registerResult.id; const deleteResult = await client.projects.delete(projectId); expect(deleteResult).toBeDefined(); expect(deleteResult.responseCode).toBe('ok'); }); it('should search projects with keyword filter', async () => { const client = await createAdminClient(); const uniqueCode = `unique-${createRandomString(6).toLowerCase()}`; await client.projects.register({ code: uniqueCode, name: `Unique Project ${uniqueCode}` }); const result = await client.projects.search({ keyword: uniqueCode }); expect(result).toBeDefined(); expect(result.responseCode).toBe('ok'); }); });