feat(平台): 补齐服务端持久化和AI拆解契约
This commit is contained in:
66
apps/server/src/modules/data/data.service.spec.ts
Normal file
66
apps/server/src/modules/data/data.service.spec.ts
Normal file
@@ -0,0 +1,66 @@
|
||||
import { BadRequestException } from '@nestjs/common';
|
||||
import { DataService } from './data.service';
|
||||
|
||||
describe('DataService', () => {
|
||||
const makeService = () => {
|
||||
const prisma = {
|
||||
appData: {
|
||||
findUnique: jest.fn(),
|
||||
upsert: jest.fn(),
|
||||
},
|
||||
};
|
||||
return {
|
||||
prisma,
|
||||
service: new DataService(prisma as any),
|
||||
};
|
||||
};
|
||||
|
||||
it('returns null for an allowed key with no stored value', async () => {
|
||||
const { prisma, service } = makeService();
|
||||
prisma.appData.findUnique.mockResolvedValue(null);
|
||||
|
||||
await expect(service.get('products-overview')).resolves.toEqual({
|
||||
key: 'products-overview',
|
||||
value: null,
|
||||
});
|
||||
});
|
||||
|
||||
it('rejects unknown keys', async () => {
|
||||
const { service } = makeService();
|
||||
|
||||
await expect(service.get('unknown-key')).rejects.toBeInstanceOf(BadRequestException);
|
||||
});
|
||||
|
||||
it('upserts JSON values for allowed keys', async () => {
|
||||
const { prisma, service } = makeService();
|
||||
const value = [{ id: 'p1', name: 'Product 1' }];
|
||||
prisma.appData.upsert.mockResolvedValue({ key: 'products-overview', value });
|
||||
|
||||
await expect(service.put('products-overview', value)).resolves.toEqual({
|
||||
key: 'products-overview',
|
||||
value,
|
||||
});
|
||||
expect(prisma.appData.upsert).toHaveBeenCalledWith({
|
||||
where: { key: 'products-overview' },
|
||||
update: { value },
|
||||
create: { key: 'products-overview', value },
|
||||
});
|
||||
});
|
||||
|
||||
it('allows supporting business data keys migrated from browser storage', async () => {
|
||||
const { prisma, service } = makeService();
|
||||
const value: unknown[] = [];
|
||||
prisma.appData.upsert.mockImplementation(({ where }) =>
|
||||
Promise.resolve({ key: where.key, value }),
|
||||
);
|
||||
|
||||
await expect(service.put('task-worklogs', value)).resolves.toEqual({
|
||||
key: 'task-worklogs',
|
||||
value,
|
||||
});
|
||||
await expect(service.put('overtime', { records: [], reasons: [] })).resolves.toEqual({
|
||||
key: 'overtime',
|
||||
value,
|
||||
});
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user