Skip to content

test(svelte-query/{queryOptions,infiniteQueryOptions}): add 'eslint-disable' for 'vitest/expect-expect' #9496

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

Draft
wants to merge 2 commits into
base: main
Choose a base branch
from

Conversation

sukvvon
Copy link
Contributor

@sukvvon sukvvon commented Jul 25, 2025

No description provided.

Copy link

nx-cloud bot commented Jul 25, 2025

View your CI Pipeline Execution ↗ for commit a8cd517

Command Status Duration Result
nx affected --targets=test:sherif,test:knip,tes... ✅ Succeeded 48s View ↗
nx run-many --target=build --exclude=examples/*... ✅ Succeeded 2s View ↗

☁️ Nx Cloud last updated this comment at 2025-08-01 15:43:38 UTC

Copy link

pkg-pr-new bot commented Jul 25, 2025

More templates

@tanstack/angular-query-devtools-experimental

npm i https://pkg.pr.new/@tanstack/angular-query-devtools-experimental@9496

@tanstack/angular-query-experimental

npm i https://pkg.pr.new/@tanstack/angular-query-experimental@9496

@tanstack/eslint-plugin-query

npm i https://pkg.pr.new/@tanstack/eslint-plugin-query@9496

@tanstack/query-async-storage-persister

npm i https://pkg.pr.new/@tanstack/query-async-storage-persister@9496

@tanstack/query-broadcast-client-experimental

npm i https://pkg.pr.new/@tanstack/query-broadcast-client-experimental@9496

@tanstack/query-core

npm i https://pkg.pr.new/@tanstack/query-core@9496

@tanstack/query-devtools

npm i https://pkg.pr.new/@tanstack/query-devtools@9496

@tanstack/query-persist-client-core

npm i https://pkg.pr.new/@tanstack/query-persist-client-core@9496

@tanstack/query-sync-storage-persister

npm i https://pkg.pr.new/@tanstack/query-sync-storage-persister@9496

@tanstack/react-query

npm i https://pkg.pr.new/@tanstack/react-query@9496

@tanstack/react-query-devtools

npm i https://pkg.pr.new/@tanstack/react-query-devtools@9496

@tanstack/react-query-next-experimental

npm i https://pkg.pr.new/@tanstack/react-query-next-experimental@9496

@tanstack/react-query-persist-client

npm i https://pkg.pr.new/@tanstack/react-query-persist-client@9496

@tanstack/solid-query

npm i https://pkg.pr.new/@tanstack/solid-query@9496

@tanstack/solid-query-devtools

npm i https://pkg.pr.new/@tanstack/solid-query-devtools@9496

@tanstack/solid-query-persist-client

npm i https://pkg.pr.new/@tanstack/solid-query-persist-client@9496

@tanstack/svelte-query

npm i https://pkg.pr.new/@tanstack/svelte-query@9496

@tanstack/svelte-query-devtools

npm i https://pkg.pr.new/@tanstack/svelte-query-devtools@9496

@tanstack/svelte-query-persist-client

npm i https://pkg.pr.new/@tanstack/svelte-query-persist-client@9496

@tanstack/vue-query

npm i https://pkg.pr.new/@tanstack/vue-query@9496

@tanstack/vue-query-devtools

npm i https://pkg.pr.new/@tanstack/vue-query-devtools@9496

commit: a8cd517

Copy link

codecov bot commented Jul 25, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 89.20%. Comparing base (025f080) to head (a8cd517).
⚠️ Report is 2 commits behind head on main.

Additional details and impacted files

Impacted file tree graph

@@             Coverage Diff             @@
##             main    #9496       +/-   ##
===========================================
+ Coverage   45.11%   89.20%   +44.09%     
===========================================
  Files         208       18      -190     
  Lines        8319      176     -8143     
  Branches     1879       31     -1848     
===========================================
- Hits         3753      157     -3596     
+ Misses       4119       18     -4101     
+ Partials      447        1      -446     
Components Coverage Δ
@tanstack/angular-query-devtools-experimental ∅ <ø> (∅)
@tanstack/angular-query-experimental ∅ <ø> (∅)
@tanstack/eslint-plugin-query ∅ <ø> (∅)
@tanstack/query-async-storage-persister ∅ <ø> (∅)
@tanstack/query-broadcast-client-experimental ∅ <ø> (∅)
@tanstack/query-codemods ∅ <ø> (∅)
@tanstack/query-core ∅ <ø> (∅)
@tanstack/query-devtools ∅ <ø> (∅)
@tanstack/query-persist-client-core ∅ <ø> (∅)
@tanstack/query-sync-storage-persister ∅ <ø> (∅)
@tanstack/query-test-utils ∅ <ø> (∅)
@tanstack/react-query ∅ <ø> (∅)
@tanstack/react-query-devtools ∅ <ø> (∅)
@tanstack/react-query-next-experimental ∅ <ø> (∅)
@tanstack/react-query-persist-client ∅ <ø> (∅)
@tanstack/solid-query ∅ <ø> (∅)
@tanstack/solid-query-devtools ∅ <ø> (∅)
@tanstack/solid-query-persist-client ∅ <ø> (∅)
@tanstack/svelte-query 87.58% <ø> (ø)
@tanstack/svelte-query-devtools ∅ <ø> (∅)
@tanstack/svelte-query-persist-client 100.00% <ø> (ø)
@tanstack/vue-query ∅ <ø> (∅)
@tanstack/vue-query-devtools ∅ <ø> (∅)
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@@ -5,6 +5,7 @@ import { createInfiniteQuery, infiniteQueryOptions } from '../../src/index.js'
import type { InfiniteData } from '@tanstack/query-core'

describe('queryOptions', () => {
// eslint-disable-next-line vitest/expect-expect
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

assertType of vitest could be better for this case
Could you check that?

Copy link
Contributor Author

@sukvvon sukvvon Jul 26, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@manudeli

  test('Should not allow excess properties', () => {
    const options = infiniteQueryOptions({
      queryKey: ['key'],
      queryFn: () => Promise.resolve('data'),
      getNextPageParam: () => 1,
      initialPageParam: 1,
      // @ts-expect-error this is a good error, because stallTime does not exist!
      stallTime: 1000,
    })

    expectTypeOf(options).toEqualTypeOf<
      CreateInfiniteQueryOptions<
        string,
        Error,
        InfiniteData<string, unknown>,
        Array<string>,
        number
      >
    >()
  })

How about this?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@mmkal (expect-type member) @sheremet-va @antfu (vitest member)

I used to think assertType in vitest was the best way to type test for cases like this, but I'm not entirely sure now. What is the best way to handle vitest/expect-expect when testing for these ts-expect-errors with vitest eslint? Could you share your thoughts?

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You could do something like

expectTypeOf(infiniteQueryOptions).toBeCallableWith({
  queryKey: ['foo'],
  ...
})

Which I believe vitest/expect-expect will allow, and it's pretty clear what the purpose of the test is that way too.

If that's still a linter error, I believe the expect-expect rule can be configured to allow expectTypeOf - although this would be worth allowing by default in vitest since it's built-in.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for sharing your thought! I will try it❤️

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@mmkal I tried toBeCallable but it seems like expectTypeOf().toBeCallableWith isn't always doing what I'd expect compared to just calling the function directly 🥲
Could this be a bug in expect-type, or is it just a TypeScript limitation?

Aug-02-2025.01-20-16.mp4

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah, yes, it's using extends so won't do the excess property check - and yes that's a typescript limitation that probably can't be worked around in expect-type.

You can still have the test for the excess property if you go more explicit:

expectTypeOf(infiniteQueryOptions).toBeCallableWith({ 
  queryKey: ['key'],
  queryFn: () => Promise.resolve('data'),
  getNextPageParam: () => 1,
  initialPageParam: 1,
})
expectTypeOf(infiniteQueryOptions).parameter(0).not.toHaveProperty('stallTime')

That second assertion does what you're looking for - if the function parameter allowed [key: string]: unknown it would fail. But understandable if you don't want to go so all-in on expect-type in this change.

@sukvvon sukvvon marked this pull request as draft July 26, 2025 06:48
…Options-add-eslint-disable-vitest-expect-expect
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants