Skip to content

Commit 98fc0a8

Browse files
committed
add tests
Signed-off-by: John Lukenoff <johnlukenoff@asana.com>
1 parent f1e5869 commit 98fc0a8

2 files changed

Lines changed: 31 additions & 13 deletions

File tree

web/src/__tests__/components/Lineage.test.tsx

Lines changed: 29 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -20,23 +20,24 @@ class MockNode implements Partial<LineageNode> {
2020
inEdges: MockEdge[]
2121
outEdges: MockEdge[]
2222

23-
constructor(id, [prev, next]: [string | null, string | null]) {
23+
constructor(id, prev: string[], next: string[]) {
2424
this.id = id
25-
this.inEdges = prev ? [new MockEdge(prev, id)] : ([] as MockEdge[])
26-
this.outEdges = next ? [new MockEdge(id, next)] : ([] as MockEdge[])
25+
this.inEdges = prev ? prev.map(p => new MockEdge(p, id)) : ([] as MockEdge[])
26+
this.outEdges = next ? next.map(n => new MockEdge(id, n)) : ([] as MockEdge[])
2727
}
2828
}
2929

3030
const mockGraphWithCycle = [
31-
new MockNode('1', ['3', '2']),
32-
new MockNode('2', ['1', '3']),
33-
new MockNode('3', ['2', '1'])
31+
new MockNode('1', ['3'], ['2']),
32+
new MockNode('2', ['1'], ['3']),
33+
new MockNode('3', ['2'], ['1'])
3434
] as LineageNode[]
3535

3636
const mockGraphWithoutCycle = [
37-
new MockNode('1', [null, '2']),
38-
new MockNode('2', ['1', '3']),
39-
new MockNode('3', ['2', null])
37+
new MockNode('1', [], ['2', '4']),
38+
new MockNode('2', ['1'], ['3']),
39+
new MockNode('3', ['2'], []),
40+
new MockNode('4', ['1'], [])
4041
] as LineageNode[]
4142

4243
describe('Lineage Component', () => {
@@ -74,10 +75,27 @@ describe('Lineage Component', () => {
7475
const expectedPaths = [
7576
['1', '2'],
7677
['2', '3'],
77-
['3', '2'],
78-
['2', '1']
78+
['3', '1'],
79+
['3', '1'],
80+
['2', '3'],
81+
['1', '2']
7982
]
8083

8184
expect(actualPaths).toEqual(expectedPaths)
8285
})
86+
87+
it('includes nodes in selected path when fullGraph is true', () => {
88+
const g = initGraph()
89+
buildGraphAll(g, mockGraphWithoutCycle, true, '3', () => null)
90+
91+
expect(g.node('4')).toBeDefined()
92+
})
93+
94+
it('exclude nodes not in selected path when fullGraph is false', () => {
95+
const g = initGraph()
96+
97+
buildGraphAll(g, mockGraphWithoutCycle, false, '3', () => null)
98+
99+
expect(g.node('4')).toBeUndefined()
100+
})
83101
})

web/src/components/lineage/Lineage.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ export function getSelectedPaths(g: graphlib.Graph<MqNode>, selectedNode: string
119119

120120
const successors = g?.successors(node)
121121
if (successors?.length) {
122-
for (let i = 0; i < node.length - 1; i++) {
122+
for (let i = 0; i < successors.length; i++) {
123123
if (successors[i]) {
124124
paths.push([node, (successors[i] as unknown) as string])
125125
getSuccessors((successors[i] as unknown) as string)
@@ -134,7 +134,7 @@ export function getSelectedPaths(g: graphlib.Graph<MqNode>, selectedNode: string
134134

135135
const predecessors = g?.predecessors(node)
136136
if (predecessors?.length) {
137-
for (let i = 0; i < node.length - 1; i++) {
137+
for (let i = 0; i < predecessors.length; i++) {
138138
if (predecessors[i]) {
139139
paths.push([(predecessors[i] as unknown) as string, node])
140140
getPredecessors((predecessors[i] as unknown) as string)

0 commit comments

Comments
 (0)