@elisra-devops/docgen-data-provider 1.21.0 → 1.23.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/helpers/helper.js.map +1 -1
- package/bin/helpers/test/tfs.test.d.ts +1 -0
- package/bin/helpers/test/tfs.test.js +613 -0
- package/bin/helpers/test/tfs.test.js.map +1 -0
- package/bin/helpers/tfs.js +4 -8
- package/bin/helpers/tfs.js.map +1 -1
- package/bin/modules/GitDataProvider.js.map +1 -1
- package/bin/modules/PipelinesDataProvider.js +3 -2
- package/bin/modules/PipelinesDataProvider.js.map +1 -1
- package/bin/modules/ResultDataProvider.d.ts +199 -17
- package/bin/modules/ResultDataProvider.js +611 -195
- package/bin/modules/ResultDataProvider.js.map +1 -1
- package/bin/modules/TestDataProvider.js +7 -7
- package/bin/modules/TestDataProvider.js.map +1 -1
- package/bin/modules/TicketsDataProvider.d.ts +1 -1
- package/bin/modules/TicketsDataProvider.js +3 -2
- package/bin/modules/TicketsDataProvider.js.map +1 -1
- package/bin/modules/test/JfrogDataProvider.test.d.ts +1 -0
- package/bin/modules/test/JfrogDataProvider.test.js +110 -0
- package/bin/modules/test/JfrogDataProvider.test.js.map +1 -0
- package/bin/modules/test/ResultDataProvider.test.d.ts +1 -0
- package/bin/modules/test/ResultDataProvider.test.js +478 -0
- package/bin/modules/test/ResultDataProvider.test.js.map +1 -0
- package/bin/modules/test/gitDataProvider.test.js +424 -120
- package/bin/modules/test/gitDataProvider.test.js.map +1 -1
- package/bin/modules/test/managmentDataProvider.test.js +283 -28
- package/bin/modules/test/managmentDataProvider.test.js.map +1 -1
- package/bin/modules/test/pipelineDataProvider.test.js +229 -45
- package/bin/modules/test/pipelineDataProvider.test.js.map +1 -1
- package/bin/modules/test/testDataProvider.test.js +225 -81
- package/bin/modules/test/testDataProvider.test.js.map +1 -1
- package/bin/modules/test/ticketsDataProvider.test.js +310 -82
- package/bin/modules/test/ticketsDataProvider.test.js.map +1 -1
- package/package.json +1 -1
- package/src/helpers/helper.ts +16 -14
- package/src/helpers/test/tfs.test.ts +748 -0
- package/src/helpers/tfs.ts +4 -8
- package/src/modules/GitDataProvider.ts +10 -10
- package/src/modules/PipelinesDataProvider.ts +2 -2
- package/src/modules/ResultDataProvider.ts +815 -260
- package/src/modules/TestDataProvider.ts +8 -8
- package/src/modules/TicketsDataProvider.ts +5 -9
- package/src/modules/test/JfrogDataProvider.test.ts +171 -0
- package/src/modules/test/ResultDataProvider.test.ts +581 -0
- package/src/modules/test/gitDataProvider.test.ts +671 -187
- package/src/modules/test/managmentDataProvider.test.ts +386 -26
- package/src/modules/test/pipelineDataProvider.test.ts +281 -52
- package/src/modules/test/testDataProvider.test.ts +307 -105
- package/src/modules/test/ticketsDataProvider.test.ts +425 -129
|
@@ -1,31 +1,286 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const
|
|
4
|
-
require("
|
|
5
|
-
jest.
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
const
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
3
|
+
const tfs_1 = require("../../helpers/tfs");
|
|
4
|
+
const MangementDataProvider_1 = require("../MangementDataProvider");
|
|
5
|
+
jest.mock('../../helpers/tfs');
|
|
6
|
+
describe('MangementDataProvider', () => {
|
|
7
|
+
let managementDataProvider;
|
|
8
|
+
const mockOrgUrl = 'https://dev.azure.com/organization/';
|
|
9
|
+
const mockToken = 'mock-token';
|
|
10
|
+
beforeEach(() => {
|
|
11
|
+
jest.clearAllMocks();
|
|
12
|
+
managementDataProvider = new MangementDataProvider_1.default(mockOrgUrl, mockToken);
|
|
13
|
+
});
|
|
14
|
+
describe('GetCllectionLinkTypes', () => {
|
|
15
|
+
it('should return collection link types when API call succeeds', async () => {
|
|
16
|
+
// Arrange
|
|
17
|
+
const mockResponse = {
|
|
18
|
+
value: [
|
|
19
|
+
{ id: 'link-1', name: 'Child' },
|
|
20
|
+
{ id: 'link-2', name: 'Related' }
|
|
21
|
+
]
|
|
22
|
+
};
|
|
23
|
+
tfs_1.TFSServices.getItemContent.mockResolvedValueOnce(mockResponse);
|
|
24
|
+
// Act
|
|
25
|
+
const result = await managementDataProvider.GetCllectionLinkTypes();
|
|
26
|
+
// Assert
|
|
27
|
+
expect(tfs_1.TFSServices.getItemContent).toHaveBeenCalledWith(`${mockOrgUrl}_apis/wit/workitemrelationtypes`, mockToken, 'get', null, null);
|
|
28
|
+
expect(result).toEqual(mockResponse);
|
|
29
|
+
});
|
|
30
|
+
it('should throw an error when the API call fails', async () => {
|
|
31
|
+
// Arrange
|
|
32
|
+
const expectedError = new Error('API call failed');
|
|
33
|
+
tfs_1.TFSServices.getItemContent.mockRejectedValueOnce(expectedError);
|
|
34
|
+
// Act & Assert
|
|
35
|
+
await expect(managementDataProvider.GetCllectionLinkTypes())
|
|
36
|
+
.rejects.toThrow('API call failed');
|
|
37
|
+
expect(tfs_1.TFSServices.getItemContent).toHaveBeenCalledWith(`${mockOrgUrl}_apis/wit/workitemrelationtypes`, mockToken, 'get', null, null);
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
describe('GetProjects', () => {
|
|
41
|
+
it('should return projects when API call succeeds', async () => {
|
|
42
|
+
// Arrange
|
|
43
|
+
const mockResponse = {
|
|
44
|
+
count: 2,
|
|
45
|
+
value: [
|
|
46
|
+
{ id: 'project-1', name: 'Project One' },
|
|
47
|
+
{ id: 'project-2', name: 'Project Two' }
|
|
48
|
+
]
|
|
49
|
+
};
|
|
50
|
+
tfs_1.TFSServices.getItemContent.mockResolvedValueOnce(mockResponse);
|
|
51
|
+
// Act
|
|
52
|
+
const result = await managementDataProvider.GetProjects();
|
|
53
|
+
// Assert
|
|
54
|
+
expect(tfs_1.TFSServices.getItemContent).toHaveBeenCalledWith(`${mockOrgUrl}_apis/projects?$top=1000`, mockToken);
|
|
55
|
+
expect(result).toEqual(mockResponse);
|
|
56
|
+
});
|
|
57
|
+
it('should throw an error when the API call fails', async () => {
|
|
58
|
+
// Arrange
|
|
59
|
+
const expectedError = new Error('Projects API call failed');
|
|
60
|
+
tfs_1.TFSServices.getItemContent.mockRejectedValueOnce(expectedError);
|
|
61
|
+
// Act & Assert
|
|
62
|
+
await expect(managementDataProvider.GetProjects())
|
|
63
|
+
.rejects.toThrow('Projects API call failed');
|
|
64
|
+
expect(tfs_1.TFSServices.getItemContent).toHaveBeenCalledWith(`${mockOrgUrl}_apis/projects?$top=1000`, mockToken);
|
|
65
|
+
});
|
|
66
|
+
});
|
|
67
|
+
describe('GetProjectByName', () => {
|
|
68
|
+
it('should return a project when project exists with given name', async () => {
|
|
69
|
+
// Arrange
|
|
70
|
+
const mockProjects = {
|
|
71
|
+
count: 2,
|
|
72
|
+
value: [
|
|
73
|
+
{ id: 'project-1', name: 'Project One' },
|
|
74
|
+
{ id: 'project-2', name: 'Project Two' }
|
|
75
|
+
]
|
|
76
|
+
};
|
|
77
|
+
const expectedProject = { id: 'project-2', name: 'Project Two' };
|
|
78
|
+
// Mock GetProjects to return our mock data
|
|
79
|
+
jest.spyOn(managementDataProvider, 'GetProjects').mockResolvedValueOnce(mockProjects);
|
|
80
|
+
// Act
|
|
81
|
+
const result = await managementDataProvider.GetProjectByName('Project Two');
|
|
82
|
+
// Assert
|
|
83
|
+
expect(managementDataProvider.GetProjects).toHaveBeenCalledTimes(1);
|
|
84
|
+
expect(result).toEqual(expectedProject);
|
|
85
|
+
});
|
|
86
|
+
it('should return empty object when project does not exist with given name', async () => {
|
|
87
|
+
// Arrange
|
|
88
|
+
const mockProjects = {
|
|
89
|
+
count: 2,
|
|
90
|
+
value: [
|
|
91
|
+
{ id: 'project-1', name: 'Project One' },
|
|
92
|
+
{ id: 'project-2', name: 'Project Two' }
|
|
93
|
+
]
|
|
94
|
+
};
|
|
95
|
+
// Mock GetProjects to return our mock data
|
|
96
|
+
jest.spyOn(managementDataProvider, 'GetProjects').mockResolvedValueOnce(mockProjects);
|
|
97
|
+
// Act
|
|
98
|
+
const result = await managementDataProvider.GetProjectByName('Non-Existent Project');
|
|
99
|
+
// Assert
|
|
100
|
+
expect(managementDataProvider.GetProjects).toHaveBeenCalledTimes(1);
|
|
101
|
+
expect(result).toEqual({});
|
|
102
|
+
});
|
|
103
|
+
it('should return empty object and log error when GetProjects throws', async () => {
|
|
104
|
+
// Arrange
|
|
105
|
+
const expectedError = new Error('Projects API call failed');
|
|
106
|
+
// Mock GetProjects to throw an error
|
|
107
|
+
jest.spyOn(managementDataProvider, 'GetProjects').mockRejectedValueOnce(expectedError);
|
|
108
|
+
// Mock console.log to capture the error
|
|
109
|
+
const consoleLogSpy = jest.spyOn(console, 'log');
|
|
110
|
+
// Act
|
|
111
|
+
const result = await managementDataProvider.GetProjectByName('Any Project');
|
|
112
|
+
// Assert
|
|
113
|
+
expect(managementDataProvider.GetProjects).toHaveBeenCalledTimes(1);
|
|
114
|
+
expect(consoleLogSpy).toHaveBeenCalledWith(expectedError);
|
|
115
|
+
expect(result).toEqual({});
|
|
116
|
+
});
|
|
117
|
+
});
|
|
118
|
+
describe('GetProjectByID', () => {
|
|
119
|
+
it('should return a project when API call succeeds', async () => {
|
|
120
|
+
// Arrange
|
|
121
|
+
const projectId = 'project-123';
|
|
122
|
+
const mockResponse = { id: projectId, name: 'Project 123' };
|
|
123
|
+
tfs_1.TFSServices.getItemContent.mockResolvedValueOnce(mockResponse);
|
|
124
|
+
// Act
|
|
125
|
+
const result = await managementDataProvider.GetProjectByID(projectId);
|
|
126
|
+
// Assert
|
|
127
|
+
expect(tfs_1.TFSServices.getItemContent).toHaveBeenCalledWith(`${mockOrgUrl}_apis/projects/${projectId}`, mockToken);
|
|
128
|
+
expect(result).toEqual(mockResponse);
|
|
129
|
+
});
|
|
130
|
+
it('should throw an error when the API call fails', async () => {
|
|
131
|
+
// Arrange
|
|
132
|
+
const projectId = 'project-123';
|
|
133
|
+
const expectedError = new Error('Project API call failed');
|
|
134
|
+
tfs_1.TFSServices.getItemContent.mockRejectedValueOnce(expectedError);
|
|
135
|
+
// Act & Assert
|
|
136
|
+
await expect(managementDataProvider.GetProjectByID(projectId))
|
|
137
|
+
.rejects.toThrow('Project API call failed');
|
|
138
|
+
expect(tfs_1.TFSServices.getItemContent).toHaveBeenCalledWith(`${mockOrgUrl}_apis/projects/${projectId}`, mockToken);
|
|
139
|
+
});
|
|
140
|
+
});
|
|
141
|
+
describe('GetUserProfile', () => {
|
|
142
|
+
it('should return user profile when API call succeeds', async () => {
|
|
143
|
+
// Arrange
|
|
144
|
+
const mockResponse = {
|
|
145
|
+
id: 'user-123',
|
|
146
|
+
displayName: 'Test User',
|
|
147
|
+
emailAddress: 'test@example.com'
|
|
148
|
+
};
|
|
149
|
+
tfs_1.TFSServices.getItemContent.mockResolvedValueOnce(mockResponse);
|
|
150
|
+
// Act
|
|
151
|
+
const result = await managementDataProvider.GetUserProfile();
|
|
152
|
+
// Assert
|
|
153
|
+
expect(tfs_1.TFSServices.getItemContent).toHaveBeenCalledWith(`${mockOrgUrl}_api/_common/GetUserProfile?__v=5`, mockToken);
|
|
154
|
+
expect(result).toEqual(mockResponse);
|
|
155
|
+
});
|
|
156
|
+
it('should throw an error when the API call fails', async () => {
|
|
157
|
+
// Arrange
|
|
158
|
+
const expectedError = new Error('User profile API call failed');
|
|
159
|
+
tfs_1.TFSServices.getItemContent.mockRejectedValueOnce(expectedError);
|
|
160
|
+
// Act & Assert
|
|
161
|
+
await expect(managementDataProvider.GetUserProfile())
|
|
162
|
+
.rejects.toThrow('User profile API call failed');
|
|
163
|
+
expect(tfs_1.TFSServices.getItemContent).toHaveBeenCalledWith(`${mockOrgUrl}_api/_common/GetUserProfile?__v=5`, mockToken);
|
|
164
|
+
});
|
|
165
|
+
});
|
|
166
|
+
it('should initialize with the provided organization URL and token', () => {
|
|
167
|
+
// Arrange
|
|
168
|
+
const customOrgUrl = 'https://dev.azure.com/custom-org/';
|
|
169
|
+
const customToken = 'custom-token';
|
|
170
|
+
// Act
|
|
171
|
+
const provider = new MangementDataProvider_1.default(customOrgUrl, customToken);
|
|
172
|
+
// Assert
|
|
173
|
+
expect(provider.orgUrl).toBe(customOrgUrl);
|
|
174
|
+
expect(provider.token).toBe(customToken);
|
|
175
|
+
});
|
|
176
|
+
});
|
|
177
|
+
describe('MangementDataProvider - Additional Tests', () => {
|
|
178
|
+
let managementDataProvider;
|
|
179
|
+
const mockOrgUrl = 'https://dev.azure.com/organization/';
|
|
180
|
+
const mockToken = 'mock-token';
|
|
181
|
+
beforeEach(() => {
|
|
182
|
+
jest.clearAllMocks();
|
|
183
|
+
managementDataProvider = new MangementDataProvider_1.default(mockOrgUrl, mockToken);
|
|
184
|
+
});
|
|
185
|
+
describe('GetProjectByName - Edge Cases', () => {
|
|
186
|
+
it('should return empty object when projects list is empty', async () => {
|
|
187
|
+
// Arrange
|
|
188
|
+
const mockEmptyProjects = {
|
|
189
|
+
count: 0,
|
|
190
|
+
value: []
|
|
191
|
+
};
|
|
192
|
+
jest.spyOn(managementDataProvider, 'GetProjects').mockResolvedValueOnce(mockEmptyProjects);
|
|
193
|
+
// Act
|
|
194
|
+
const result = await managementDataProvider.GetProjectByName('Any Project');
|
|
195
|
+
// Assert
|
|
196
|
+
expect(managementDataProvider.GetProjects).toHaveBeenCalledTimes(1);
|
|
197
|
+
expect(result).toEqual({});
|
|
198
|
+
});
|
|
199
|
+
it('should handle projects response with missing value property', async () => {
|
|
200
|
+
// Arrange
|
|
201
|
+
const mockInvalidProjects = {
|
|
202
|
+
count: 0
|
|
203
|
+
// no value property
|
|
204
|
+
};
|
|
205
|
+
jest.spyOn(managementDataProvider, 'GetProjects').mockResolvedValueOnce(mockInvalidProjects);
|
|
206
|
+
// Mock console.log to capture the error
|
|
207
|
+
const consoleLogSpy = jest.spyOn(console, 'log');
|
|
208
|
+
// Act
|
|
209
|
+
const result = await managementDataProvider.GetProjectByName('Any Project');
|
|
210
|
+
// Assert
|
|
211
|
+
expect(result).toEqual({});
|
|
212
|
+
expect(consoleLogSpy).toHaveBeenCalled();
|
|
213
|
+
});
|
|
214
|
+
it('should be case sensitive when matching project names', async () => {
|
|
215
|
+
// Arrange
|
|
216
|
+
const mockProjects = {
|
|
217
|
+
count: 1,
|
|
218
|
+
value: [
|
|
219
|
+
{ id: 'project-1', name: 'Project One' }
|
|
220
|
+
]
|
|
221
|
+
};
|
|
222
|
+
jest.spyOn(managementDataProvider, 'GetProjects').mockResolvedValueOnce(mockProjects);
|
|
223
|
+
// Act
|
|
224
|
+
const result = await managementDataProvider.GetProjectByName('project one'); // lowercase vs Project One
|
|
225
|
+
// Assert
|
|
226
|
+
expect(result).toEqual({});
|
|
227
|
+
});
|
|
228
|
+
});
|
|
229
|
+
describe('GetProjectByID - Edge Cases', () => {
|
|
230
|
+
it('should handle project IDs with special characters', async () => {
|
|
231
|
+
// Arrange
|
|
232
|
+
const projectId = 'project/with-special_chars%123';
|
|
233
|
+
const mockResponse = { id: projectId, name: 'Special Project' };
|
|
234
|
+
tfs_1.TFSServices.getItemContent.mockResolvedValueOnce(mockResponse);
|
|
235
|
+
// Act
|
|
236
|
+
const result = await managementDataProvider.GetProjectByID(projectId);
|
|
237
|
+
// Assert
|
|
238
|
+
expect(tfs_1.TFSServices.getItemContent).toHaveBeenCalledWith(`${mockOrgUrl}_apis/projects/${projectId}`, mockToken);
|
|
239
|
+
expect(result).toEqual(mockResponse);
|
|
240
|
+
});
|
|
241
|
+
});
|
|
242
|
+
describe('Url Construction', () => {
|
|
243
|
+
it('should handle orgUrl with trailing slash properly', async () => {
|
|
244
|
+
// Arrange
|
|
245
|
+
const orgUrlWithTrailingSlash = 'https://dev.azure.com/organization/';
|
|
246
|
+
const provider = new MangementDataProvider_1.default(orgUrlWithTrailingSlash, mockToken);
|
|
247
|
+
const mockResponse = { value: [] };
|
|
248
|
+
tfs_1.TFSServices.getItemContent.mockResolvedValueOnce(mockResponse);
|
|
249
|
+
// Act
|
|
250
|
+
await provider.GetCllectionLinkTypes();
|
|
251
|
+
// Assert
|
|
252
|
+
expect(tfs_1.TFSServices.getItemContent).toHaveBeenCalledWith(`${orgUrlWithTrailingSlash}_apis/wit/workitemrelationtypes`, mockToken, 'get', null, null);
|
|
253
|
+
});
|
|
254
|
+
it('should handle orgUrl without trailing slash properly', async () => {
|
|
255
|
+
// Arrange
|
|
256
|
+
const orgUrlWithoutTrailingSlash = 'https://dev.azure.com/organization';
|
|
257
|
+
const provider = new MangementDataProvider_1.default(orgUrlWithoutTrailingSlash, mockToken);
|
|
258
|
+
const mockResponse = { value: [] };
|
|
259
|
+
tfs_1.TFSServices.getItemContent.mockResolvedValueOnce(mockResponse);
|
|
260
|
+
// Act
|
|
261
|
+
await provider.GetCllectionLinkTypes();
|
|
262
|
+
// Assert
|
|
263
|
+
expect(tfs_1.TFSServices.getItemContent).toHaveBeenCalledWith(`${orgUrlWithoutTrailingSlash}_apis/wit/workitemrelationtypes`, mockToken, 'get', null, null);
|
|
264
|
+
});
|
|
265
|
+
});
|
|
266
|
+
describe('GetUserProfile - Edge Cases', () => {
|
|
267
|
+
it('should handle unusual profile data structure', async () => {
|
|
268
|
+
// Arrange
|
|
269
|
+
const unusualProfileData = {
|
|
270
|
+
// Missing typical fields like displayName
|
|
271
|
+
id: 'user-123',
|
|
272
|
+
// Contains unexpected fields
|
|
273
|
+
unusualField: 'unusual value',
|
|
274
|
+
nestedData: {
|
|
275
|
+
someProperty: 'some value'
|
|
276
|
+
}
|
|
277
|
+
};
|
|
278
|
+
tfs_1.TFSServices.getItemContent.mockResolvedValueOnce(unusualProfileData);
|
|
279
|
+
// Act
|
|
280
|
+
const result = await managementDataProvider.GetUserProfile();
|
|
281
|
+
// Assert
|
|
282
|
+
expect(result).toEqual(unusualProfileData);
|
|
283
|
+
});
|
|
284
|
+
});
|
|
285
|
+
});
|
|
31
286
|
//# sourceMappingURL=managmentDataProvider.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"managmentDataProvider.test.js","sourceRoot":"","sources":["../../../src/modules/test/managmentDataProvider.test.ts"],"names":[],"mappings":";;AAAA,6BAA8C;AAE9C,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAC;AAC3B,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAEvB,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;AACnC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;AAC9B,MAAM,yBAAyB,GAAG,IAAI,WAAyB,CAAC,MAAM,EAAC,KAAK,CAAC,CAAC;AAG9E,QAAQ,CAAC,iCAAiC,EAAE,GAAG,EAAE;IAC/C,IAAI,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;QACxD,IAAI,qBAAqB,GAAG,MAAM,yBAAyB,CAAC,wBAAwB,EAAE,CAAC;QACvF,IAAI,IAAI,GAAG,MAAM,qBAAqB,CAAC,WAAW,EAAE,CAAC;QACrD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;QAC/C,IAAI,qBAAqB,GAAG,MAAM,yBAAyB,CAAC,wBAAwB,EAAE,CAAC;QACvF,IAAI,IAAI,GAAG,MAAM,qBAAqB,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QACjE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,6BAA6B,EAAE,KAAK,IAAI,EAAE;QAC7C,IAAI,qBAAqB,GAAG,MAAM,yBAAyB,CAAC,wBAAwB,EAAE,CAAC;QACvF,IAAI,IAAI,GAAG,MAAM,qBAAqB,CAAC,cAAc,CACnD,sCAAsC,CACvC,CAAC;QACF,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,0CAA0C,EAAE,KAAK,IAAI,EAAE;QAC1D,IAAI,qBAAqB,GAAG,MAAM,yBAAyB,CAAC,wBAAwB,EAAE,CAAC;QACvF,IAAI,IAAI,GAAG,MAAM,qBAAqB,CAAC,qBAAqB,EAAE,CAAC;QAC/D,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC,CAAC,UAAU"}
|
|
1
|
+
{"version":3,"file":"managmentDataProvider.test.js","sourceRoot":"","sources":["../../../src/modules/test/managmentDataProvider.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,53 +1,237 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const
|
|
4
|
-
require(
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
describe('
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
3
|
+
const tfs_1 = require("../../helpers/tfs");
|
|
4
|
+
const PipelinesDataProvider_1 = require("../PipelinesDataProvider");
|
|
5
|
+
const logger_1 = require("../../utils/logger");
|
|
6
|
+
jest.mock('../../helpers/tfs');
|
|
7
|
+
jest.mock('../../utils/logger');
|
|
8
|
+
jest.mock('../GitDataProvider');
|
|
9
|
+
describe('PipelinesDataProvider', () => {
|
|
10
|
+
let pipelinesDataProvider;
|
|
11
|
+
const mockOrgUrl = 'https://dev.azure.com/orgname/';
|
|
12
|
+
const mockToken = 'mock-token';
|
|
13
|
+
beforeEach(() => {
|
|
14
|
+
jest.clearAllMocks();
|
|
15
|
+
pipelinesDataProvider = new PipelinesDataProvider_1.default(mockOrgUrl, mockToken);
|
|
14
16
|
});
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
17
|
+
describe('isMatchingPipeline', () => {
|
|
18
|
+
// Create test method to access private method
|
|
19
|
+
const invokeIsMatchingPipeline = (fromPipeline, targetPipeline, searchPrevPipelineFromDifferentCommit) => {
|
|
20
|
+
return pipelinesDataProvider.isMatchingPipeline(fromPipeline, targetPipeline, searchPrevPipelineFromDifferentCommit);
|
|
21
|
+
};
|
|
22
|
+
it('should return false when repository IDs are different', () => {
|
|
23
|
+
// Arrange
|
|
24
|
+
const fromPipeline = {
|
|
25
|
+
resources: {
|
|
26
|
+
repositories: {
|
|
27
|
+
'0': {
|
|
28
|
+
self: {
|
|
29
|
+
repository: { id: 'repo1' },
|
|
30
|
+
version: 'v1',
|
|
31
|
+
refName: 'refs/heads/main'
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
const targetPipeline = {
|
|
38
|
+
resources: {
|
|
39
|
+
repositories: {
|
|
40
|
+
'0': {
|
|
41
|
+
self: {
|
|
42
|
+
repository: { id: 'repo2' },
|
|
43
|
+
version: 'v1',
|
|
44
|
+
refName: 'refs/heads/main'
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
// Act
|
|
51
|
+
const result = invokeIsMatchingPipeline(fromPipeline, targetPipeline, false);
|
|
52
|
+
// Assert
|
|
53
|
+
expect(result).toBe(false);
|
|
54
|
+
});
|
|
55
|
+
it('should return true when versions are the same and searchPrevPipelineFromDifferentCommit is false', () => {
|
|
56
|
+
// Arrange
|
|
57
|
+
const fromPipeline = {
|
|
58
|
+
resources: {
|
|
59
|
+
repositories: {
|
|
60
|
+
'0': {
|
|
61
|
+
self: {
|
|
62
|
+
repository: { id: 'repo1' },
|
|
63
|
+
version: 'v1',
|
|
64
|
+
refName: 'refs/heads/main'
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
const targetPipeline = {
|
|
71
|
+
resources: {
|
|
72
|
+
repositories: {
|
|
73
|
+
'0': {
|
|
74
|
+
self: {
|
|
75
|
+
repository: { id: 'repo1' },
|
|
76
|
+
version: 'v1',
|
|
77
|
+
refName: 'refs/heads/main'
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
};
|
|
83
|
+
// Act
|
|
84
|
+
const result = invokeIsMatchingPipeline(fromPipeline, targetPipeline, false);
|
|
85
|
+
// Assert
|
|
86
|
+
expect(result).toBe(true);
|
|
87
|
+
});
|
|
88
|
+
it('should return false when versions are the same and searchPrevPipelineFromDifferentCommit is true', () => {
|
|
89
|
+
// Arrange
|
|
90
|
+
const fromPipeline = {
|
|
91
|
+
resources: {
|
|
92
|
+
repositories: {
|
|
93
|
+
'0': {
|
|
94
|
+
self: {
|
|
95
|
+
repository: { id: 'repo1' },
|
|
96
|
+
version: 'v1',
|
|
97
|
+
refName: 'refs/heads/main'
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
};
|
|
103
|
+
const targetPipeline = {
|
|
104
|
+
resources: {
|
|
105
|
+
repositories: {
|
|
106
|
+
'0': {
|
|
107
|
+
self: {
|
|
108
|
+
repository: { id: 'repo1' },
|
|
109
|
+
version: 'v1',
|
|
110
|
+
refName: 'refs/heads/main'
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
};
|
|
116
|
+
// Act
|
|
117
|
+
const result = invokeIsMatchingPipeline(fromPipeline, targetPipeline, true);
|
|
118
|
+
// Assert
|
|
119
|
+
expect(result).toBe(false);
|
|
120
|
+
});
|
|
121
|
+
it('should return true when refNames match but versions differ', () => {
|
|
122
|
+
// Arrange
|
|
123
|
+
const fromPipeline = {
|
|
124
|
+
resources: {
|
|
125
|
+
repositories: {
|
|
126
|
+
'0': {
|
|
127
|
+
self: {
|
|
128
|
+
repository: { id: 'repo1' },
|
|
129
|
+
version: 'v1',
|
|
130
|
+
refName: 'refs/heads/main'
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
};
|
|
136
|
+
const targetPipeline = {
|
|
137
|
+
resources: {
|
|
138
|
+
repositories: {
|
|
139
|
+
'0': {
|
|
140
|
+
self: {
|
|
141
|
+
repository: { id: 'repo1' },
|
|
142
|
+
version: 'v2',
|
|
143
|
+
refName: 'refs/heads/main'
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
};
|
|
149
|
+
// Act
|
|
150
|
+
const result = invokeIsMatchingPipeline(fromPipeline, targetPipeline, true);
|
|
151
|
+
// Assert
|
|
152
|
+
expect(result).toBe(true);
|
|
153
|
+
});
|
|
154
|
+
it('should use __designer_repo when self is not available', () => {
|
|
155
|
+
// Arrange
|
|
156
|
+
const fromPipeline = {
|
|
157
|
+
resources: {
|
|
158
|
+
repositories: {
|
|
159
|
+
__designer_repo: {
|
|
160
|
+
repository: { id: 'repo1' },
|
|
161
|
+
version: 'v1',
|
|
162
|
+
refName: 'refs/heads/main'
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
};
|
|
167
|
+
const targetPipeline = {
|
|
168
|
+
resources: {
|
|
169
|
+
repositories: {
|
|
170
|
+
__designer_repo: {
|
|
171
|
+
repository: { id: 'repo1' },
|
|
172
|
+
version: 'v1',
|
|
173
|
+
refName: 'refs/heads/main'
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
};
|
|
178
|
+
// Act
|
|
179
|
+
const result = invokeIsMatchingPipeline(fromPipeline, targetPipeline, false);
|
|
180
|
+
// Assert
|
|
181
|
+
expect(result).toBe(true);
|
|
182
|
+
});
|
|
19
183
|
});
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
184
|
+
describe('getPipelineRunDetails', () => {
|
|
185
|
+
it('should call TFSServices.getItemContent with correct parameters', async () => {
|
|
186
|
+
// Arrange
|
|
187
|
+
const projectName = 'project1';
|
|
188
|
+
const pipelineId = 123;
|
|
189
|
+
const runId = 456;
|
|
190
|
+
const mockResponse = { id: runId, resources: {} };
|
|
191
|
+
tfs_1.TFSServices.getItemContent.mockResolvedValueOnce(mockResponse);
|
|
192
|
+
// Act
|
|
193
|
+
const result = await pipelinesDataProvider.getPipelineRunDetails(projectName, pipelineId, runId);
|
|
194
|
+
// Assert
|
|
195
|
+
expect(tfs_1.TFSServices.getItemContent).toHaveBeenCalledWith(`${mockOrgUrl}${projectName}/_apis/pipelines/${pipelineId}/runs/${runId}`, mockToken);
|
|
196
|
+
expect(result).toEqual(mockResponse);
|
|
197
|
+
});
|
|
24
198
|
});
|
|
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
|
-
|
|
199
|
+
describe('GetPipelineRunHistory', () => {
|
|
200
|
+
it('should return filtered pipeline run history', async () => {
|
|
201
|
+
// Arrange
|
|
202
|
+
const projectName = 'project1';
|
|
203
|
+
const pipelineId = '123';
|
|
204
|
+
const mockResponse = {
|
|
205
|
+
value: [
|
|
206
|
+
{ id: 1, result: 'succeeded' },
|
|
207
|
+
{ id: 2, result: 'failed' },
|
|
208
|
+
{ id: 3, result: 'canceled' },
|
|
209
|
+
{ id: 4, result: 'succeeded' }
|
|
210
|
+
]
|
|
211
|
+
};
|
|
212
|
+
tfs_1.TFSServices.getItemContent.mockResolvedValueOnce(mockResponse);
|
|
213
|
+
// Act
|
|
214
|
+
const result = await pipelinesDataProvider.GetPipelineRunHistory(projectName, pipelineId);
|
|
215
|
+
// Assert
|
|
216
|
+
expect(tfs_1.TFSServices.getItemContent).toHaveBeenCalledWith(`${mockOrgUrl}${projectName}/_apis/pipelines/${pipelineId}/runs`, mockToken, 'get', null, null);
|
|
217
|
+
expect(result).toEqual({
|
|
218
|
+
count: 4, // Note: Current filter logic keeps all runs where result is not 'failed' AND not 'canceled'
|
|
219
|
+
value: mockResponse.value
|
|
220
|
+
});
|
|
221
|
+
});
|
|
222
|
+
it('should handle API errors gracefully', async () => {
|
|
223
|
+
// Arrange
|
|
224
|
+
const projectName = 'project1';
|
|
225
|
+
const pipelineId = '123';
|
|
226
|
+
const expectedError = new Error('API error');
|
|
227
|
+
tfs_1.TFSServices.getItemContent.mockRejectedValueOnce(expectedError);
|
|
228
|
+
// Act
|
|
229
|
+
const result = await pipelinesDataProvider.GetPipelineRunHistory(projectName, pipelineId);
|
|
230
|
+
// Assert
|
|
231
|
+
expect(tfs_1.TFSServices.getItemContent).toHaveBeenCalledWith(`${mockOrgUrl}${projectName}/_apis/pipelines/${pipelineId}/runs`, mockToken, 'get', null, null);
|
|
232
|
+
expect(logger_1.default.error).toHaveBeenCalledWith(`Could not fetch Pipeline Run History: ${expectedError.message}`);
|
|
233
|
+
expect(result).toBeUndefined();
|
|
234
|
+
});
|
|
51
235
|
});
|
|
52
236
|
});
|
|
53
237
|
//# sourceMappingURL=pipelineDataProvider.test.js.map
|