Fixes: 1. media.ts: wrap placeholder generation in try-catch 2. toolbar.ts: check r.ok, display error message in popover
44 lines
1.5 KiB
TypeScript
44 lines
1.5 KiB
TypeScript
import { describe, it, expect } from "vitest";
|
|
|
|
import { atprotoPlugin } from "../src/index.js";
|
|
|
|
describe("atprotoPlugin descriptor", () => {
|
|
it("returns a valid PluginDescriptor", () => {
|
|
const descriptor = atprotoPlugin();
|
|
expect(descriptor.id).toBe("atproto");
|
|
expect(descriptor.version).toBe("0.1.0");
|
|
expect(descriptor.entrypoint).toBe("@emdash-cms/plugin-atproto/sandbox");
|
|
expect(descriptor.adminPages).toHaveLength(1);
|
|
expect(descriptor.adminWidgets).toHaveLength(1);
|
|
});
|
|
|
|
it("uses standard format", () => {
|
|
const descriptor = atprotoPlugin();
|
|
expect(descriptor.format).toBe("standard");
|
|
});
|
|
|
|
it("declares required capabilities", () => {
|
|
const descriptor = atprotoPlugin();
|
|
expect(descriptor.capabilities).toContain("read:content");
|
|
expect(descriptor.capabilities).toContain("network:fetch:any");
|
|
});
|
|
|
|
it("declares the storage used by the sandbox implementation", () => {
|
|
const descriptor = atprotoPlugin();
|
|
expect(descriptor.storage).toHaveProperty("records");
|
|
expect(descriptor.storage!.records!.indexes).toContain("contentId");
|
|
expect(descriptor.storage!.records!.indexes).toContain("status");
|
|
expect(descriptor.storage!.records!.indexes).toContain("lastSyncedAt");
|
|
});
|
|
|
|
it("exposes an admin status page and widget", () => {
|
|
const descriptor = atprotoPlugin();
|
|
expect(descriptor.adminPages).toEqual([
|
|
{ path: "/status", label: "AT Protocol", icon: "globe" },
|
|
]);
|
|
expect(descriptor.adminWidgets).toEqual([
|
|
{ id: "sync-status", title: "AT Protocol", size: "third" },
|
|
]);
|
|
});
|
|
});
|