From bcecdf59348eba822be475d60f5d6f1b23ec9379 Mon Sep 17 00:00:00 2001 From: Kyle Mathews Date: Wed, 16 Sep 2026 17:33:12 -0600 Subject: [PATCH 1/2] test(db): cover independent observer revisions --- packages/db/tests/live-query-observer.test.ts | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/packages/db/tests/live-query-observer.test.ts b/packages/db/tests/live-query-observer.test.ts index fe74985f77..f8e1714488 100644 --- a/packages/db/tests/live-query-observer.test.ts +++ b/packages/db/tests/live-query-observer.test.ts @@ -608,6 +608,51 @@ describe(`createLiveQueryObserver`, () => { observer.dispose() }) + it(`separates value publications from layout revisions`, async () => { + const source = makeSource() + const observer = createLiveQueryObserver(source as any, { + mode: `wholesale`, + }) + let notifications = 0 + const unsubscribe = observer.subscribe(() => notifications++) + + try { + const before = observer.getSnapshot() + source.utils.begin() + source.utils.write({ + type: `update`, + value: { id: `1`, name: `Updated` }, + }) + source.utils.commit() + const afterValue = observer.getSnapshot() + + expect(notifications).toBe(1) + expect(afterValue).not.toBe(before) + expect(afterValue.layoutRevision).toBe(before.layoutRevision) + expect(afterValue.state?.get(`1`)?.name).toBe(`Updated`) + expect(before.state?.get(`1`)?.name).toBe(`A`) + + source.utils.begin() + source.utils.write({ type: `delete`, value: SEED[1]! }) + source.utils.write({ + type: `insert`, + value: { id: `3`, name: `C` }, + }) + source.utils.commit() + const afterLayout = observer.getSnapshot() + + expect(notifications).toBe(2) + expect(afterLayout.layoutRevision).toBeGreaterThan( + afterValue.layoutRevision, + ) + expect([...afterLayout.state!.keys()]).toEqual([`1`, `3`]) + } finally { + unsubscribe() + observer.dispose() + await source.cleanup() + } + }) + it(`delivers initial state then change deltas to subscribers (granular path)`, () => { const source = makeSource() const observer = createLiveQueryObserver(source as any) From 4d9d6032831a10d319b57a82e6a124d8973acd5b Mon Sep 17 00:00:00 2001 From: Kyle Mathews Date: Wed, 16 Sep 2026 17:41:46 -0600 Subject: [PATCH 2/2] test(db): preserve prior observer snapshots --- packages/db/tests/live-query-observer.test.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/db/tests/live-query-observer.test.ts b/packages/db/tests/live-query-observer.test.ts index f8e1714488..aa9a384f81 100644 --- a/packages/db/tests/live-query-observer.test.ts +++ b/packages/db/tests/live-query-observer.test.ts @@ -646,6 +646,7 @@ describe(`createLiveQueryObserver`, () => { afterValue.layoutRevision, ) expect([...afterLayout.state!.keys()]).toEqual([`1`, `3`]) + expect([...afterValue.state!.keys()]).toEqual([`1`, `2`]) } finally { unsubscribe() observer.dispose()