Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
106 changes: 53 additions & 53 deletions packages/vue-query/src/__tests__/mutationOptions.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,19 @@ describe('mutationOptions', () => {
expect(mutationOptions(getter)).toBe(getter)
})

it('should work when used with useMutation (getter without mutationKey in mutationOptions)', async () => {
const mutationOpts = mutationOptions(() => ({
mutationFn: () => sleep(10).then(() => 'data'),
}))

const { mutate, data } = useMutation(mutationOpts)

mutate()
await vi.advanceTimersByTimeAsync(10)

expect(data.value).toEqual('data')
})

it('should return the number of fetching mutations when used with useIsMutating (with mutationKey in mutationOptions)', async () => {
const isMutatingArray: Array<number> = []
const mutationOpts = mutationOptions({
Expand Down Expand Up @@ -149,6 +162,27 @@ describe('mutationOptions', () => {
expect(isMutatingArray).toEqual([0, 1, 0])
})

it('should return the number of fetching mutations when used with useIsMutating (getter with mutationKey in mutationOptions)', async () => {
const keyRef = ref('isMutatingGetter')
const mutationOpts = mutationOptions(() => ({
mutationKey: [keyRef.value],
mutationFn: () => sleep(10).then(() => 'data'),
}))

const { mutate } = useMutation(mutationOpts)
mutate()

const isMutating = useIsMutating({
mutationKey: [keyRef.value],
})

await vi.advanceTimersByTimeAsync(0)
expect(isMutating.value).toEqual(1)

await vi.advanceTimersByTimeAsync(10)
expect(isMutating.value).toEqual(0)
})

it('should return the number of fetching mutations when used with useIsMutating (getter without mutationKey in mutationOptions)', async () => {
const isMutatingArray: Array<number> = []
const mutationOpts = mutationOptions(() => ({
Expand Down Expand Up @@ -564,6 +598,25 @@ describe('mutationOptions', () => {
expect(states.value).toEqual(['data1'])
})

it('should return mutation states when used with useMutationState (getter with mutationKey in mutationOptions)', async () => {
const keyRef = ref('useMutationStateGetter')
const mutationOpts = mutationOptions(() => ({
mutationKey: [keyRef.value],
mutationFn: (params: string) => sleep(10).then(() => params),
}))

const { mutate } = useMutation(mutationOpts)
mutate('foo')

const states = useMutationState({
filters: { mutationKey: [keyRef.value], status: 'pending' },
select: (mutation) => mutation.state.variables,
})

await vi.advanceTimersByTimeAsync(0)
expect(states.value).toEqual(['foo'])
})

it('should return mutation states when used with useMutationState (getter without mutationKey in mutationOptions)', async () => {
const mutationOpts = mutationOptions(() => ({
mutationFn: () => sleep(10).then(() => 'data'),
Expand Down Expand Up @@ -632,59 +685,6 @@ describe('mutationOptions', () => {
expect(states.value).toEqual(['data1'])
})

it('should work with getter passed to mutationOptions when used with useIsMutating', async () => {
const keyRef = ref('isMutatingGetter')
const mutationOpts = mutationOptions(() => ({
mutationKey: [keyRef.value],
mutationFn: () => sleep(10).then(() => 'data'),
}))

const { mutate } = useMutation(mutationOpts)
mutate()

const isMutating = useIsMutating({
mutationKey: [keyRef.value],
})

await vi.advanceTimersByTimeAsync(0)
expect(isMutating.value).toEqual(1)

await vi.advanceTimersByTimeAsync(10)
expect(isMutating.value).toEqual(0)
})

it('should work with getter passed to mutationOptions when used with useMutationState', async () => {
const keyRef = ref('useMutationStateGetter')
const mutationOpts = mutationOptions(() => ({
mutationKey: [keyRef.value],
mutationFn: (params: string) => sleep(10).then(() => params),
}))

const { mutate } = useMutation(mutationOpts)
mutate('foo')

const states = useMutationState({
filters: { mutationKey: [keyRef.value], status: 'pending' },
select: (mutation) => mutation.state.variables,
})

await vi.advanceTimersByTimeAsync(0)
expect(states.value).toEqual(['foo'])
})

it('should work with getter passed to mutationOptions without mutationKey', async () => {
const mutationOpts = mutationOptions(() => ({
mutationFn: () => sleep(10).then(() => 'data'),
}))

const { mutate, data } = useMutation(mutationOpts)

mutate()
await vi.advanceTimersByTimeAsync(10)

expect(data.value).toEqual('data')
})

it('should return data in a shallow ref when shallow is true', async () => {
const mutationOpts = mutationOptions({
mutationKey: ['key'],
Expand Down
Loading