MCPcopy Index your code
hub / github.com/TanStack/db / createSubqueryTests

Function createSubqueryTests

packages/db/tests/query/subquery.test.ts:77–283  ·  view source on GitHub ↗
(autoIndex: `off` | `eager`)

Source from the content-addressed store, hash-verified

75}
76
77function createSubqueryTests(autoIndex: `off` | `eager`): void {
78 describe(`with autoIndex ${autoIndex}`, () => {
79 describe(`basic subqueries in FROM clause`, () => {
80 let issuesCollection: ReturnType<typeof createIssuesCollection>
81
82 beforeEach(() => {
83 issuesCollection = createIssuesCollection(autoIndex)
84 })
85
86 test(`should create live query with simple subquery in FROM clause`, () => {
87 const liveCollection = createLiveQueryCollection({
88 startSync: true,
89 query: (q) => {
90 const projectIssues = q
91 .from({ issue: issuesCollection })
92 .where(({ issue }) => eq(issue.projectId, 1))
93
94 return q
95 .from({ filteredIssue: projectIssues })
96 .select(({ filteredIssue }) => ({
97 id: filteredIssue.id,
98 title: filteredIssue.title,
99 status: filteredIssue.status,
100 }))
101 },
102 })
103
104 const results = liveCollection.toArray
105 expect(results).toHaveLength(4) // Issues 1, 2, 3, 5 are from project 1
106
107 expect(results.map((r) => r.id).sort()).toEqual([1, 2, 3, 5])
108 expect(results.map((r) => r.title)).toEqual(
109 expect.arrayContaining([`Bug 1`, `Bug 2`, `Feature 1`, `Feature 2`]),
110 )
111 })
112
113 test(`should create live query with subquery using query function syntax`, async () => {
114 const liveCollection = createLiveQueryCollection((q) => {
115 const openIssues = q
116 .from({ issue: issuesCollection })
117 .where(({ issue }) => eq(issue.status, `open`))
118
119 return q.from({ openIssue: openIssues }).select(({ openIssue }) => ({
120 id: openIssue.id,
121 title: openIssue.title,
122 projectId: openIssue.projectId,
123 }))
124 })
125 await liveCollection.preload()
126
127 const results = liveCollection.toArray
128 expect(results).toHaveLength(2) // Issues 1 and 4 are open
129
130 expect(results.map((r) => r.id).sort()).toEqual([1, 4])
131 expect(
132 results.every(
133 (r) => sampleIssues.find((i) => i.id === r.id)?.status === `open`,
134 ),

Callers 1

subquery.test.tsFile · 0.85

Calls 14

beforeEachFunction · 0.90
expectFunction · 0.90
whereMethod · 0.80
fromMethod · 0.80
selectMethod · 0.80
createIssuesCollectionFunction · 0.70
eqFunction · 0.70
gtFunction · 0.70
stripVirtualPropsFunction · 0.50
mapMethod · 0.45
preloadMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…