/
tree.js
98 lines (85 loc) · 3.64 KB
/
tree.js
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
const test = require("ava");
const sinon = require("sinon");
const normalizer = require("@ui5/project").normalizer;
const tree = require("../../../../lib/cli/commands/tree");
const treeify = require("treeify");
test.beforeEach((t) => {
sinon.stub(normalizer, "generateProjectTree");
sinon.stub(normalizer, "generateDependencyTree");
});
test.afterEach.always((t) => {
sinon.restore();
});
test.serial("ui5 tree (generates dependency tree before output)", async (t) => {
normalizer.generateDependencyTree.resolves({});
await tree.handler({});
t.is(normalizer.generateDependencyTree.called, true, "dependency tree output");
});
test.serial("ui5 tree --full (generates project tree before output)", async (t) => {
normalizer.generateProjectTree.resolves({});
await tree.handler({full: true});
t.is(normalizer.generateProjectTree.called, true, "project tree output");
});
test.serial("ui5 tree --json (output tree in json)", async (t) => {
const jsonStringifySpy = sinon.spy(JSON, "stringify");
const consoleStub = sinon.stub(console, "log");
normalizer.generateDependencyTree.resolves({name: "sample"});
await tree.handler({json: true});
// Note: Some versions of Node.js seem to call stringify internally during this test
t.deepEqual(jsonStringifySpy.called, true, "Stringify got called at least once");
t.deepEqual(jsonStringifySpy.getCall(jsonStringifySpy.callCount - 1).args[0], {name: "sample"},
"JSON.stringify called with correct argument");
t.deepEqual(consoleStub.callCount, 1, "console.log was called once");
t.deepEqual(consoleStub.getCall(0).args[0], `{
"name": "sample"
}`, "console.log was called with correct argument");
});
test.serial("ui5 tree (output tree)", async (t) => {
const treeifySpy = sinon.stub(treeify, "asTree").returns("🌲");
const consoleStub = sinon.stub(console, "log");
normalizer.generateDependencyTree.resolves({name: "sample"});
await tree.handler({});
t.deepEqual(treeifySpy.callCount, 1, "Treeify called once");
t.deepEqual(treeifySpy.getCall(0).args[0], {name: "sample"}, "Treeify called with correct argument");
t.deepEqual(consoleStub.callCount, 1, "console.log was called once");
t.deepEqual(consoleStub.getCall(0).args[0], "🌲", "console.log was called with correct argument");
});
test.serial("ui5 tree --dedupe=false (default)", async (t) => {
normalizer.generateDependencyTree.resolves({});
await tree.handler({dedupe: false});
t.is(normalizer.generateDependencyTree.calledWithMatch({
translatorOptions: {
includeDeduped: true
}
}), true, "includeDeduped passed as expected");
});
test.serial("ui5 tree --dedupe=true", async (t) => {
normalizer.generateDependencyTree.resolves({});
await tree.handler({dedupe: true});
t.is(normalizer.generateDependencyTree.calledWithMatch({
translatorOptions: {
includeDeduped: false
}
}), true, "includeDeduped passed as expected");
});
test.serial("ui5 tree --full --framework-version", async (t) => {
normalizer.generateProjectTree.resolves({});
await tree.handler({full: true, frameworkVersion: "1.2.3"});
t.is(normalizer.generateProjectTree.called, true, "project tree output");
t.deepEqual(normalizer.generateProjectTree.getCall(0).args, [{
configPath: undefined,
translatorName: undefined,
translatorOptions: {
includeDeduped: true
},
frameworkOptions: {
versionOverride: "1.2.3"
}
}]);
});
// test.serial("Error: throws on error during processing", async (t) => {
// normalizer.generateDependencyTree.rejects(new Error("Some error happened ..."));
// const processExitStub = sinon.stub(process, "exit");
// t.is(processExitStub.getCall(0).args[0], 1, "killed process on error using process.exit(1)");
// processExitStub.restore();
// });