@follow-app/client-sdk
Version:
TypeScript client SDK for Follow RSS Server API
59 lines (47 loc) • 1.59 kB
text/typescript
import { beforeEach, describe, expect, it, vi } from "vitest"
import type { HttpClient } from "../../client/base"
import { createAPIProxy } from "../../client/proxy"
import { subscriptionsModule } from "."
describe("subscriptions.parseOpml raw body handling", () => {
let mockClient: HttpClient
beforeEach(() => {
mockClient = {
request: vi.fn().mockResolvedValue({ code: 0, data: { ok: true } }),
} as any
})
it("passes ArrayBuffer body through unchanged (requestType=arrayBuffer)", async () => {
const api = createAPIProxy<typeof subscriptionsModule.api>(
mockClient,
subscriptionsModule,
)
const encoder = new TextEncoder()
const { buffer } = encoder.encode("<opml></opml>")
await api.parseOpml(buffer)
expect(mockClient.request).toHaveBeenCalledWith(
"/subscriptions/parse-opml",
expect.objectContaining({
method: "POST",
requestType: "arrayBuffer",
body: buffer,
}),
)
})
it("passes FormData body through unchanged for import (requestType=formData)", async () => {
const api = createAPIProxy<typeof subscriptionsModule.api>(
mockClient,
subscriptionsModule,
)
const form = new FormData()
form.append("file", new Blob(["opml content"]), "subs.opml")
form.append("items", JSON.stringify([]))
await api.import(form)
expect(mockClient.request).toHaveBeenCalledWith(
"/subscriptions/import",
expect.objectContaining({
method: "POST",
requestType: "formData",
body: form,
}),
)
})
})