Skip to content

Commit e1dd977

Browse files
committed
RM-35685: Added tests for code added
1 parent bf59b14 commit e1dd977

7 files changed

Lines changed: 147 additions & 4 deletions

File tree

dist/index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3130,7 +3130,7 @@ const http_client_1 = __nccwpck_require__(80939);
31303130
* @throws Error if project cannot be created or does not exist.
31313131
*/
31323132
async function createProject() {
3133-
const createProjectUrl = (0, url_1.joinUrl)(config_1.ticsConfig.baseUrl, `api/public/v1/fapi/Project`);
3133+
const createProjectUrl = (0, url_1.joinUrl)(config_1.ticsConfig.baseUrl, 'api/public/v1/fapi/Project');
31343134
const branchName = getBranchName();
31353135
const body = {
31363136
projectName: config_1.ticsCli.project,

src/viewer/project.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import { httpClient } from './http-client';
99
* @throws Error if project cannot be created or does not exist.
1010
*/
1111
export async function createProject(): Promise<void> {
12-
const createProjectUrl = joinUrl(ticsConfig.baseUrl, `api/public/v1/fapi/Project`);
12+
const createProjectUrl = joinUrl(ticsConfig.baseUrl, 'api/public/v1/fapi/Project');
1313
const branchName = getBranchName();
1414
const body = {
1515
projectName: ticsCli.project,

test/.setup/mock.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,8 @@ export const ticsConfigMock = {
5151
viewerUrl: '',
5252
trustStrategy: 'strict',
5353
baseUrl: '',
54-
displayUrl: ''
54+
displayUrl: '',
55+
createProject: false
5556
};
5657

5758
export const actionConfigMock = {
@@ -94,7 +95,10 @@ jest.mock('../../src/configuration/config', () => {
9495
jest.mock('../../src/viewer/http-client', () => {
9596
return {
9697
httpClient: {
97-
get: jest.fn()
98+
get: jest.fn(),
99+
delete: jest.fn(),
100+
post: jest.fn(),
101+
put: jest.fn()
98102
}
99103
};
100104
});

test/unit/analysis/qserver.test.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import * as pull_request from '../../../src/action/decorate/pull-request';
55
import * as qserver from '../../../src/analysis/qserver/analysis-result';
66
import * as summary from '../../../src/action/decorate/summary';
77
import * as viewer from '../../../src/viewer/qserver';
8+
import * as project from '../../../src/viewer/project';
89

910
import { githubConfigMock, ticsConfigMock } from '../../.setup/mock';
1011
import {
@@ -35,6 +36,7 @@ describe('setFailed checks (QServer)', () => {
3536

3637
jest.spyOn(action, 'decorateAction');
3738
jest.spyOn(summary, 'createNothingAnalyzedSummaryBody').mockResolvedValue('body');
39+
jest.spyOn(project, 'createProject').mockResolvedValue();
3840
});
3941

4042
afterEach(() => {
@@ -166,6 +168,7 @@ describe('setFailed checks (QServer)', () => {
166168
});
167169

168170
it('should return passing verdict if getAnalysisResult returns passing Quality Gate', async () => {
171+
ticsConfigMock.createProject = true;
169172
spyGetLastQServerRunDate.mockResolvedValueOnce(123456000);
170173
spyGetLastQServerRunDate.mockResolvedValueOnce(123457000);
171174
spyAnalyzer.mockResolvedValue(analysisPassed);

test/unit/viewer/project.test.ts

Lines changed: 114 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,114 @@
1+
import { describe, expect, it, jest } from '@jest/globals';
2+
import { httpClient } from '../../../src/viewer/http-client';
3+
import { createProject } from '../../../src/viewer/project';
4+
import { ticsCliMock, ticsConfigMock } from '../../.setup/mock';
5+
import { SpiedFunction } from 'jest-mock';
6+
7+
describe('createProject', () => {
8+
let putSpy: SpiedFunction<any>;
9+
10+
beforeAll(() => {
11+
ticsConfigMock.baseUrl = 'http://base.url';
12+
});
13+
14+
beforeEach(() => {
15+
putSpy = jest.spyOn(httpClient, 'put');
16+
jest.clearAllMocks();
17+
});
18+
19+
it('should pass creating a project using default branchdir', async () => {
20+
putSpy.mockResolvedValue('');
21+
22+
await createProject();
23+
24+
expect(putSpy).toHaveBeenCalledWith(
25+
'http://base.url/api/public/v1/fapi/Project',
26+
JSON.stringify({
27+
projectName: '',
28+
branchName: 'main',
29+
branchDir: '',
30+
calculate: true,
31+
visible: true,
32+
renameTo: { branchName: 'main' }
33+
})
34+
);
35+
});
36+
37+
it('should pass creating a project using branchname given by input', async () => {
38+
ticsCliMock.branchname = 'branch';
39+
putSpy.mockResolvedValue('');
40+
41+
await createProject();
42+
43+
expect(putSpy).toHaveBeenCalledWith(
44+
'http://base.url/api/public/v1/fapi/Project',
45+
JSON.stringify({
46+
projectName: '',
47+
branchName: 'branch',
48+
branchDir: '',
49+
calculate: true,
50+
visible: true,
51+
renameTo: { branchName: 'branch' }
52+
})
53+
);
54+
ticsCliMock.branchname = '';
55+
});
56+
57+
it('should pass creating a project using branchname given by environment GITHUB_BASE_REF', async () => {
58+
const GITHUB_BASE_REF = process.env.GITHUB_BASE_REF;
59+
process.env.GITHUB_BASE_REF = 'branch';
60+
putSpy.mockResolvedValue('');
61+
62+
await createProject();
63+
64+
expect(putSpy).toHaveBeenCalledWith(
65+
'http://base.url/api/public/v1/fapi/Project',
66+
JSON.stringify({
67+
projectName: '',
68+
branchName: 'branch',
69+
branchDir: '',
70+
calculate: true,
71+
visible: true,
72+
renameTo: { branchName: 'branch' }
73+
})
74+
);
75+
process.env.GITHUB_BASE_REF = GITHUB_BASE_REF;
76+
});
77+
78+
it('should pass creating a project using branchname given by environment GITHUB_REF_NAME', async () => {
79+
const GITHUB_BASE_REF = process.env.GITHUB_BASE_REF;
80+
process.env.GITHUB_BASE_REF = '';
81+
const GITHUB_REF_NAME = process.env.GITHUB_REF_NAME;
82+
process.env.GITHUB_REF_NAME = 'branch';
83+
putSpy.mockResolvedValue('');
84+
85+
await createProject();
86+
87+
expect(putSpy).toHaveBeenCalledWith(
88+
'http://base.url/api/public/v1/fapi/Project',
89+
JSON.stringify({
90+
projectName: '',
91+
branchName: 'branch',
92+
branchDir: '',
93+
calculate: true,
94+
visible: true,
95+
renameTo: { branchName: 'branch' }
96+
})
97+
);
98+
process.env.GITHUB_BASE_REF = GITHUB_BASE_REF;
99+
process.env.GITHUB_BASE_REF = GITHUB_REF_NAME;
100+
});
101+
102+
it('should throw error when viewer returns error', async () => {
103+
putSpy.mockRejectedValue(Error());
104+
105+
let error: any;
106+
try {
107+
await createProject();
108+
} catch (err) {
109+
error = err;
110+
}
111+
112+
expect(error).toBeInstanceOf(Error);
113+
});
114+
});

test/unit/viewer/qserver.test.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,14 @@ describe('getQualityGate', () => {
2626
expect(error).toBeInstanceOf(Error);
2727
});
2828

29+
it('should return -1 on project that has not run yet', async () => {
30+
(jest.spyOn(httpClient, 'get') as any).mockResolvedValue({ data: { data: [{ value: undefined }] } });
31+
32+
const response = await getLastQServerRunDate();
33+
34+
expect(response).toBe(-1);
35+
});
36+
2937
it('should throw error on faulty get in getQualityGate', async () => {
3038
jest.spyOn(httpClient, 'get').mockRejectedValue(Error());
3139

test/unit/viewer/version.test.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,4 +60,18 @@ describe('getViewerVersion', () => {
6060

6161
expect(response).toBeTruthy();
6262
});
63+
64+
it('should throw viewer returns unparsable version', async () => {
65+
jest.spyOn(httpClient, 'get').mockResolvedValueOnce({ data: { version: null }, retryCount: 0, status: 200 });
66+
67+
let error: any;
68+
try {
69+
await viewerVersion.viewerSupports(ViewerFeature.GITHUB_ACTION);
70+
} catch (err) {
71+
error = err;
72+
}
73+
74+
expect(error).toBeInstanceOf(Error);
75+
expect(error.message).toStrictEqual('Could not compute version received by the viewer, got: null.');
76+
});
6377
});

0 commit comments

Comments
 (0)