UNPKG

@arkiv-network/sdk

Version:

TypeScript client library for Arkiv's blockchains interactions

46 lines (37 loc) • 1.52 kB
import { afterEach, beforeEach, describe, expect, spyOn, test } from "bun:test" import { getLogger } from "./logger" describe("getLogger", () => { const originalDebug = process.env.DEBUG let log: ReturnType<typeof spyOn<Console, "log">> beforeEach(() => { log = spyOn(console, "log").mockImplementation(() => {}) }) afterEach(() => { log.mockRestore() if (originalDebug === undefined) delete process.env.DEBUG else process.env.DEBUG = originalDebug }) /** Which of `scopes` log anything under `debug`. */ function enabledScopes(debug: string, scopes: string[]): string[] { process.env.DEBUG = debug return scopes.filter((scope) => { log.mockClear() getLogger(scope)("hello") return log.mock.calls.length > 0 }) } test("logs only the namespaces a pattern names", () => { expect(enabledScopes("arkiv:a", ["a", "b"])).toEqual(["a"]) }) test("a wildcard enables every namespace under its prefix", () => { expect(enabledScopes("arkiv:*", ["a", "b"])).toEqual(["a", "b"]) expect(enabledScopes("arkiv:a:*", ["a:x", "a:y", "b:x"])).toEqual(["a:x", "a:y"]) }) test("a -pattern excludes what it matches and leaves the rest enabled", () => { expect(enabledScopes("arkiv:*,-arkiv:a", ["a", "b", "c"])).toEqual(["b", "c"]) expect(enabledScopes("arkiv:* -arkiv:a:*", ["a:x", "a:y", "b:x"])).toEqual(["b:x"]) }) test("an exclusion alone enables nothing", () => { expect(enabledScopes("-arkiv:a", ["a", "b"])).toEqual([]) }) })