kt-template-online-api/test/qqbot/plugins/bangDream/cutoff/cutoff-event-top.repository.spec.ts

42 lines
1.4 KiB
TypeScript

import type { BangDreamDataProvider } from '@/qqbot/plugins/bangDream/provider/bangdream-data-provider';
import { CutoffEventTopRepository } from '@/qqbot/plugins/bangDream/cutoff/cutoff-event-top.repository';
import { Server } from '@/qqbot/plugins/bangDream/catalog/server.model';
function createProviderMock(): jest.Mocked<BangDreamDataProvider> {
return {
getAsset: jest.fn(),
getJson: jest.fn(),
getTracker: jest.fn(),
name: 'MockBestdori',
resolveUrl: jest.fn((pathOrUrl) => `https://bestdori.example${pathOrUrl}`),
};
}
describe('BangDream cutoff event top repository', () => {
it('builds event top data paths', () => {
const repository = new CutoffEventTopRepository(createProviderMock());
expect(repository.getTopDataPath(50, Server.cn)).toBe(
'/api/eventtop/data?server=3&event=50&mid=0&interval=3600000',
);
});
it('routes event top data requests through the provider', async () => {
const provider = createProviderMock();
provider.getJson.mockResolvedValue({
points: [{ time: 1, uid: 2, value: 3 }],
users: [],
});
const repository = new CutoffEventTopRepository(provider);
await expect(repository.getTopData(50, Server.cn)).resolves.toEqual({
points: [{ time: 1, uid: 2, value: 3 }],
users: [],
});
expect(provider.getJson).toHaveBeenCalledWith(
'/api/eventtop/data?server=3&event=50&mid=0&interval=3600000',
);
});
});