import { describe, expect, it } from "vitest"; import { readLiarRecords } from "#lib/migration/liar.ts"; import { buildRepoCar } from "#lib/migration/repoCar.ts"; const streamOf = (bytes: Uint8Array) => new Blob([bytes as BlobPart]).stream() as ReadableStream; const did = "did:plc:alice"; const star = { $type: "org.tangled.feed.star", createdAt: "2026-01-01T00:00:00.000Z" }; describe("readLiarRecords", () => { it("keeps org.tangled records and drops everything else", async () => { const car = await buildRepoCar(did, [ { collection: "org.tangled.feed.star", rkey: "3aaaaaaaaaaaa", value: star }, { collection: "org.tangled.actor.profile", rkey: "self", value: { $type: "org.tangled.actor.profile", description: "hi" } }, { collection: "app.bsky.feed.post", rkey: "3bbbbbbbbbbbb", value: { $type: "app.bsky.feed.post", text: "x", createdAt: star.createdAt } } ]); const records = await readLiarRecords(streamOf(car)); expect(records.map((r) => `${r.collection}/${r.rkey}`).sort()).toEqual([ "org.tangled.actor.profile/self", "org.tangled.feed.star/3aaaaaaaaaaaa" ]); expect(records.find((r) => r.rkey === "self")?.value).toEqual({ $type: "org.tangled.actor.profile", description: "hi" }); }); it("reads every record when two of them are identical and share a block", async () => { const car = await buildRepoCar( did, [ { collection: "org.tangled.feed.star", rkey: "3aaaaaaaaaaaa", value: star }, { collection: "org.tangled.feed.star", rkey: "3bbbbbbbbbbbb", value: star } ], { recordBlocksFirst: true } ); const records = await readLiarRecords(streamOf(car)); expect(records.map((r) => r.rkey).sort()).toEqual(["3aaaaaaaaaaaa", "3bbbbbbbbbbbb"]); }); });