57 lines
1.5 KiB
TypeScript
57 lines
1.5 KiB
TypeScript
import { beforeEach, expect, test, vi } from 'vitest';
|
|
|
|
import { ApiClientError } from '../apiClient';
|
|
|
|
const { requestJsonMock } = vi.hoisted(() => ({
|
|
requestJsonMock: vi.fn(),
|
|
}));
|
|
|
|
vi.mock('../apiClient', async (importOriginal) => {
|
|
const actual = await importOriginal<typeof import('../apiClient')>();
|
|
return {
|
|
...actual,
|
|
requestJson: requestJsonMock,
|
|
};
|
|
});
|
|
|
|
import { likeBigFishGalleryWork, listBigFishGallery } from './bigFishGalleryClient';
|
|
|
|
beforeEach(() => {
|
|
requestJsonMock.mockReset();
|
|
});
|
|
|
|
test('listBigFishGallery returns empty items when public gallery is not ready', async () => {
|
|
requestJsonMock.mockRejectedValueOnce(
|
|
new ApiClientError({
|
|
message: '读取大鱼吃小鱼广场失败',
|
|
status: 400,
|
|
code: 'HTTP_400',
|
|
}),
|
|
);
|
|
|
|
await expect(listBigFishGallery()).resolves.toEqual({ items: [] });
|
|
});
|
|
|
|
test('listBigFishGallery keeps non-gallery-read errors visible', async () => {
|
|
const error = new ApiClientError({
|
|
message: '服务暂不可用',
|
|
status: 503,
|
|
code: 'HTTP_503',
|
|
});
|
|
requestJsonMock.mockRejectedValueOnce(error);
|
|
|
|
await expect(listBigFishGallery()).rejects.toBe(error);
|
|
});
|
|
|
|
test('likeBigFishGalleryWork posts to authenticated like route', async () => {
|
|
requestJsonMock.mockResolvedValueOnce({ items: [] });
|
|
|
|
await likeBigFishGalleryWork('big-fish-session-1');
|
|
|
|
expect(requestJsonMock).toHaveBeenCalledWith(
|
|
'/api/runtime/big-fish/gallery/big-fish-session-1/like',
|
|
expect.objectContaining({ method: 'POST' }),
|
|
'点赞大鱼吃小鱼作品失败',
|
|
);
|
|
});
|