UNPKG

@pagopa/dx-cli

Version:

A CLI useful to manage DX tools.

60 lines (59 loc) 2.29 kB
import { ok } from "neverthrow"; import { describe, expect, it, vi } from "vitest"; import { LocalCodemodRegistry } from "../registry.js"; describe("LocalCodemodRegistry", () => { const makeCodemod = (id, description = id) => ({ apply: vi.fn().mockResolvedValue(undefined), description, id, }); it("returns empty list when no codemods are registered", async () => { const registry = new LocalCodemodRegistry(); const result = await registry.getAll(); expect(result).toStrictEqual(ok([])); }); it("adds codemods and lists them via getAll", async () => { const registry = new LocalCodemodRegistry(); const a = makeCodemod("a", "A"); const b = makeCodemod("b", "B"); registry.add(a); registry.add(b); const result = await registry.getAll(); expect(result.isOk()).toBe(true); if (result.isOk()) { expect(result.value).toHaveLength(2); expect(result.value).toEqual(expect.arrayContaining([ expect.objectContaining({ id: "a" }), expect.objectContaining({ id: "b" }), ])); } }); it("retrieves a codemod by id and returns undefined when missing", async () => { const registry = new LocalCodemodRegistry(); const a = makeCodemod("a", "A"); registry.add(a); const found = await registry.getById("a"); expect(found.isOk()).toBe(true); if (found.isOk()) { expect(found.value).toBe(a); } const missing = await registry.getById("nope"); expect(missing.isOk()).toBe(true); if (missing.isOk()) { expect(missing.value).toBeUndefined(); } }); it("overwrites an existing codemod when adding with the same id", async () => { const registry = new LocalCodemodRegistry(); const first = makeCodemod("a", "first"); const second = makeCodemod("a", "second"); registry.add(first); registry.add(second); const byId = await registry.getById("a"); expect(byId.isOk()).toBe(true); if (byId.isOk()) { expect(byId.value).toBe(second); expect(byId.value).not.toBe(first); } }); });