/
ado-console-comment-creator.spec.ts
99 lines (76 loc) · 3.67 KB
/
ado-console-comment-creator.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
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
import 'reflect-metadata';
import { Mock, Times, IMock, MockBehavior } from 'typemoq';
import { AdoConsoleCommentCreator } from './ado-console-comment-creator';
import { ADOTaskConfig } from '../../task-config/ado-task-config';
import { CombinedReportParameters } from 'accessibility-insights-report';
import { Logger, ReportMarkdownConvertor } from '@accessibility-insights-action/shared';
describe(AdoConsoleCommentCreator, () => {
let adoTaskConfigMock: IMock<ADOTaskConfig>;
let loggerMock: IMock<Logger>;
let reportMarkdownConvertorMock: IMock<ReportMarkdownConvertor>;
let adoConsoleCommentCreator: AdoConsoleCommentCreator;
beforeEach(() => {
adoTaskConfigMock = Mock.ofType<ADOTaskConfig>(undefined, MockBehavior.Strict);
loggerMock = Mock.ofType<Logger>(undefined, MockBehavior.Strict);
reportMarkdownConvertorMock = Mock.ofType<ReportMarkdownConvertor>(undefined, MockBehavior.Strict);
});
describe('constructor', () => {
it('should initialize', () => {
buildAdoConsoleCommentCreatorWithMocks();
verifyAllMocks();
});
});
describe('completeRun', () => {
it('should output results to the console', async () => {
const reportStub: CombinedReportParameters = {
results: {
urlResults: {
failedUrls: 1,
},
},
} as CombinedReportParameters;
const baselineInfoStub = {};
const reportMarkdownStub = '#ReportMarkdownStub';
const expectedLogOutput = AdoConsoleCommentCreator.CURRENT_COMMENT_TITLE + reportMarkdownStub;
adoTaskConfigMock
.setup((atcm) => atcm.getBaselineFile())
.returns(() => undefined)
.verifiable(Times.once());
reportMarkdownConvertorMock
.setup((o) => o.convert(reportStub, AdoConsoleCommentCreator.CURRENT_COMMENT_TITLE, baselineInfoStub))
.returns(() => expectedLogOutput)
.verifiable(Times.once());
loggerMock.setup((lm) => lm.logInfo(expectedLogOutput)).verifiable(Times.once());
adoConsoleCommentCreator = buildAdoConsoleCommentCreatorWithMocks();
await adoConsoleCommentCreator.completeRun(reportStub);
verifyAllMocks();
});
});
describe('failRun', () => {
it('does nothing interesting', async () => {
const adoConsoleCommentCreator = buildAdoConsoleCommentCreatorWithMocks();
await adoConsoleCommentCreator.failRun();
verifyAllMocks();
});
});
describe('didScanSucceed', () => {
it('returns true by default', async () => {
const adoConsoleCommentCreator = buildAdoConsoleCommentCreatorWithMocks();
await expect(adoConsoleCommentCreator.didScanSucceed()).resolves.toBe(true);
});
it('returns true after failRun() is called', async () => {
const adoConsoleCommentCreator = buildAdoConsoleCommentCreatorWithMocks();
await adoConsoleCommentCreator.failRun();
await expect(adoConsoleCommentCreator.didScanSucceed()).resolves.toBe(true);
});
});
const buildAdoConsoleCommentCreatorWithMocks = (): AdoConsoleCommentCreator =>
new AdoConsoleCommentCreator(adoTaskConfigMock.object, reportMarkdownConvertorMock.object, loggerMock.object);
const verifyAllMocks = () => {
adoTaskConfigMock.verifyAll();
loggerMock.verifyAll();
reportMarkdownConvertorMock.verifyAll();
};
});