forked from sashin/sashinexists
36 lines
1.1 KiB
JavaScript
36 lines
1.1 KiB
JavaScript
import assert from "node:assert";
|
|
import { describe, test } from "node:test";
|
|
import { DeepObjectTree, Tree } from "../../src/internal.js";
|
|
|
|
describe("DeepObjectTree", () => {
|
|
test("returns an ObjectTree for value that's a plain sub-object or sub-array", async () => {
|
|
const tree = createFixture();
|
|
|
|
const object = await tree.get("object");
|
|
assert.equal(object instanceof DeepObjectTree, true);
|
|
assert.deepEqual(await Tree.plain(object), { b: 2 });
|
|
assert.equal(object.parent, tree);
|
|
|
|
const array = await tree.get("array");
|
|
assert.equal(array instanceof DeepObjectTree, true);
|
|
assert.deepEqual(await Tree.plain(array), [3]);
|
|
assert.equal(array.parent, tree);
|
|
});
|
|
|
|
test("adds trailing slashes to keys for subtrees including plain objects or arrays", async () => {
|
|
const tree = createFixture();
|
|
const keys = Array.from(await tree.keys());
|
|
assert.deepEqual(keys, ["a", "object/", "array/"]);
|
|
});
|
|
});
|
|
|
|
function createFixture() {
|
|
return new DeepObjectTree({
|
|
a: 1,
|
|
object: {
|
|
b: 2,
|
|
},
|
|
array: [3],
|
|
});
|
|
}
|