diff --git a/packages/vue-query/src/__tests__/useIsMutating.test.ts b/packages/vue-query/src/__tests__/useIsMutating.test.ts index 73d0fc47e8c..237ccb765d1 100644 --- a/packages/vue-query/src/__tests__/useIsMutating.test.ts +++ b/packages/vue-query/src/__tests__/useIsMutating.test.ts @@ -1,9 +1,8 @@ -import { afterEach, beforeEach, describe, expect, it, test, vi } from 'vitest' +import { afterEach, beforeEach, describe, expect, test, vi } from 'vitest' import { onScopeDispose, reactive, ref } from 'vue-demi' import { sleep } from '@tanstack/query-test-utils' import { useMutation } from '../useMutation' -import { useIsMutating, useMutationState } from '../useMutationState' -import { useQueryClient } from '../useQueryClient' +import { useIsMutating } from '../useMutationState' import type { MockedFunction } from 'vitest' vi.mock('../useQueryClient') @@ -110,75 +109,3 @@ describe('useIsMutating', () => { expect(isMutating.value).toStrictEqual(1) }) }) - -describe('useMutationState', () => { - beforeEach(() => { - vi.useFakeTimers() - }) - - afterEach(() => { - vi.useRealTimers() - }) - - it('should return variables after calling mutate 1', () => { - const mutationKey = ['mutation'] - const variables = 'foo123' - - const { mutate } = useMutation({ - mutationKey: mutationKey, - mutationFn: (params: string) => sleep(0).then(() => params), - }) - - mutate(variables) - - const mutationState = useMutationState({ - filters: { mutationKey, status: 'pending' }, - select: (mutation) => mutation.state.variables, - }) - - expect(mutationState.value).toEqual([variables]) - }) - - it('should return variables after calling mutate 2', () => { - const queryClient = useQueryClient() - queryClient.clear() - const mutationKey = ['mutation'] - const variables = 'bar234' - - const { mutate } = useMutation({ - mutationKey: mutationKey, - mutationFn: (params: string) => sleep(0).then(() => params), - }) - - mutate(variables) - - const mutationState = useMutationState() - - expect(mutationState.value[0]?.variables).toEqual(variables) - }) - - it('should work with options getter and be reactive', async () => { - const keyRef = ref('useMutationStateGetter2') - const variables = 'foo123' - - const { mutate } = useMutation({ - mutationKey: ['useMutationStateGetter'], - mutationFn: (params: string) => sleep(10).then(() => params), - }) - - mutate(variables) - - const mutationState = useMutationState(() => ({ - filters: { mutationKey: [keyRef.value], status: 'pending' }, - select: (mutation) => mutation.state.variables, - })) - - expect(mutationState.value).toEqual([]) - - keyRef.value = 'useMutationStateGetter' - - await vi.advanceTimersByTimeAsync(0) - - expect(mutationState.value).toEqual([variables]) - }) -}) diff --git a/packages/vue-query/src/__tests__/useMutationState.test.ts b/packages/vue-query/src/__tests__/useMutationState.test.ts new file mode 100644 index 00000000000..df15a1d9f81 --- /dev/null +++ b/packages/vue-query/src/__tests__/useMutationState.test.ts @@ -0,0 +1,80 @@ +import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' +import { ref } from 'vue-demi' +import { sleep } from '@tanstack/query-test-utils' +import { useMutation } from '../useMutation' +import { useMutationState } from '../useMutationState' +import { useQueryClient } from '../useQueryClient' + +vi.mock('../useQueryClient') + +describe('useMutationState', () => { + beforeEach(() => { + vi.useFakeTimers() + }) + + afterEach(() => { + vi.useRealTimers() + }) + + it('should return variables after calling mutate 1', () => { + const mutationKey = ['mutation'] + const variables = 'foo123' + + const { mutate } = useMutation({ + mutationKey: mutationKey, + mutationFn: (params: string) => sleep(0).then(() => params), + }) + + mutate(variables) + + const mutationState = useMutationState({ + filters: { mutationKey, status: 'pending' }, + select: (mutation) => mutation.state.variables, + }) + + expect(mutationState.value).toEqual([variables]) + }) + + it('should return variables after calling mutate 2', () => { + const queryClient = useQueryClient() + queryClient.clear() + const mutationKey = ['mutation'] + const variables = 'bar234' + + const { mutate } = useMutation({ + mutationKey: mutationKey, + mutationFn: (params: string) => sleep(0).then(() => params), + }) + + mutate(variables) + + const mutationState = useMutationState() + + expect(mutationState.value[0]?.variables).toEqual(variables) + }) + + it('should work with options getter and be reactive', async () => { + const keyRef = ref('useMutationStateGetter2') + const variables = 'foo123' + + const { mutate } = useMutation({ + mutationKey: ['useMutationStateGetter'], + mutationFn: (params: string) => sleep(10).then(() => params), + }) + + mutate(variables) + + const mutationState = useMutationState(() => ({ + filters: { mutationKey: [keyRef.value], status: 'pending' }, + select: (mutation) => mutation.state.variables, + })) + + expect(mutationState.value).toEqual([]) + + keyRef.value = 'useMutationStateGetter' + + await vi.advanceTimersByTimeAsync(0) + + expect(mutationState.value).toEqual([variables]) + }) +})