-
-
Notifications
You must be signed in to change notification settings - Fork 0
/
core.spec.ts
102 lines (84 loc) · 3.19 KB
/
core.spec.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
import { NxMermaidGrapher } from '../lib/core';
import { IGraph } from '../lib/data-structures/graph.ds.interface';
import { NXGraphFileLoader } from '../lib/nx/load-nx-graph';
import mockGraphExample from './mocks/ddd-example.graph.json';
const readNXGraphMock = jest.fn();
jest.mock('../lib/nx/load-nx-graph', () => {
return {
NXGraphFileLoader: jest.fn().mockImplementation(() => {
return { readNXGraph: readNXGraphMock };
}),
};
});
const mockAddNode = jest.fn();
const mockAddEge = jest.fn();
const mockGetGraph = jest.fn();
class MockGraph implements IGraph<string> {
addNode(nodeVal: string): void {
mockAddNode(nodeVal);
}
addEdge(source: string, destination: string): void {
mockAddEge(source, destination);
}
getGraph(): { [key: string]: string[] } {
return mockGetGraph();
}
}
describe('Library core', () => {
let mockLoader: NXGraphFileLoader;
let mockGraph: IGraph<string>;
let coreCls: NxMermaidGrapher;
beforeEach(() => {
mockLoader = new NXGraphFileLoader();
mockGraph = new MockGraph();
readNXGraphMock.mockReturnValue(mockGraphExample);
coreCls = new NxMermaidGrapher(mockLoader, mockGraph);
});
describe('.init', () => {
it('should read NX graph file', () => {
const pathToNXFile = 'path/to/file';
coreCls.init(pathToNXFile);
expect(readNXGraphMock).toHaveBeenCalledWith(pathToNXFile);
expect(mockAddNode).toHaveBeenCalledTimes(8);
expect(mockAddEge).toHaveBeenCalledTimes(18);
});
});
describe('.getGraphSnippet', () => {
beforeEach(() => {
const pathToNXFile = 'path/to/file';
mockGetGraph.mockReturnValue(mockGraphAsObj);
coreCls.init(pathToNXFile);
});
it('should get a graph with all libraries', () => {
expect(coreCls.getGraphSnippet()).toEqual(expectedGraph);
});
it.todo('should get a graph without excluded libraries');
});
describe('.getGraphSnippetForLib', () => {
it.todo('implement getGraphSnippetForLib(libName: string, excludeLibs: string[] = [])');
});
});
const mockGraphAsObj = {
'shared-infrastructure-nestjs-cqrs-events': ['shared-domain'],
'lending-infrastructure': [
'lending-application',
'shared-infrastructure-nestjs-cqrs-events',
'lending-domain',
'shared-domain',
],
'lending-application': ['lending-domain', 'shared-domain', 'catalogue'],
'lending-ui-rest': ['lending-application', 'lending-domain', 'lending-infrastructure'],
'lending-domain': ['shared-domain'],
'shared-domain': [],
catalogue: ['shared-domain', 'shared-infrastructure-nestjs-cqrs-events'],
library: ['catalogue', 'lending-ui-rest', 'lending-domain', 'lending-infrastructure'],
};
const expectedGraph = `graph LR
shared-infrastructure-nestjs-cqrs-events-->shared-domain
lending-infrastructure-->lending-application-->shared-infrastructure-nestjs-cqrs-events-->lending-domain-->shared-domain
lending-application-->lending-domain-->shared-domain-->catalogue
lending-ui-rest-->lending-application-->lending-domain-->lending-infrastructure
lending-domain-->shared-domain
catalogue-->shared-domain-->shared-infrastructure-nestjs-cqrs-events
library-->catalogue-->lending-ui-rest-->lending-domain-->lending-infrastructure
`;