mirror of
https://github.com/Azure/cosmos-explorer.git
synced 2025-04-24 10:34:30 +01:00
113 lines
3.1 KiB
TypeScript
113 lines
3.1 KiB
TypeScript
import { GraphData, GremlinVertex, GremlinEdge } from "./GraphData";
|
|
|
|
describe("Graph Data", () => {
|
|
it("should set only one node as root", () => {
|
|
const graphData = new GraphData<GremlinVertex, GremlinEdge>();
|
|
const v1: GremlinVertex = { id: "1", label: null };
|
|
const v2: GremlinVertex = { id: "2", label: null };
|
|
const v3: GremlinVertex = { id: "3", label: null };
|
|
v3._isRoot = true;
|
|
|
|
graphData.addVertex(v1);
|
|
graphData.addVertex(v2);
|
|
graphData.addVertex(v3);
|
|
|
|
graphData.setAsRoot("2");
|
|
graphData.setAsRoot("1");
|
|
|
|
// Count occurences of roots
|
|
const roots = graphData.vertices.filter((v: any) => {
|
|
return v._isRoot;
|
|
});
|
|
|
|
expect(roots.length).toBe(1);
|
|
expect(graphData.getVertexById("1")._isRoot).toBeDefined();
|
|
expect(graphData.getVertexById("2")._isRoot).not.toBeDefined();
|
|
expect(graphData.getVertexById("3")._isRoot).not.toBeDefined();
|
|
});
|
|
|
|
it("should properly find root id", () => {
|
|
const graphData = new GraphData();
|
|
const v1: GremlinVertex = { id: "1", label: null };
|
|
const v2: GremlinVertex = { id: "2", label: null };
|
|
const v3: GremlinVertex = { id: "3", label: null };
|
|
|
|
graphData.addVertex(v1);
|
|
graphData.addVertex(v2);
|
|
graphData.addVertex(v3);
|
|
|
|
graphData.setAsRoot("1");
|
|
|
|
expect(graphData.findRootNodeId()).toBe("1");
|
|
});
|
|
|
|
it("should remove edge from graph", () => {
|
|
const graphData = new GraphData();
|
|
|
|
graphData.addVertex({ id: "v1", label: null });
|
|
graphData.addVertex({ id: "v2", label: null });
|
|
graphData.addVertex({ id: "v3", label: null });
|
|
|
|
graphData.addEdge({ id: "e1", inV: "v1", outV: "v2", label: null });
|
|
graphData.addEdge({ id: "e2", inV: "v1", outV: "v3", label: null });
|
|
|
|
// in edge
|
|
graphData.removeEdge("e1", false);
|
|
expect(graphData.edges.length).toBe(1);
|
|
expect(graphData).not.toContain(jasmine.objectContaining({ id: "e1" }));
|
|
|
|
// out edge
|
|
graphData.removeEdge("e2", false);
|
|
expect(graphData.edges.length).toBe(0);
|
|
expect(graphData).not.toContain(jasmine.objectContaining({ id: "e2" }));
|
|
});
|
|
|
|
it("should get string node property", () => {
|
|
const stringValue = "blah";
|
|
const value = GraphData.getNodePropValue(
|
|
{
|
|
id: "id",
|
|
label: "label",
|
|
properties: {
|
|
testString: [{ id: "123", value: stringValue }]
|
|
}
|
|
},
|
|
"testString"
|
|
);
|
|
|
|
expect(value).toEqual(stringValue);
|
|
});
|
|
|
|
it("should get number node property", () => {
|
|
const numberValue = 2;
|
|
const value = GraphData.getNodePropValue(
|
|
{
|
|
id: "id",
|
|
label: "label",
|
|
properties: {
|
|
testString: [{ id: "123", value: numberValue }]
|
|
}
|
|
},
|
|
"testString"
|
|
);
|
|
|
|
expect(value).toEqual(numberValue);
|
|
});
|
|
|
|
it("should get boolean node property", () => {
|
|
const booleanValue = true;
|
|
const value = GraphData.getNodePropValue(
|
|
{
|
|
id: "id",
|
|
label: "label",
|
|
properties: {
|
|
testString: [{ id: "123", value: booleanValue }]
|
|
}
|
|
},
|
|
"testString"
|
|
);
|
|
|
|
expect(value).toEqual(booleanValue);
|
|
});
|
|
});
|