MCPcopy Create free account
hub / github.com/TanStack/db / assertKeyedResults

Function assertKeyedResults

packages/db-ivm/tests/test-utils.ts:218–263  ·  view source on GitHub ↗
(
  testName: string,
  actual: KeyedTestResult<K, V>,
  expected: Array<[K, V]>,
  maxExpectedMessages?: number,
)

Source from the content-addressed store, hash-verified

216 * Assert that keyed results match expected, with message count logging
217 */
218export function assertKeyedResults<K, V>(
219 testName: string,
220 actual: KeyedTestResult<K, V>,
221 expected: Array<[K, V]>,
222 maxExpectedMessages?: number,
223) {
224 const expectedSorted = expected.sort((a, b) => {
225 return JSON.stringify(a[0]).localeCompare(JSON.stringify(b[0]))
226 })
227
228 if (LOG_RESULTS) {
229 console.log(
230 `${testName}: ${actual.messageCount} messages, ${actual.sortedResults.length} final results per key`,
231 )
232 console.log(` Messages:`, actual.messages)
233 console.log(` Final results:`, actual.sortedResults)
234 }
235
236 // Check that materialized results match expected
237 expect(actual.sortedResults).toEqual(expectedSorted)
238
239 // Check message count constraints if provided
240 if (maxExpectedMessages !== undefined) {
241 expect(actual.messageCount).toBeLessThanOrEqual(maxExpectedMessages)
242 }
243
244 // Log for debugging - use more reasonable threshold
245 // Account for scenarios where messages cancel out due to object identity
246 // Allow up to 4x the expected count to accommodate remove/add pairs
247 const reasonableThreshold = Math.max(expected.length * 4, 2)
248 if (actual.messageCount > reasonableThreshold) {
249 console.warn(
250 `⚠️ ${testName}: High message count (${actual.messageCount} messages for ${expected.length} expected key-value pairs)`,
251 )
252 }
253
254 // Log key insights
255 const affectedKeys = new Set(
256 actual.messages.map(([[key, _value], _mult]) => key),
257 )
258 if (LOG_RESULTS) {
259 console.log(
260 `${testName}: ✅ ${affectedKeys.size} keys affected, ${actual.sortedResults.length} final keys`,
261 )
262 }
263}
264
265/**
266 * Extract unique keys from messages to verify incremental behavior

Callers 4

testJoinFunction · 0.85
testCountFunction · 0.85
testJoinFunction · 0.85
reduce.test.tsFile · 0.85

Calls 2

expectFunction · 0.90
mapMethod · 0.45

Tested by 3

testJoinFunction · 0.68
testCountFunction · 0.68
testJoinFunction · 0.68