refactor queryRequest

This commit is contained in:
pa
2026-03-09 21:28:45 +09:00
parent c1a35223d4
commit 58b9bdc1c5
60 changed files with 1134 additions and 883 deletions

View File

@@ -84,10 +84,8 @@ vi.mock('../../../../service/request', () => ({
failedGetRequests: new Map()
}));
vi.mock('../../../../api', () => ({
groupRequest: {
getCachedGroupGallery: vi
.fn()
.mockResolvedValue({ json: [], params: {} })
queryRequest: {
fetch: vi.fn().mockResolvedValue({ json: [], params: {} })
},
userRequest: {}
}));

View File

@@ -2,13 +2,13 @@ import { describe, expect, test, vi, beforeEach } from 'vitest';
import { ref } from 'vue';
vi.mock('../../../../api', () => ({
groupRequest: {
getCachedGroupGallery: vi.fn()
queryRequest: {
fetch: vi.fn()
}
}));
import { useGroupGalleries } from '../useGroupGalleries';
import { groupRequest } from '../../../../api';
import { queryRequest } from '../../../../api';
function createGroupDialog(overrides = {}) {
return ref({
@@ -120,7 +120,7 @@ describe('useGroupGalleries', () => {
galleries: [{ id: 'g1', name: 'Gallery' }]
}
});
groupRequest.getCachedGroupGallery.mockResolvedValue({
queryRequest.fetch.mockResolvedValue({
json: [],
params: { groupId: 'grp_1' }
});
@@ -145,7 +145,7 @@ describe('useGroupGalleries', () => {
]
}
});
groupRequest.getCachedGroupGallery.mockResolvedValue({
queryRequest.fetch.mockResolvedValue({
json: [],
params: { groupId: 'grp_1' }
});
@@ -153,7 +153,7 @@ describe('useGroupGalleries', () => {
const { getGroupGalleries } = useGroupGalleries(groupDialog);
await getGroupGalleries();
expect(groupRequest.getCachedGroupGallery).toHaveBeenCalledTimes(2);
expect(queryRequest.fetch).toHaveBeenCalledTimes(2);
});
});
@@ -162,7 +162,7 @@ describe('useGroupGalleries', () => {
const groupDialog = createGroupDialog();
const { getGroupGallery } = useGroupGalleries(groupDialog);
groupRequest.getCachedGroupGallery.mockResolvedValueOnce({
queryRequest.fetch.mockResolvedValueOnce({
json: [
{
groupId: 'grp_1',
@@ -190,7 +190,7 @@ describe('useGroupGalleries', () => {
const groupDialog = createGroupDialog();
const { getGroupGallery } = useGroupGalleries(groupDialog);
groupRequest.getCachedGroupGallery.mockResolvedValueOnce({
queryRequest.fetch.mockResolvedValueOnce({
json: [
{
groupId: 'grp_other',
@@ -211,7 +211,7 @@ describe('useGroupGalleries', () => {
const groupDialog = createGroupDialog();
const { getGroupGallery } = useGroupGalleries(groupDialog);
groupRequest.getCachedGroupGallery.mockResolvedValueOnce({
queryRequest.fetch.mockResolvedValueOnce({
json: Array.from({ length: 50 }, (_, i) => ({
groupId: 'grp_1',
galleryId: 'g1',
@@ -223,7 +223,7 @@ describe('useGroupGalleries', () => {
await getGroupGallery('grp_1', 'g1');
expect(groupRequest.getCachedGroupGallery).toHaveBeenCalledTimes(1);
expect(queryRequest.fetch).toHaveBeenCalledTimes(1);
});
test('handles API errors gracefully', async () => {
@@ -233,7 +233,7 @@ describe('useGroupGalleries', () => {
.spyOn(console, 'error')
.mockImplementation(() => {});
groupRequest.getCachedGroupGallery.mockRejectedValueOnce(
queryRequest.fetch.mockRejectedValueOnce(
new Error('API Error')
);

View File

@@ -3,9 +3,10 @@ import { ref } from 'vue';
vi.mock('../../../../api', () => ({
groupRequest: {
getGroupMembersSearch: vi.fn(),
getCachedGroupMember: vi.fn(),
getCachedGroupMembers: vi.fn()
getGroupMembersSearch: vi.fn()
},
queryRequest: {
fetch: vi.fn()
},
userRequest: {}
}));
@@ -94,7 +95,7 @@ vi.mock('worker-timers', () => ({
}));
import { useGroupMembers } from '../useGroupMembers';
import { groupRequest } from '../../../../api';
import { groupRequest, queryRequest } from '../../../../api';
import { groupDialogFilterOptions } from '../../../../shared/constants';
/**
@@ -133,7 +134,7 @@ function createDeps(overrides = {}) {
describe('useGroupMembers', () => {
beforeEach(() => {
vi.clearAllMocks();
groupRequest.getCachedGroupMembers.mockReset();
queryRequest.fetch.mockReset();
});
describe('groupDialogMemberSortValue', () => {
@@ -316,7 +317,7 @@ describe('useGroupMembers', () => {
await loadMoreGroupMembers();
expect(groupRequest.getCachedGroupMembers).not.toHaveBeenCalled();
expect(queryRequest.fetch).not.toHaveBeenCalled();
});
test('does not load when already loading', async () => {
@@ -327,12 +328,12 @@ describe('useGroupMembers', () => {
await loadMoreGroupMembers();
expect(groupRequest.getCachedGroupMembers).not.toHaveBeenCalled();
expect(queryRequest.fetch).not.toHaveBeenCalled();
});
test('marks done when fewer than n results returned', async () => {
const groupDialog = createGroupDialog();
groupRequest.getCachedGroupMembers.mockResolvedValue({
queryRequest.fetch.mockResolvedValue({
json: [{ userId: 'usr_1' }],
params: { groupId: 'grp_1', n: 100, offset: 0 }
});
@@ -359,7 +360,7 @@ describe('useGroupMembers', () => {
const groupDialog = createGroupDialog({
members: [{ userId: 'existing' }]
});
groupRequest.getCachedGroupMembers.mockResolvedValue({
queryRequest.fetch.mockResolvedValue({
json: [{ userId: 'usr_new' }],
params: { groupId: 'grp_1', n: 100, offset: 0 }
});
@@ -384,7 +385,7 @@ describe('useGroupMembers', () => {
const groupDialog = createGroupDialog({
members: [{ userId: 'usr_me' }]
});
groupRequest.getCachedGroupMembers.mockResolvedValue({
queryRequest.fetch.mockResolvedValue({
json: [{ userId: 'usr_me' }, { userId: 'usr_2' }],
params: { groupId: 'grp_1', n: 100, offset: 0 }
});
@@ -408,7 +409,7 @@ describe('useGroupMembers', () => {
test('marks done on error', async () => {
const groupDialog = createGroupDialog();
groupRequest.getCachedGroupMembers.mockRejectedValue(
queryRequest.fetch.mockRejectedValue(
new Error('fail')
);
@@ -442,7 +443,7 @@ describe('useGroupMembers', () => {
await setGroupMemberSortOrder({ value: 'joinedAt:desc' });
expect(groupRequest.getCachedGroupMembers).not.toHaveBeenCalled();
expect(queryRequest.fetch).not.toHaveBeenCalled();
});
});
@@ -460,7 +461,7 @@ describe('useGroupMembers', () => {
await setGroupMemberFilter(filter);
expect(groupRequest.getCachedGroupMembers).not.toHaveBeenCalled();
expect(queryRequest.fetch).not.toHaveBeenCalled();
});
});
});

View File

@@ -83,10 +83,14 @@ vi.mock('../../../../service/request', () => ({
}));
vi.mock('../../../../api', () => ({
groupRequest: {},
userRequest: {}
userRequest: {},
queryRequest: {
fetch: vi.fn()
}
}));
import { useGroupModerationData } from '../useGroupModerationData';
import { queryRequest } from '../../../../api';
function createTables() {
return {
@@ -124,9 +128,6 @@ function createDeps(overrides = {}) {
getGroupMembers: vi.fn(),
getGroupMembersSearch: vi.fn()
},
userRequest: {
getCachedUser: vi.fn()
},
...overrides
};
}
@@ -134,6 +135,7 @@ function createDeps(overrides = {}) {
describe('useGroupModerationData', () => {
beforeEach(() => {
vi.clearAllMocks();
queryRequest.fetch.mockReset();
});
describe('getAllGroupBans', () => {
@@ -343,7 +345,7 @@ describe('useGroupModerationData', () => {
await addGroupMemberToSelection('usr_1');
expect(deps.selection.setSelectedUsers).toHaveBeenCalledWith('usr_1', member);
expect(deps.userRequest.getCachedUser).not.toHaveBeenCalled();
expect(queryRequest.fetch).not.toHaveBeenCalled();
});
test('falls back to user API when member has no user object', async () => {
@@ -353,14 +355,14 @@ describe('useGroupModerationData', () => {
params: {}
});
deps.applyGroupMember.mockReturnValue({ userId: 'usr_1' });
deps.userRequest.getCachedUser.mockResolvedValue({
queryRequest.fetch.mockResolvedValue({
json: { id: 'usr_1', displayName: 'Alice' }
});
const { addGroupMemberToSelection } = useGroupModerationData(deps);
await addGroupMemberToSelection('usr_1');
expect(deps.userRequest.getCachedUser).toHaveBeenCalledWith({ userId: 'usr_1' });
expect(queryRequest.fetch).toHaveBeenCalledWith('user', { userId: 'usr_1' });
expect(deps.selection.setSelectedUsers).toHaveBeenCalledWith('usr_1', expect.objectContaining({
userId: 'usr_1',
displayName: 'Alice'