Skip to content

test(solid-query/useQuery): add test for string 'reconcile' option maintaining referential equality#10169

Open
sukvvon wants to merge 2 commits intoTanStack:mainfrom
sukvvon:test/solid-query-useBaseQuery-string-reconcile
Open

test(solid-query/useQuery): add test for string 'reconcile' option maintaining referential equality#10169
sukvvon wants to merge 2 commits intoTanStack:mainfrom
sukvvon:test/solid-query-useBaseQuery-string-reconcile

Conversation

@sukvvon
Copy link
Contributor

@sukvvon sukvvon commented Feb 22, 2026

🎯 Changes

Add a test to cover the string reconcile option path in reconcileFn (useBaseQuery.ts, lines 41-59).

The test verifies that when reconcile: 'id' is used:

  • After refetch with changed data (id: '2' done: falsetrue), Solid's reconcile updates items in-place
  • The array reference stays the same, so createEffect is not triggered again (states stays at length 1)

The existing test (should share equal data structures between query results) covers the function callback path (reconcile: (oldData, newData) => ..., lines 37-39), but the string key path (lines 41-59) was previously uncovered.

✅ Checklist

  • I have followed the steps in the Contributing guide.
  • I have tested this code locally with pnpm run test:pr.

🚀 Release Impact

  • This change affects published code, and I have generated a changeset.
  • This change is docs/CI/dev-only (no release).

Summary by CodeRabbit

  • Tests
    • Added validation tests for data reconciliation behavior to ensure data references remain stable during updates and re-fetches do not cause unnecessary re-renders.

@changeset-bot
Copy link

changeset-bot bot commented Feb 22, 2026

⚠️ No Changeset found

Latest commit: 0b0f835

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Feb 22, 2026

No actionable comments were generated in the recent review. 🎉


📝 Walkthrough

Walkthrough

Two test cases are added to validate that when the reconcile option is a string key, data returned by useQuery remains referentially equal across in-place updates and that re-fetching does not trigger additional renders due to reconciliation.

Changes

Cohort / File(s) Summary
Reconciliation Test Cases
packages/solid-query/src/__tests__/useQuery.test.tsx
Added tests validating referential equality of data with string key reconciliation and verifying that refetch operations do not trigger unnecessary re-renders when reconciliation is applied.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Poem

🐰 Hopping through the tests with glee,
Reconciliation's now fancy-free,
Same references, no extra renders,
Data integrity's best contenders!

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and specifically describes the main change: adding a test for the string 'reconcile' option that maintains referential equality, which directly aligns with the primary objective of the PR.
Description check ✅ Passed The description follows the template structure, includes all required sections (Changes, Checklist with both items checked, Release Impact), and provides clear context about what the test covers and why it was needed.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
  • 📝 Generate docstrings (stacked PR)
  • 📝 Generate docstrings (commit on current branch)
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

Comment @coderabbitai help to get the list of available commands and usage tips.

@nx-cloud
Copy link

nx-cloud bot commented Feb 22, 2026

View your CI Pipeline Execution ↗ for commit 0b0f835

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

☁️ Nx Cloud last updated this comment at 2026-02-22 16:55:45 UTC

@pkg-pr-new
Copy link

pkg-pr-new bot commented Feb 22, 2026

More templates

@tanstack/angular-query-experimental

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

@tanstack/eslint-plugin-query

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

@tanstack/preact-query

npm i https://pkg.pr.new/@tanstack/preact-query@10169

@tanstack/query-async-storage-persister

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

@tanstack/query-broadcast-client-experimental

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

@tanstack/query-core

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

@tanstack/query-devtools

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

@tanstack/query-persist-client-core

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

@tanstack/query-sync-storage-persister

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

@tanstack/react-query

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

@tanstack/react-query-devtools

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

@tanstack/react-query-next-experimental

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

@tanstack/react-query-persist-client

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

@tanstack/solid-query

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

@tanstack/solid-query-devtools

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

@tanstack/solid-query-persist-client

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

@tanstack/svelte-query

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

@tanstack/svelte-query-devtools

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

@tanstack/svelte-query-persist-client

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

@tanstack/vue-query

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

@tanstack/vue-query-devtools

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

commit: 0b0f835

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.

1 participant