mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
Co-authored-by: Janne Savolainen <janne.savolainen@live.fi> Signed-off-by: Iku-turso <mikko.aspiala@gmail.com>
72 lines
1.9 KiB
TypeScript
72 lines
1.9 KiB
TypeScript
/**
|
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
|
*/
|
|
import { getCompositePaths } from "./get-composite-paths";
|
|
import { sortBy } from "lodash/fp";
|
|
import { getCompositeFor } from "../get-composite/get-composite";
|
|
|
|
describe("get-composite-paths", () => {
|
|
it("given composite with transformed children, returns paths of transformed children in hierarchical order", () => {
|
|
const someRootItem = {
|
|
id: "some-root-id",
|
|
};
|
|
|
|
const someChildItem1 = {
|
|
id: "some-child-id-1",
|
|
parentId: "some-root-id",
|
|
orderNumber: 1,
|
|
};
|
|
|
|
const someChildItem2 = {
|
|
id: "some-child-id-2",
|
|
parentId: "some-root-id",
|
|
orderNumber: 2,
|
|
};
|
|
|
|
const someGrandchildItem1 = {
|
|
id: "some-grandchild-id-1",
|
|
parentId: "some-child-id-1",
|
|
orderNumber: 1,
|
|
};
|
|
|
|
const someGrandchildItem2 = {
|
|
id: "some-grandchild-id-2",
|
|
parentId: "some-child-id-1",
|
|
orderNumber: 2,
|
|
};
|
|
|
|
const items = [
|
|
someRootItem,
|
|
// Note: not in order yet.
|
|
someChildItem2,
|
|
someChildItem1,
|
|
someGrandchildItem2,
|
|
someGrandchildItem1,
|
|
];
|
|
|
|
const getComposite = getCompositeFor<{
|
|
id: string;
|
|
parentId?: string;
|
|
orderNumber?: number;
|
|
}>({
|
|
rootId: "some-root-id",
|
|
getId: (x) => x.id,
|
|
getParentId: (x) => x.parentId,
|
|
transformChildren: children => sortBy(child => child.orderNumber, children),
|
|
});
|
|
|
|
const composite = getComposite(items);
|
|
|
|
const actual = getCompositePaths(composite);
|
|
|
|
expect(actual).toEqual([
|
|
["some-root-id"],
|
|
["some-root-id", "some-child-id-1"],
|
|
["some-root-id", "some-child-id-1", "some-grandchild-id-1"],
|
|
["some-root-id", "some-child-id-1", "some-grandchild-id-2"],
|
|
["some-root-id", "some-child-id-2"],
|
|
]);
|
|
});
|
|
});
|