Skip to content

Commit 3b16fa4

Browse files
Karan NagpalKaran Nagpal
authored andcommitted
add tests for generateDownloads.js
1 parent d75476a commit 3b16fa4

File tree

1 file changed

+114
-0
lines changed

1 file changed

+114
-0
lines changed
Lines changed: 114 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,114 @@
1+
const chai = require("chai"),
2+
chaiAsPromised = require("chai-as-promised"),
3+
sinon = require('sinon');
4+
const { downloadBuildArtifacts } = require("../../../../bin/helpers/buildArtifacts");
5+
const constants = require("../../../../bin/helpers/constants");
6+
7+
const Constants = require("../../../../bin/helpers/constants"),
8+
logger = require("../../../../bin/helpers/logger").winstonLogger,
9+
testObjects = require("../../support/fixtures/testObjects");
10+
11+
const proxyquire = require("proxyquire").noCallThru();
12+
13+
chai.use(chaiAsPromised);
14+
logger.transports["console.info"].silent = true;
15+
16+
describe("generateDownloads", () => {
17+
let args = testObjects.generateDownloadsInputArgs;
18+
let body = testObjects.buildInfoSampleBody;
19+
let bsConfig = testObjects.sampleBsConfig;
20+
21+
describe("Calling downloadBuildArtifacts", () => {
22+
var sandbox;
23+
24+
beforeEach(() => {
25+
sandbox = sinon.createSandbox();
26+
27+
getConfigPathStub = sandbox.stub();
28+
validateBstackJsonStub = sandbox.stub();
29+
setDefaultAuthHashStub = sandbox.stub();
30+
setUsernameStub = sandbox.stub();
31+
setAccessKeyStub = sandbox.stub();
32+
setUsageReportingFlagStub = sandbox.stub().returns(undefined);
33+
setCypressConfigFilenameStub = sandbox.stub();
34+
sendUsageReportStub = sandbox.stub().callsFake(function () {
35+
return "end";
36+
});
37+
38+
downloadBuildArtifactsSpy = sandbox.spy();
39+
getErrorCodeFromErrStub = sandbox.stub().returns("random-error");
40+
setDefaultsStub = sandbox.stub();
41+
});
42+
43+
afterEach(() => {
44+
sandbox.restore();
45+
sinon.restore();
46+
});
47+
48+
it("calls downloadBuildArtifacts", () => {
49+
const generateReport = proxyquire('../../../../bin/commands/generateDownloads', {
50+
'../helpers/utils': {
51+
getConfigPath: getConfigPathStub,
52+
validateBstackJson: validateBstackJsonStub,
53+
setDefaultAuthHash: setDefaultAuthHashStub,
54+
setUsername: setUsernameStub,
55+
setAccessKey: setAccessKeyStub,
56+
setUsageReportingFlag: setUsageReportingFlagStub,
57+
setCypressConfigFilename: setCypressConfigFilenameStub,
58+
sendUsageReport: sendUsageReportStub,
59+
setDefaults: setDefaultsStub,
60+
getErrorCodeFromErr: getErrorCodeFromErrStub
61+
},
62+
'../helpers/buildArtifacts': {
63+
downloadBuildArtifacts: downloadBuildArtifactsSpy
64+
}
65+
});
66+
67+
validateBstackJsonStub.returns(Promise.resolve(bsConfig));
68+
69+
generateReport(args)
70+
.then(function (_bsConfig) {
71+
sinon.assert.calledWith(downloadBuildArtifactsSpy, bsConfig, args._[1], args);
72+
sinon.assert.calledOnce(getConfigPathStub);
73+
sinon.assert.calledOnceWithExactly(sendUsageReportStub, bsConfig, args, constants.usageReportingConstants.GENERATE_DOWNLOADS, Constants.messageTypes.INFO, null);
74+
})
75+
.catch((error) => {
76+
chai.assert.isNotOk(error, 'Promise error');
77+
});
78+
});
79+
80+
it("logs and send usage report on rejection", () => {
81+
const generateReport = proxyquire('../../../../bin/commands/generateDownloads', {
82+
'../helpers/utils': {
83+
getConfigPath: getConfigPathStub,
84+
validateBstackJson: validateBstackJsonStub,
85+
setDefaultAuthHash: setDefaultAuthHashStub,
86+
setUsername: setUsernameStub,
87+
setAccessKey: setAccessKeyStub,
88+
setUsageReportingFlag: setUsageReportingFlagStub,
89+
setCypressConfigFilename: setCypressConfigFilenameStub,
90+
sendUsageReport: sendUsageReportStub,
91+
setDefaults: setDefaultsStub,
92+
getErrorCodeFromErr: getErrorCodeFromErrStub
93+
},
94+
'../helpers/buildArtifacts': {
95+
downloadBuildArtifacts: downloadBuildArtifactsSpy
96+
}
97+
});
98+
99+
let err = { message: "Promise error" };
100+
101+
validateBstackJsonStub.returns(Promise.reject(err));
102+
103+
generateReport(args)
104+
.then(function (_bsConfig) {
105+
sinon.assert.notCalled(downloadBuildArtifactsSpy);
106+
sinon.assert.notCalled(getConfigPathStub);
107+
})
108+
.catch((_error) => {
109+
sinon.assert.calledWith(setUsageReportingFlagStub, null, args.disableUsageReporting);
110+
sinon.assert.calledWith(sendUsageReportStub, null, args, err.message, Constants.messageTypes.ERROR, "random-error");
111+
});
112+
});
113+
});
114+
});

0 commit comments

Comments
 (0)