rc-js-util
Version:
A collection of TS and C++ utilities to help writing performant and correct applications, achieved through strict typing and (removable) invariant checking.
47 lines (42 loc) • 1.7 kB
text/typescript
import { DebugProtectedView } from "./debug-protected-view.js";
import { Test_setDefaultFlags } from "../test-util/test_set-default-flags.js";
describe("=> DebugProtectedView", () =>
{
beforeEach(() =>
{
Test_setDefaultFlags();
});
describe("unwrapProtectedView", () =>
{
describe("=> when valid", () =>
{
it("| returns the original object", () =>
{
const protectedView = new DebugProtectedView("");
const thingToBeProtected = { foo: true };
const protectedThing = protectedView.createProtectedView(thingToBeProtected);
expect(protectedThing).not.toBe(thingToBeProtected);
expect(DebugProtectedView.unwrapProtectedView(protectedThing)).toBe(thingToBeProtected);
});
});
describe("=> when the view has been invalidated", () =>
{
it("| it errors", () =>
{
const protectedView = new DebugProtectedView("meep meep");
const thingToBeProtected = { foo: true };
const protectedThing = protectedView.createProtectedView(thingToBeProtected);
protectedView.invalidate();
expect(() => DebugProtectedView.unwrapProtectedView(protectedThing)).toThrowError("ProtectedView view invalidated - meep meep");
});
});
describe("=> when given not a proxy", () =>
{
it("| it returns the thing", () =>
{
const thing = { foo: true };
expect(DebugProtectedView.unwrapProtectedView(thing)).toBe(thing);
});
});
});
});