Skip to content

ci(*): update vitest/expect-expect rule as error #9111

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
Merged
Show file tree
Hide file tree
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
12 changes: 1 addition & 11 deletions packages/solid-query-devtools/eslint.config.js
Original file line number Diff line number Diff line change
@@ -1,15 +1,5 @@
// @ts-check

import vitest from '@vitest/eslint-plugin'
import rootConfig from './root.eslint.config.js'

export default [
...rootConfig,
{
plugins: { vitest },
rules: {
...vitest.configs.recommended.rules,
'vitest/expect-expect': 'warn',
},
},
]
export default [...rootConfig]
12 changes: 1 addition & 11 deletions packages/solid-query-persist-client/eslint.config.js
Original file line number Diff line number Diff line change
@@ -1,15 +1,5 @@
// @ts-check

import vitest from '@vitest/eslint-plugin'
import rootConfig from './root.eslint.config.js'

export default [
...rootConfig,
{
plugins: { vitest },
rules: {
...vitest.configs.recommended.rules,
'vitest/expect-expect': 'warn',
},
},
]
export default [...rootConfig]
12 changes: 1 addition & 11 deletions packages/solid-query/eslint.config.js
Original file line number Diff line number Diff line change
@@ -1,15 +1,5 @@
// @ts-check

import vitest from '@vitest/eslint-plugin'
import rootConfig from './root.eslint.config.js'

export default [
...rootConfig,
{
plugins: { vitest },
rules: {
...vitest.configs.recommended.rules,
'vitest/expect-expect': 'warn',
},
},
]
export default [...rootConfig]
16 changes: 9 additions & 7 deletions packages/solid-query/src/__tests__/queryOptions.test-d.tsx
Original file line number Diff line number Diff line change
@@ -1,16 +1,18 @@
import { describe, expectTypeOf, it } from 'vitest'
import { assertType, describe, expectTypeOf, it } from 'vitest'
import { QueryClient, dataTagSymbol, skipToken } from '@tanstack/query-core'
import { useQuery } from '../useQuery'
import { queryOptions } from '../queryOptions'

describe('queryOptions', () => {
it('should not allow excess properties', () => {
queryOptions({
queryKey: ['key'],
queryFn: () => Promise.resolve(5),
// @ts-expect-error this is a good error, because stallTime does not exist!
stallTime: 1000,
})
assertType(
queryOptions({
queryKey: ['key'],
queryFn: () => Promise.resolve(5),
// @ts-expect-error this is a good error, because stallTime does not exist!
stallTime: 1000,
}),
)
})
it('should infer types for callbacks', () => {
queryOptions({
Expand Down
146 changes: 107 additions & 39 deletions packages/solid-query/src/__tests__/suspense.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -263,15 +263,21 @@ describe("useQuery's in Suspense mode", () => {
</QueryClientProvider>
))

await waitFor(() => rendered.getByText('Loading...'))
await waitFor(() =>
expect(rendered.getByText('Loading...')).toBeInTheDocument(),
)

await waitFor(() => rendered.getByText('error boundary'))
await waitFor(() =>
expect(rendered.getByText('error boundary')).toBeInTheDocument(),
)

await waitFor(() => rendered.getByText('retry'))
await waitFor(() => expect(rendered.getByText('retry')).toBeInTheDocument())

fireEvent.click(rendered.getByText('retry'))

await waitFor(() => rendered.getByText('rendered'))
await waitFor(() =>
expect(rendered.getByText('rendered')).toBeInTheDocument(),
)
})

it('should retry fetch if the reset error boundary has been reset', async () => {
Expand Down Expand Up @@ -325,15 +331,23 @@ describe("useQuery's in Suspense mode", () => {
</QueryClientProvider>
))

await waitFor(() => rendered.getByText('Loading...'))
await waitFor(() => rendered.getByText('error boundary'))
await waitFor(() => rendered.getByText('retry'))
await waitFor(() =>
expect(rendered.getByText('Loading...')).toBeInTheDocument(),
)
await waitFor(() =>
expect(rendered.getByText('error boundary')).toBeInTheDocument(),
)
await waitFor(() => expect(rendered.getByText('retry')).toBeInTheDocument())
fireEvent.click(rendered.getByText('retry'))
await waitFor(() => rendered.getByText('error boundary'))
await waitFor(() => rendered.getByText('retry'))
await waitFor(() =>
expect(rendered.getByText('error boundary')).toBeInTheDocument(),
)
await waitFor(() => expect(rendered.getByText('retry')).toBeInTheDocument())
succeed = true
fireEvent.click(rendered.getByText('retry'))
await waitFor(() => rendered.getByText('rendered'))
await waitFor(() =>
expect(rendered.getByText('rendered')).toBeInTheDocument(),
)
})

it('should refetch when re-mounting', async () => {
Expand Down Expand Up @@ -383,16 +397,28 @@ describe("useQuery's in Suspense mode", () => {
</QueryClientProvider>
))

await waitFor(() => rendered.getByText('Loading...'))
await waitFor(() => rendered.getByText('data: 1'))
await waitFor(() => rendered.getByText('fetching: false'))
await waitFor(() => rendered.getByText('hide'))
await waitFor(() =>
expect(rendered.getByText('Loading...')).toBeInTheDocument(),
)
await waitFor(() =>
expect(rendered.getByText('data: 1')).toBeInTheDocument(),
)
await waitFor(() =>
expect(rendered.getByText('fetching: false')).toBeInTheDocument(),
)
await waitFor(() => expect(rendered.getByText('hide')).toBeInTheDocument())
fireEvent.click(rendered.getByText('hide'))
await waitFor(() => rendered.getByText('show'))
await waitFor(() => expect(rendered.getByText('show')).toBeInTheDocument())
fireEvent.click(rendered.getByText('show'))
await waitFor(() => rendered.getByText('fetching: true'))
await waitFor(() => rendered.getByText('data: 2'))
await waitFor(() => rendered.getByText('fetching: false'))
await waitFor(() =>
expect(rendered.getByText('fetching: true')).toBeInTheDocument(),
)
await waitFor(() =>
expect(rendered.getByText('data: 2')).toBeInTheDocument(),
)
await waitFor(() =>
expect(rendered.getByText('fetching: false')).toBeInTheDocument(),
)
})

it('should suspend when switching to a new query', async () => {
Expand Down Expand Up @@ -436,11 +462,19 @@ describe("useQuery's in Suspense mode", () => {
</QueryClientProvider>
))

await waitFor(() => rendered.getByText('Loading...'))
await waitFor(() => rendered.getByText(`data: ${key1}`))
await waitFor(() =>
expect(rendered.getByText('Loading...')).toBeInTheDocument(),
)
await waitFor(() =>
expect(rendered.getByText(`data: ${key1}`)).toBeInTheDocument(),
)
fireEvent.click(rendered.getByText('switch'))
await waitFor(() => rendered.getByText('Loading...'))
await waitFor(() => rendered.getByText(`data: ${key2}`))
await waitFor(() =>
expect(rendered.getByText('Loading...')).toBeInTheDocument(),
)
await waitFor(() =>
expect(rendered.getByText(`data: ${key2}`)).toBeInTheDocument(),
)
})

it('should throw errors to the error boundary by default', async () => {
Expand Down Expand Up @@ -491,8 +525,12 @@ describe("useQuery's in Suspense mode", () => {
</QueryClientProvider>
))

await waitFor(() => rendered.getByText('Loading...'))
await waitFor(() => rendered.getByText('error boundary'))
await waitFor(() =>
expect(rendered.getByText('Loading...')).toBeInTheDocument(),
)
await waitFor(() =>
expect(rendered.getByText('error boundary')).toBeInTheDocument(),
)

consoleMock.mockRestore()
})
Expand Down Expand Up @@ -541,8 +579,12 @@ describe("useQuery's in Suspense mode", () => {
</QueryClientProvider>
))

await waitFor(() => rendered.getByText('Loading...'))
await waitFor(() => rendered.getByText('rendered'))
await waitFor(() =>
expect(rendered.getByText('Loading...')).toBeInTheDocument(),
)
await waitFor(() =>
expect(rendered.getByText('rendered')).toBeInTheDocument(),
)
})

it('should throw errors to the error boundary when a throwOnError function returns true', async () => {
Expand Down Expand Up @@ -593,8 +635,12 @@ describe("useQuery's in Suspense mode", () => {
</QueryClientProvider>
))

await waitFor(() => rendered.getByText('Loading...'))
await waitFor(() => rendered.getByText('error boundary'))
await waitFor(() =>
expect(rendered.getByText('Loading...')).toBeInTheDocument(),
)
await waitFor(() =>
expect(rendered.getByText('error boundary')).toBeInTheDocument(),
)

consoleMock.mockRestore()
})
Expand Down Expand Up @@ -645,8 +691,12 @@ describe("useQuery's in Suspense mode", () => {
</QueryClientProvider>
))

await waitFor(() => rendered.getByText('Loading...'))
await waitFor(() => rendered.getByText('rendered'))
await waitFor(() =>
expect(rendered.getByText('Loading...')).toBeInTheDocument(),
)
await waitFor(() =>
expect(rendered.getByText('rendered')).toBeInTheDocument(),
)
})

it('should not call the queryFn when not enabled', async () => {
Expand Down Expand Up @@ -751,16 +801,22 @@ describe("useQuery's in Suspense mode", () => {
))

// render suspense fallback (Loading...)
await waitFor(() => rendered.getByText('Loading...'))
await waitFor(() =>
expect(rendered.getByText('Loading...')).toBeInTheDocument(),
)
// resolve promise -> render Page (rendered)
await waitFor(() => rendered.getByText('rendered'))
await waitFor(() =>
expect(rendered.getByText('rendered')).toBeInTheDocument(),
)

// change query key
succeed = false
// reset query -> and throw error
fireEvent.click(rendered.getByLabelText('fail'))
// render error boundary fallback (error boundary)
await waitFor(() => rendered.getByText('error boundary'))
await waitFor(() =>
expect(rendered.getByText('error boundary')).toBeInTheDocument(),
)

consoleMock.mockRestore()
})
Expand Down Expand Up @@ -815,16 +871,22 @@ describe("useQuery's in Suspense mode", () => {
))

// render suspense fallback (Loading...)
await waitFor(() => rendered.getByText('Loading...'))
await waitFor(() =>
expect(rendered.getByText('Loading...')).toBeInTheDocument(),
)
// resolve promise -> render Page (rendered)
await waitFor(() => rendered.getByText('rendered'))
await waitFor(() =>
expect(rendered.getByText('rendered')).toBeInTheDocument(),
)

// change promise result to error
succeed = false
// change query key
fireEvent.click(rendered.getByLabelText('fail'))
// render error boundary fallback (error boundary)
await waitFor(() => rendered.getByText('error boundary'))
await waitFor(() =>
expect(rendered.getByText('error boundary')).toBeInTheDocument(),
)

consoleMock.mockRestore()
})
Expand Down Expand Up @@ -881,16 +943,22 @@ describe("useQuery's in Suspense mode", () => {
))

// render empty data with 'rendered' when enabled is false
await waitFor(() => rendered.getByText('rendered'))
await waitFor(() =>
expect(rendered.getByText('rendered')).toBeInTheDocument(),
)

// change enabled to true
fireEvent.click(rendered.getByLabelText('fail'))

// render pending fallback
await waitFor(() => rendered.getByText('Loading...'))
await waitFor(() =>
expect(rendered.getByText('Loading...')).toBeInTheDocument(),
)

// render error boundary fallback (error boundary)
await waitFor(() => rendered.getByText('error boundary'))
await waitFor(() =>
expect(rendered.getByText('error boundary')).toBeInTheDocument(),
)

consoleMock.mockRestore()
})
Expand Down
10 changes: 6 additions & 4 deletions packages/solid-query/src/__tests__/transition.test.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { describe, it } from 'vitest'
import { describe, expect, it } from 'vitest'
import { fireEvent, render, waitFor } from '@solidjs/testing-library'
import { Show, Suspense, createSignal, startTransition } from 'solid-js'
import { QueryCache, QueryClientProvider, useQuery } from '..'
Expand Down Expand Up @@ -50,11 +50,13 @@ describe("useQuery's in Suspense mode with transitions", () => {
</QueryClientProvider>
))

await waitFor(() => rendered.getByText('Show'))
await waitFor(() => expect(rendered.getByText('Show')).toBeInTheDocument())
fireEvent.click(rendered.getByLabelText('toggle'))

await waitFor(() => rendered.getByText('Message'))
await waitFor(() =>
expect(rendered.getByText('Message')).toBeInTheDocument(),
)
// verify that the button also updated. See https://github.com/solidjs/solid/issues/1249
await waitFor(() => rendered.getByText('Hide'))
await waitFor(() => expect(rendered.getByText('Hide')).toBeInTheDocument())
})
})
24 changes: 18 additions & 6 deletions packages/solid-query/src/__tests__/useIsFetching.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -46,10 +46,16 @@ describe('useIsFetching', () => {
</QueryClientProvider>
))

await rendered.findByText('isFetching: 0')
await waitFor(() =>
expect(rendered.getByText('isFetching: 0')).toBeInTheDocument(),
)
fireEvent.click(rendered.getByRole('button', { name: /setReady/i }))
await rendered.findByText('isFetching: 1')
await rendered.findByText('isFetching: 0')
await waitFor(() =>
expect(rendered.getByText('isFetching: 1')).toBeInTheDocument(),
)
await waitFor(() =>
expect(rendered.getByText('isFetching: 0')).toBeInTheDocument(),
)
})

it('should not update state while rendering', async () => {
Expand Down Expand Up @@ -215,8 +221,12 @@ describe('useIsFetching', () => {
</QueryClientProvider>
))

await rendered.findByText('isFetching: 1')
await rendered.findByText('isFetching: 0')
await waitFor(() =>
expect(rendered.getByText('isFetching: 1')).toBeInTheDocument(),
)
await waitFor(() =>
expect(rendered.getByText('isFetching: 0')).toBeInTheDocument(),
)
})

it('should use provided custom queryClient', async () => {
Expand Down Expand Up @@ -246,6 +256,8 @@ describe('useIsFetching', () => {

const rendered = render(() => <Page></Page>)

await rendered.findByText('isFetching: 1')
await waitFor(() =>
expect(rendered.getByText('isFetching: 1')).toBeInTheDocument(),
)
})
})
Loading
Loading