251212:1650 Frontend: refactor Document Numbering)
Some checks failed
Spec Validation / validate-markdown (push) Has been cancelled
Spec Validation / validate-diagrams (push) Has been cancelled
Spec Validation / check-todos (push) Has been cancelled

This commit is contained in:
admin
2025-12-12 16:50:52 +07:00
parent 2473c4c474
commit d964546c8d
16 changed files with 233 additions and 14925 deletions

View File

@@ -1,53 +0,0 @@
import { Correspondence, CreateCorrespondenceDto } from "@/types/correspondence";
// Mock Data
const mockCorrespondences: Correspondence[] = [
{
correspondenceId: 1,
documentNumber: "PAT-CNPC-0001-2568",
subject: "Request for Additional Information",
description: "Please provide updated structural drawings for Phase 2",
status: "IN_REVIEW",
importance: "HIGH",
createdAt: new Date(Date.now() - 1000 * 60 * 60 * 24 * 2).toISOString(),
updatedAt: new Date(Date.now() - 1000 * 60 * 60).toISOString(),
fromOrganizationId: 1,
toOrganizationId: 2,
documentTypeId: 1,
fromOrganization: { id: 1, orgName: "PAT", orgCode: "PAT" },
toOrganization: { id: 2, orgName: "CNPC", orgCode: "CNPC" },
attachments: [],
},
];
export const correspondenceApi = {
getAll: async (): Promise<{ data: Correspondence[]; meta: { total: number } }> => {
await new Promise((resolve) => setTimeout(resolve, 500));
return { data: mockCorrespondences, meta: { total: mockCorrespondences.length } };
},
getById: async (id: number): Promise<Correspondence | undefined> => {
await new Promise((resolve) => setTimeout(resolve, 300));
return mockCorrespondences.find((c) => c.correspondenceId === id);
},
create: async (data: CreateCorrespondenceDto): Promise<Correspondence> => {
await new Promise((resolve) => setTimeout(resolve, 800));
const newCorrespondence: Correspondence = {
correspondenceId: Math.max(...mockCorrespondences.map((c) => c.correspondenceId)) + 1,
documentNumber: `PAT-CNPC-${String(mockCorrespondences.length + 1).padStart(4, "0")}-2568`,
subject: data.subject,
description: data.description,
status: "DRAFT",
importance: data.importance,
createdAt: new Date().toISOString(),
updatedAt: new Date().toISOString(),
fromOrganizationId: data.fromOrganizationId,
toOrganizationId: data.toOrganizationId,
documentTypeId: data.documentTypeId,
attachments: [],
};
mockCorrespondences.push(newCorrespondence);
return newCorrespondence;
},
};

View File

@@ -39,18 +39,19 @@ describe('correspondenceService', () => {
describe('getById', () => {
it('should call GET /correspondences/:id', async () => {
const mockResponse = { id: 1, title: 'Test' };
vi.mocked(apiClient.get).mockResolvedValue({ data: mockResponse });
const mockData = { id: 1, title: 'Test' };
// Service expects response.data.data (NestJS interceptor wrapper)
vi.mocked(apiClient.get).mockResolvedValue({ data: { data: mockData } });
const result = await correspondenceService.getById(1);
expect(apiClient.get).toHaveBeenCalledWith('/correspondences/1');
expect(result).toEqual(mockResponse);
expect(result).toEqual(mockData);
});
it('should work with string id', async () => {
const mockResponse = { id: 1 };
vi.mocked(apiClient.get).mockResolvedValue({ data: mockResponse });
const mockData = { id: 1 };
vi.mocked(apiClient.get).mockResolvedValue({ data: { data: mockData } });
await correspondenceService.getById('123');