forked from sashin/sashinexists
26 lines
843 B
JavaScript
26 lines
843 B
JavaScript
import assert from "node:assert";
|
|
import { describe, test } from "node:test";
|
|
import { ObjectTree } from "../../src/internal.js";
|
|
import scope from "../../src/operations/scope.js";
|
|
|
|
describe("scope", () => {
|
|
test("gets the first defined value from the scope trees", async () => {
|
|
const outer = new ObjectTree({
|
|
a: 1,
|
|
b: 2,
|
|
});
|
|
const inner = new ObjectTree({
|
|
a: 3,
|
|
});
|
|
inner.parent = outer;
|
|
const innerScope = scope(inner);
|
|
assert.deepEqual([...(await innerScope.keys())], ["a", "b"]);
|
|
// Inner tree has precedence
|
|
assert.equal(await innerScope.get("a"), 3);
|
|
// If tree doesn't have value, finds value from parent
|
|
assert.equal(await innerScope.get("b"), 2);
|
|
assert.equal(await innerScope.get("c"), undefined);
|
|
assert.deepEqual(innerScope.trees, [inner, outer]);
|
|
});
|
|
});
|