chore: add tests
This commit is contained in:
53
src/modules/atproto/getUrl.spec.ts
Normal file
53
src/modules/atproto/getUrl.spec.ts
Normal file
@@ -0,0 +1,53 @@
|
||||
import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"
|
||||
|
||||
vi.mock("@/modules/atproto/getAuthor", () => ({
|
||||
getAuthor: vi.fn()
|
||||
}))
|
||||
|
||||
import { getAuthor } from "@/modules/atproto/getAuthor"
|
||||
|
||||
import { getUrl } from "./getUrl"
|
||||
|
||||
describe("getUrl", () => {
|
||||
beforeEach(() => {
|
||||
vi.mocked(getAuthor).mockReset()
|
||||
})
|
||||
|
||||
afterEach(() => {
|
||||
vi.restoreAllMocks()
|
||||
})
|
||||
|
||||
it("returns null when the author cannot be resolved", async () => {
|
||||
vi.mocked(getAuthor).mockResolvedValue(null)
|
||||
expect(
|
||||
await getUrl({ did: "did:plc:abc", rkey: "r1" })
|
||||
).toBeNull()
|
||||
})
|
||||
|
||||
it("builds a getRecord URL with the right query params on the author's PDS", async () => {
|
||||
vi.mocked(getAuthor).mockResolvedValue({
|
||||
handle: "alice.bsky.social",
|
||||
pds: "https://pds.example.com"
|
||||
})
|
||||
|
||||
const url = await getUrl({ did: "did:plc:abc", rkey: "rkey1" })
|
||||
const parsed = new URL(url as string)
|
||||
|
||||
expect(parsed.origin).toBe("https://pds.example.com")
|
||||
expect(parsed.pathname).toBe("/xrpc/com.atproto.repo.getRecord")
|
||||
expect(parsed.searchParams.get("repo")).toBe("did:plc:abc")
|
||||
expect(parsed.searchParams.get("collection")).toBe("space.remanso.note")
|
||||
expect(parsed.searchParams.get("rkey")).toBe("rkey1")
|
||||
})
|
||||
|
||||
it("passes the did to getAuthor", async () => {
|
||||
vi.mocked(getAuthor).mockResolvedValue({
|
||||
handle: "h",
|
||||
pds: "https://pds.example.com"
|
||||
})
|
||||
|
||||
await getUrl({ did: "did:web:example.com", rkey: "r2" })
|
||||
|
||||
expect(getAuthor).toHaveBeenCalledWith("did:web:example.com")
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user