-
-
Notifications
You must be signed in to change notification settings - Fork 3.4k
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
base: main
Are you sure you want to change the base?
Conversation
…isable' for 'vitest/expect-expect'
View your CI Pipeline Execution ↗ for commit a8cd517
☁️ Nx Cloud last updated this comment at |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ 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
🚀 New features to boost your workflow:
|
@@ -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 |
There was a problem hiding this comment.
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?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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?
There was a problem hiding this comment.
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?
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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❤️
There was a problem hiding this comment.
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
There was a problem hiding this comment.
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.
…Options-add-eslint-disable-vitest-expect-expect
No description provided.