@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.
Files changed (49) hide show
  1. package/bin/helpers/helper.js.map +1 -1
  2. package/bin/helpers/test/tfs.test.d.ts +1 -0
  3. package/bin/helpers/test/tfs.test.js +613 -0
  4. package/bin/helpers/test/tfs.test.js.map +1 -0
  5. package/bin/helpers/tfs.js +4 -8
  6. package/bin/helpers/tfs.js.map +1 -1
  7. package/bin/modules/GitDataProvider.js.map +1 -1
  8. package/bin/modules/PipelinesDataProvider.js +3 -2
  9. package/bin/modules/PipelinesDataProvider.js.map +1 -1
  10. package/bin/modules/ResultDataProvider.d.ts +199 -17
  11. package/bin/modules/ResultDataProvider.js +611 -195
  12. package/bin/modules/ResultDataProvider.js.map +1 -1
  13. package/bin/modules/TestDataProvider.js +7 -7
  14. package/bin/modules/TestDataProvider.js.map +1 -1
  15. package/bin/modules/TicketsDataProvider.d.ts +1 -1
  16. package/bin/modules/TicketsDataProvider.js +3 -2
  17. package/bin/modules/TicketsDataProvider.js.map +1 -1
  18. package/bin/modules/test/JfrogDataProvider.test.d.ts +1 -0
  19. package/bin/modules/test/JfrogDataProvider.test.js +110 -0
  20. package/bin/modules/test/JfrogDataProvider.test.js.map +1 -0
  21. package/bin/modules/test/ResultDataProvider.test.d.ts +1 -0
  22. package/bin/modules/test/ResultDataProvider.test.js +478 -0
  23. package/bin/modules/test/ResultDataProvider.test.js.map +1 -0
  24. package/bin/modules/test/gitDataProvider.test.js +424 -120
  25. package/bin/modules/test/gitDataProvider.test.js.map +1 -1
  26. package/bin/modules/test/managmentDataProvider.test.js +283 -28
  27. package/bin/modules/test/managmentDataProvider.test.js.map +1 -1
  28. package/bin/modules/test/pipelineDataProvider.test.js +229 -45
  29. package/bin/modules/test/pipelineDataProvider.test.js.map +1 -1
  30. package/bin/modules/test/testDataProvider.test.js +225 -81
  31. package/bin/modules/test/testDataProvider.test.js.map +1 -1
  32. package/bin/modules/test/ticketsDataProvider.test.js +310 -82
  33. package/bin/modules/test/ticketsDataProvider.test.js.map +1 -1
  34. package/package.json +1 -1
  35. package/src/helpers/helper.ts +16 -14
  36. package/src/helpers/test/tfs.test.ts +748 -0
  37. package/src/helpers/tfs.ts +4 -8
  38. package/src/modules/GitDataProvider.ts +10 -10
  39. package/src/modules/PipelinesDataProvider.ts +2 -2
  40. package/src/modules/ResultDataProvider.ts +815 -260
  41. package/src/modules/TestDataProvider.ts +8 -8
  42. package/src/modules/TicketsDataProvider.ts +5 -9
  43. package/src/modules/test/JfrogDataProvider.test.ts +171 -0
  44. package/src/modules/test/ResultDataProvider.test.ts +581 -0
  45. package/src/modules/test/gitDataProvider.test.ts +671 -187
  46. package/src/modules/test/managmentDataProvider.test.ts +386 -26
  47. package/src/modules/test/pipelineDataProvider.test.ts +281 -52
  48. package/src/modules/test/testDataProvider.test.ts +307 -105
  49. package/src/modules/test/ticketsDataProvider.test.ts +425 -129
@@ -1,94 +1,322 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- const __1 = require("../..");
4
- require("dotenv").config();
5
- jest.setTimeout(60000);
6
- const orgUrl = process.env.ORG_URL;
7
- const token = process.env.PAT;
8
- const dgDataProviderAzureDevOps = new __1.default(orgUrl, token);
9
- const wiql = "SELECT [System.Id],[System.WorkItemType],[System.Title],[System.AssignedTo],[System.State],[System.Tags] FROM workitems WHERE [System.TeamProject]=@project";
10
- describe("ticket module - tests", () => {
11
- test("should create a new work item", async () => {
12
- let TicketDataProvider = await dgDataProviderAzureDevOps.getTicketsDataProvider();
13
- let body = [{
14
- op: "add",
15
- path: "/fields/System.IterationPath",
16
- value: "tests"
17
- },
18
- {
19
- op: "add",
20
- path: "/fields/System.State",
21
- value: "New"
22
- },
23
- {
24
- op: "add",
25
- path: "/fields/System.AreaPath",
26
- value: "tests"
27
- },
28
- {
29
- op: "add",
30
- path: "/fields/System.Title",
31
- value: "new-test-title2"
32
- },
33
- {
34
- op: "add",
35
- path: "/fields/System.Tags",
36
- value: "tag-test"
37
- },
38
- {
39
- op: "add",
40
- path: "/fields/System.AssignedTo",
41
- value: "denispankove"
42
- }];
43
- let res = await TicketDataProvider.CreateNewWorkItem("tests", body, "Epic", true);
44
- expect(typeof res.id).toBe("number");
45
- body[3].value = "edited";
46
- let updatedWI = await TicketDataProvider.UpdateWorkItem("tests", body, res.id, true);
47
- expect(updatedWI.fields["System.Title"]).toBe("edited");
3
+ const tfs_1 = require("../../helpers/tfs");
4
+ const TicketsDataProvider_1 = require("../TicketsDataProvider");
5
+ const logger_1 = require("../../utils/logger");
6
+ const tfs_data_1 = require("../../models/tfs-data");
7
+ jest.mock('../../helpers/tfs');
8
+ jest.mock('../../utils/logger');
9
+ jest.mock('../../helpers/helper');
10
+ describe('TicketsDataProvider', () => {
11
+ let ticketsDataProvider;
12
+ const mockOrgUrl = 'https://dev.azure.com/organization/';
13
+ const mockToken = 'mock-token';
14
+ const mockProject = 'test-project';
15
+ beforeEach(() => {
16
+ jest.clearAllMocks();
17
+ ticketsDataProvider = new TicketsDataProvider_1.default(mockOrgUrl, mockToken);
48
18
  });
49
- test("should return shared queires", async () => {
50
- let TicketDataProvider = await dgDataProviderAzureDevOps.getTicketsDataProvider();
51
- let json = await TicketDataProvider.GetSharedQueries("tests", "");
52
- expect(json.length).toBeGreaterThan(1);
19
+ describe('FetchImageAsBase64', () => {
20
+ it('should fetch image as base64', async () => {
21
+ // Arrange
22
+ const mockUrl = 'https://example.com/image.jpg';
23
+ const mockBase64 = 'base64-encoded-image';
24
+ tfs_1.TFSServices.fetchAzureDevOpsImageAsBase64.mockResolvedValueOnce(mockBase64);
25
+ // Act
26
+ const result = await ticketsDataProvider.FetchImageAsBase64(mockUrl);
27
+ // Assert
28
+ expect(tfs_1.TFSServices.fetchAzureDevOpsImageAsBase64).toHaveBeenCalledWith(mockUrl, mockToken, 'get', null);
29
+ expect(result).toBe(mockBase64);
30
+ });
53
31
  });
54
- test("should return query results", async () => {
55
- let TicketDataProvider = await dgDataProviderAzureDevOps.getTicketsDataProvider();
56
- let json = await TicketDataProvider.GetSharedQueries("tests", "");
57
- let query = json.find((o) => o.wiql != undefined);
58
- let result = await TicketDataProvider.GetQueryResultsByWiqlHref(query.wiql.href, "tests");
59
- expect(result.length).toBeGreaterThanOrEqual(1);
32
+ describe('GetWorkItem', () => {
33
+ it('should fetch work item with correct URL', async () => {
34
+ // Arrange
35
+ const mockId = '123';
36
+ const mockWorkItem = { id: 123, fields: { 'System.Title': 'Test Work Item' } };
37
+ tfs_1.TFSServices.getItemContent.mockResolvedValueOnce(mockWorkItem);
38
+ // Act
39
+ const result = await ticketsDataProvider.GetWorkItem(mockProject, mockId);
40
+ // Assert
41
+ expect(tfs_1.TFSServices.getItemContent).toHaveBeenCalledWith(`${mockOrgUrl}${mockProject}/_apis/wit/workitems/${mockId}?$expand=All`, mockToken);
42
+ expect(result).toEqual(mockWorkItem);
43
+ });
60
44
  });
61
- test("should return query results by query id", async () => {
62
- let TicketDataProvider = await dgDataProviderAzureDevOps.getTicketsDataProvider();
63
- let result = await TicketDataProvider.GetQueryResultById("08e044be-b9bc-4962-99c9-ffebb47ff95a", "tests");
64
- expect(result.length).toBeGreaterThanOrEqual(1);
45
+ describe('GetLinksByIds', () => {
46
+ it('should retrieve links by ids', async () => {
47
+ // Arrange
48
+ const mockIds = [1, 2];
49
+ const mockWorkItems = [
50
+ { id: 1, fields: { 'System.Title': 'Item 1' } },
51
+ { id: 2, fields: { 'System.Title': 'Item 2' } }
52
+ ];
53
+ const mockLinksMap = new Map();
54
+ mockLinksMap.set('1', { id: '1', rels: ['3'] });
55
+ mockLinksMap.set('2', { id: '2', rels: [] });
56
+ const mockRelatedItems = [{ id: 3, fields: { 'System.Title': 'Related Item' } }];
57
+ const mockTraceItem = { id: '1', title: 'Item 1', url: 'url', customerId: 'customer', links: [] };
58
+ jest.spyOn(ticketsDataProvider, 'PopulateWorkItemsByIds').mockResolvedValueOnce(mockWorkItems);
59
+ jest.spyOn(ticketsDataProvider, 'GetRelationsIds').mockResolvedValueOnce(mockLinksMap);
60
+ jest.spyOn(ticketsDataProvider, 'GetParentLink')
61
+ .mockResolvedValueOnce(mockTraceItem)
62
+ .mockResolvedValueOnce({ id: '2', title: 'Item 2', url: 'url', customerId: 'customer', links: [] });
63
+ jest.spyOn(ticketsDataProvider, 'PopulateWorkItemsByIds').mockResolvedValueOnce(mockRelatedItems);
64
+ jest.spyOn(ticketsDataProvider, 'GetLinks').mockResolvedValueOnce([]);
65
+ // Act
66
+ const result = await ticketsDataProvider.GetLinksByIds(mockProject, mockIds);
67
+ // Assert
68
+ expect(result.length).toBe(2);
69
+ expect(ticketsDataProvider.PopulateWorkItemsByIds).toHaveBeenCalledWith(mockIds, mockProject);
70
+ expect(ticketsDataProvider.GetRelationsIds).toHaveBeenCalledWith(mockWorkItems);
71
+ });
65
72
  });
66
- test("should return wi base on wiql string", async () => {
67
- let TicketDataProvider = await dgDataProviderAzureDevOps.getTicketsDataProvider();
68
- let result = await TicketDataProvider.GetQueryResultsByWiqlString(wiql, "tests");
69
- expect(result.workItems.length).toBeGreaterThanOrEqual(1);
73
+ describe('GetSharedQueries', () => {
74
+ it('should fetch STD shared queries with correct URL', async () => {
75
+ // Arrange
76
+ const mockPath = '';
77
+ const mockDocType = 'STD';
78
+ const mockQueries = { name: 'Query 1' };
79
+ const mockResponse = { reqTestTree: {}, testReqTree: {} };
80
+ tfs_1.TFSServices.getItemContent.mockResolvedValueOnce(mockQueries);
81
+ jest.spyOn(ticketsDataProvider, 'fetchLinkedQueries').mockResolvedValueOnce(mockResponse);
82
+ // Act
83
+ const result = await ticketsDataProvider.GetSharedQueries(mockProject, mockPath, mockDocType);
84
+ // Assert
85
+ expect(tfs_1.TFSServices.getItemContent).toHaveBeenCalledWith(`${mockOrgUrl}${mockProject}/_apis/wit/queries/Shared%20Queries?$depth=2&$expand=all`, mockToken);
86
+ expect(result).toEqual(mockResponse);
87
+ });
88
+ it('should fetch SVD shared queries and call fetchAnyQueries', async () => {
89
+ // Arrange
90
+ const mockPath = 'Custom Path';
91
+ const mockDocType = 'SVD';
92
+ const mockQueries = { name: 'Query 1' };
93
+ const mockResponse = { systemOverviewQueryTree: {}, knownBugsQueryTree: {} };
94
+ tfs_1.TFSServices.getItemContent.mockResolvedValueOnce(mockQueries);
95
+ jest.spyOn(ticketsDataProvider, 'fetchAnyQueries').mockResolvedValueOnce(mockResponse);
96
+ // Act
97
+ const result = await ticketsDataProvider.GetSharedQueries(mockProject, mockPath, mockDocType);
98
+ // Assert
99
+ expect(tfs_1.TFSServices.getItemContent).toHaveBeenCalledWith(`${mockOrgUrl}${mockProject}/_apis/wit/queries/${mockPath}?$depth=2&$expand=all`, mockToken);
100
+ expect(result).toEqual(mockResponse);
101
+ });
102
+ it('should handle errors', async () => {
103
+ // Arrange
104
+ const mockPath = '';
105
+ const mockError = new Error('API error');
106
+ tfs_1.TFSServices.getItemContent.mockImplementationOnce(() => {
107
+ return Promise.reject(mockError);
108
+ });
109
+ // Act & Assert
110
+ await expect(ticketsDataProvider.GetSharedQueries(mockProject, mockPath))
111
+ .rejects.toThrow('API error');
112
+ expect(logger_1.default.error).toHaveBeenCalled();
113
+ });
70
114
  });
71
- test("should return populated work items array", async () => {
72
- let TicketDataProvider = await dgDataProviderAzureDevOps.getTicketsDataProvider();
73
- let result = await TicketDataProvider.GetQueryResultsByWiqlString(wiql, "tests");
74
- let wiarray = result.workItems.map((o) => o.id);
75
- let res = await TicketDataProvider.PopulateWorkItemsByIds(wiarray, "tests");
76
- expect(res.length).toBeGreaterThanOrEqual(1);
115
+ describe('GetQueryResultsFromWiql', () => {
116
+ it('should handle OneHop query with table format', async () => {
117
+ // Arrange
118
+ const mockWiqlHref = 'https://example.com/wiql';
119
+ const mockTestCaseMap = new Map();
120
+ const mockQueryResult = {
121
+ queryType: tfs_data_1.QueryType.OneHop,
122
+ columns: [],
123
+ workItemRelations: [{ source: null, target: { id: 1, url: 'url' } }]
124
+ };
125
+ const mockTableResult = {
126
+ sourceTargetsMap: new Map(),
127
+ sortingSourceColumnsMap: new Map(),
128
+ sortingTargetsColumnsMap: new Map()
129
+ };
130
+ tfs_1.TFSServices.getItemContent.mockResolvedValueOnce(mockQueryResult);
131
+ jest.spyOn(ticketsDataProvider, 'parseDirectLinkedQueryResultForTableFormat')
132
+ .mockResolvedValueOnce(mockTableResult);
133
+ // Act
134
+ const result = await ticketsDataProvider.GetQueryResultsFromWiql(mockWiqlHref, true, mockTestCaseMap);
135
+ // Assert
136
+ expect(tfs_1.TFSServices.getItemContent).toHaveBeenCalledWith(mockWiqlHref, mockToken);
137
+ expect(result).toEqual(mockTableResult);
138
+ });
139
+ it('should throw error when wiqlHref is empty', async () => {
140
+ // Arrange
141
+ const mockTestCaseMap = new Map();
142
+ // Act & Assert
143
+ const result = await ticketsDataProvider.GetQueryResultsFromWiql('', false, mockTestCaseMap);
144
+ expect(logger_1.default.error).toHaveBeenCalled();
145
+ expect(result).toBeUndefined();
146
+ });
77
147
  });
78
- test("should return list of attachments", async () => {
79
- let TicketDataProvider = await dgDataProviderAzureDevOps.getTicketsDataProvider();
80
- let attachList = await TicketDataProvider.GetWorkitemAttachments("tests", "538");
81
- expect(attachList.length > 0).toBeDefined();
148
+ describe('GetModeledQuery', () => {
149
+ it('should structure query list correctly', () => {
150
+ // Arrange
151
+ const mockQueryList = [
152
+ {
153
+ name: 'Query 1',
154
+ _links: { wiql: 'http://example.com/wiql1' },
155
+ id: 'q1'
156
+ },
157
+ {
158
+ name: 'Query 2',
159
+ _links: { wiql: null },
160
+ id: 'q2'
161
+ }
162
+ ];
163
+ // Act
164
+ const result = ticketsDataProvider.GetModeledQuery(mockQueryList);
165
+ // Assert
166
+ expect(result).toEqual([
167
+ { queryName: 'Query 1', wiql: 'http://example.com/wiql1', id: 'q1' },
168
+ { queryName: 'Query 2', wiql: null, id: 'q2' }
169
+ ]);
170
+ });
82
171
  });
83
- test("should return Json data of the attachment", async () => {
84
- let TicketDataProvider = await dgDataProviderAzureDevOps.getTicketsDataProvider();
85
- let attachedData = await TicketDataProvider.GetWorkitemAttachmentsJSONData("tests", "14933c55-6d84-499c-88db-55202f16dd46");
86
- expect(JSON.stringify(attachedData).length > 0).toBeDefined();
172
+ describe('PopulateWorkItemsByIds', () => {
173
+ it('should fetch work items in batches of 200', async () => {
174
+ // Arrange
175
+ const mockIds = Array.from({ length: 250 }, (_, i) => i + 1);
176
+ const mockResponse1 = { value: mockIds.slice(0, 200).map(id => ({ id })) };
177
+ const mockResponse2 = { value: mockIds.slice(200).map(id => ({ id })) };
178
+ tfs_1.TFSServices.getItemContent
179
+ .mockResolvedValueOnce(mockResponse1)
180
+ .mockResolvedValueOnce(mockResponse2);
181
+ // Act
182
+ const result = await ticketsDataProvider.PopulateWorkItemsByIds(mockIds, mockProject);
183
+ // Assert
184
+ expect(tfs_1.TFSServices.getItemContent).toHaveBeenCalledTimes(2);
185
+ expect(result.length).toBe(250);
186
+ });
187
+ it('should handle errors and return empty array', async () => {
188
+ // Arrange
189
+ const mockIds = [1, 2, 3];
190
+ const mockError = new Error('API error');
191
+ tfs_1.TFSServices.getItemContent.mockRejectedValueOnce(mockError);
192
+ // Act
193
+ const result = await ticketsDataProvider.PopulateWorkItemsByIds(mockIds, mockProject);
194
+ // Assert
195
+ expect(result).toEqual([]);
196
+ expect(logger_1.default.error).toHaveBeenCalled();
197
+ });
87
198
  });
88
- test("should return list of id & link object", async () => {
89
- let TicketDataProvider = await dgDataProviderAzureDevOps.getTicketsDataProvider();
90
- let attachList = await TicketDataProvider.GetLinksByIds("tests", [535]);
91
- expect(attachList.length).toBeGreaterThan(0);
199
+ describe('GetIterationsByTeamName', () => {
200
+ it('should fetch iterations with team name specified', async () => {
201
+ // Arrange
202
+ const mockTeamName = 'test-team';
203
+ const mockIterations = ['iteration1', 'iteration2'];
204
+ tfs_1.TFSServices.getItemContent.mockResolvedValueOnce(mockIterations);
205
+ // Act
206
+ const result = await ticketsDataProvider.GetIterationsByTeamName(mockProject, mockTeamName);
207
+ // Assert
208
+ expect(tfs_1.TFSServices.getItemContent).toHaveBeenCalledWith(`${mockOrgUrl}${mockProject}/${mockTeamName}/_apis/work/teamsettings/iterations`, mockToken, 'get');
209
+ expect(result).toEqual(mockIterations);
210
+ });
211
+ it('should fetch iterations without team name', async () => {
212
+ // Arrange
213
+ const mockTeamName = '';
214
+ const mockIterations = ['iteration1', 'iteration2'];
215
+ tfs_1.TFSServices.getItemContent.mockResolvedValueOnce(mockIterations);
216
+ // Act
217
+ const result = await ticketsDataProvider.GetIterationsByTeamName(mockProject, mockTeamName);
218
+ // Assert
219
+ expect(tfs_1.TFSServices.getItemContent).toHaveBeenCalledWith(`${mockOrgUrl}${mockProject}/_apis/work/teamsettings/iterations`, mockToken, 'get');
220
+ expect(result).toEqual(mockIterations);
221
+ });
92
222
  });
93
- }); //describe
223
+ describe('CreateNewWorkItem', () => {
224
+ it('should create work item with correct parameters', async () => {
225
+ // Arrange
226
+ const mockWiBody = [{ op: 'add', path: '/fields/System.Title', value: 'New Item' }];
227
+ const mockWiType = 'Bug';
228
+ const mockByPass = true;
229
+ const mockResponse = { id: 123, fields: { 'System.Title': 'New Item' } };
230
+ tfs_1.TFSServices.getItemContent.mockResolvedValueOnce(mockResponse);
231
+ // Act
232
+ const result = await ticketsDataProvider.CreateNewWorkItem(mockProject, mockWiBody, mockWiType, mockByPass);
233
+ // Assert
234
+ expect(tfs_1.TFSServices.getItemContent).toHaveBeenCalledWith(`${mockOrgUrl}${mockProject}/_apis/wit/workitems/$${mockWiType}?bypassRules=true`, mockToken, 'POST', mockWiBody, {
235
+ 'Content-Type': 'application/json-patch+json'
236
+ });
237
+ expect(result).toEqual(mockResponse);
238
+ });
239
+ });
240
+ describe('UpdateWorkItem', () => {
241
+ it('should update work item with correct parameters', async () => {
242
+ // Arrange
243
+ const mockWiBody = [{ op: 'add', path: '/fields/System.Title', value: 'Updated Item' }];
244
+ const mockWorkItemId = 123;
245
+ const mockByPass = true;
246
+ const mockResponse = { id: 123, fields: { 'System.Title': 'Updated Item' } };
247
+ tfs_1.TFSServices.getItemContent.mockResolvedValueOnce(mockResponse);
248
+ // Act
249
+ const result = await ticketsDataProvider.UpdateWorkItem(mockProject, mockWiBody, mockWorkItemId, mockByPass);
250
+ // Assert
251
+ expect(tfs_1.TFSServices.getItemContent).toHaveBeenCalledWith(`${mockOrgUrl}${mockProject}/_apis/wit/workitems/${mockWorkItemId}?bypassRules=true`, mockToken, 'patch', mockWiBody, {
252
+ 'Content-Type': 'application/json-patch+json'
253
+ });
254
+ expect(result).toEqual(mockResponse);
255
+ });
256
+ });
257
+ describe('GetWorkitemAttachments', () => {
258
+ it('should return attachments for work item', async () => {
259
+ // Arrange
260
+ const mockId = '123';
261
+ const mockWorkItem = {
262
+ relations: [
263
+ {
264
+ rel: 'AttachedFile',
265
+ url: 'https://example.com/attachment/1',
266
+ attributes: { name: 'file.txt' }
267
+ }
268
+ ]
269
+ };
270
+ // Mock the TFSServices.getItemContent directly to return our mock data
271
+ // This is what will be called by the new TicketsDataProvider instance
272
+ tfs_1.TFSServices.getItemContent.mockResolvedValueOnce(mockWorkItem);
273
+ // Act
274
+ const result = await ticketsDataProvider.GetWorkitemAttachments(mockProject, mockId);
275
+ // Assert
276
+ expect(tfs_1.TFSServices.getItemContent).toHaveBeenCalledWith(`${mockOrgUrl}${mockProject}/_apis/wit/workitems/${mockId}?$expand=All`, mockToken);
277
+ expect(result.length).toBe(1);
278
+ // Check that the downloadUrl was added correctly
279
+ expect(result[0]).toHaveProperty('downloadUrl', 'https://example.com/attachment/1/file.txt');
280
+ expect(result[0].rel).toBe('AttachedFile');
281
+ });
282
+ it('should handle work item with no relations', async () => {
283
+ // Arrange
284
+ const mockId = '123';
285
+ const mockWorkItem = { relations: null };
286
+ jest.spyOn(ticketsDataProvider, 'GetWorkItem').mockResolvedValueOnce(mockWorkItem);
287
+ // Act
288
+ const result = await ticketsDataProvider.GetWorkitemAttachments(mockProject, mockId);
289
+ // Assert
290
+ expect(result).toEqual([]);
291
+ });
292
+ it('should filter out non-attachment relations', async () => {
293
+ // Arrange
294
+ const mockId = '123';
295
+ const mockWorkItem = {
296
+ relations: [
297
+ {
298
+ rel: 'Parent',
299
+ url: 'https://example.com/parent/1',
300
+ attributes: { name: 'parent' }
301
+ },
302
+ {
303
+ rel: 'AttachedFile',
304
+ url: 'https://example.com/attachment/1',
305
+ attributes: { name: 'file.txt' }
306
+ }
307
+ ]
308
+ };
309
+ // Mock TFSServices.getItemContent directly instead of GetWorkItem
310
+ tfs_1.TFSServices.getItemContent.mockResolvedValueOnce(mockWorkItem);
311
+ // Act
312
+ const result = await ticketsDataProvider.GetWorkitemAttachments(mockProject, mockId);
313
+ // Assert
314
+ expect(tfs_1.TFSServices.getItemContent).toHaveBeenCalledWith(`${mockOrgUrl}${mockProject}/_apis/wit/workitems/${mockId}?$expand=All`, mockToken);
315
+ expect(result.length).toBe(1);
316
+ expect(result[0].rel).toBe('AttachedFile');
317
+ // Only the AttachedFile relation should be in the result
318
+ expect(result.some(item => item.rel === 'Parent')).toBe(false);
319
+ });
320
+ });
321
+ });
94
322
  //# sourceMappingURL=ticketsDataProvider.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ticketsDataProvider.test.js","sourceRoot":"","sources":["../../../src/modules/test/ticketsDataProvider.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ticketsDataProvider.test.js","sourceRoot":"","sources":["../../../src/modules/test/ticketsDataProvider.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elisra-devops/docgen-data-provider",
3
- "version": "1.21.0",
3
+ "version": "1.23.0",
4
4
  "description": "A document generator data provider, aimed to retrive data from azure devops",
5
5
  "repository": {
6
6
  "type": "git",
@@ -32,12 +32,14 @@ export class Trace {
32
32
  url: string;
33
33
  customerId: string;
34
34
  links: Array<Links>;
35
+
36
+
35
37
  }
36
38
 
37
39
  export class Helper {
38
40
  static level: number = 1;
39
41
  static first: boolean = true;
40
- static buildSuiteslevel(dataSuites: any): any {}
42
+ static buildSuiteslevel(dataSuites: any): any { }
41
43
  public static suitList: Array<suiteData> = new Array<suiteData>();
42
44
  public static findSuitesRecursive(
43
45
  planId: string,
@@ -75,24 +77,24 @@ export class Helper {
75
77
  suits,
76
78
  suits[i].id,
77
79
  true
78
- );
80
+ );
79
81
  this.level--;
80
82
  }
81
83
  } else {
82
- if (suits[i].id == foundId && Helper.first) {
83
- let suit: suiteData = new suiteData(
84
- suits[i].title,
85
- suits[i].id,
86
- foundId,
87
- this.level
88
- );
89
- suit.url = url + project + "/_workitems/edit/" + suits[i].id;
90
- Helper.first = false;
91
- if (recursive == false) {
92
- return this.suitList;
93
- }
84
+ if (suits[i].id == foundId && Helper.first) {
85
+ let suit: suiteData = new suiteData(
86
+ suits[i].title,
87
+ suits[i].id,
88
+ foundId,
89
+ this.level
90
+ );
91
+ suit.url = url + project + "/_workitems/edit/" + suits[i].id;
92
+ Helper.first = false;
93
+ if (recursive == false) {
94
+ return this.suitList;
94
95
  }
95
96
  }
97
+ }
96
98
  }
97
99
  return this.suitList;
98
100
  }