@elisra-devops/docgen-data-provider 1.63.13 → 1.68.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 (92) hide show
  1. package/.github/workflows/ci.yml +26 -9
  2. package/.github/workflows/release.yml +9 -10
  3. package/README.md +50 -24
  4. package/bin/helpers/tfs.d.ts +3 -0
  5. package/bin/helpers/tfs.js +44 -7
  6. package/bin/helpers/tfs.js.map +1 -1
  7. package/bin/modules/GitDataProvider.d.ts +10 -0
  8. package/bin/modules/GitDataProvider.js +10 -0
  9. package/bin/modules/GitDataProvider.js.map +1 -1
  10. package/bin/modules/TestDataProvider.js +0 -1
  11. package/bin/modules/TestDataProvider.js.map +1 -1
  12. package/bin/modules/TicketsDataProvider.d.ts +63 -24
  13. package/bin/modules/TicketsDataProvider.js +216 -114
  14. package/bin/modules/TicketsDataProvider.js.map +1 -1
  15. package/bin/tests/helpers/helper.test.js +279 -0
  16. package/bin/tests/helpers/helper.test.js.map +1 -0
  17. package/bin/{helpers/test → tests/helpers}/tfs.test.js +312 -49
  18. package/bin/tests/helpers/tfs.test.js.map +1 -0
  19. package/bin/tests/index.test.js +25 -0
  20. package/bin/tests/index.test.js.map +1 -0
  21. package/bin/tests/models/tfs-data.test.js +160 -0
  22. package/bin/tests/models/tfs-data.test.js.map +1 -0
  23. package/bin/{modules/test → tests/modules}/JfrogDataProvider.test.js +9 -9
  24. package/bin/tests/modules/JfrogDataProvider.test.js.map +1 -0
  25. package/bin/tests/modules/ResultDataProvider.test.js +1942 -0
  26. package/bin/tests/modules/ResultDataProvider.test.js.map +1 -0
  27. package/bin/tests/modules/gitDataProvider.test.js +1888 -0
  28. package/bin/tests/modules/gitDataProvider.test.js.map +1 -0
  29. package/bin/{modules/test → tests/modules}/managmentDataProvider.test.js +13 -1
  30. package/bin/tests/modules/managmentDataProvider.test.js.map +1 -0
  31. package/bin/tests/modules/pipelineDataProvider.test.d.ts +1 -0
  32. package/bin/tests/modules/pipelineDataProvider.test.js +783 -0
  33. package/bin/tests/modules/pipelineDataProvider.test.js.map +1 -0
  34. package/bin/tests/modules/testDataProvider.test.d.ts +1 -0
  35. package/bin/tests/modules/testDataProvider.test.js +717 -0
  36. package/bin/tests/modules/testDataProvider.test.js.map +1 -0
  37. package/bin/tests/modules/ticketsDataProvider.test.d.ts +1 -0
  38. package/bin/tests/modules/ticketsDataProvider.test.js +1681 -0
  39. package/bin/tests/modules/ticketsDataProvider.test.js.map +1 -0
  40. package/bin/tests/utils/DataProviderUtils.test.d.ts +1 -0
  41. package/bin/tests/utils/DataProviderUtils.test.js +61 -0
  42. package/bin/tests/utils/DataProviderUtils.test.js.map +1 -0
  43. package/bin/tests/utils/testStepParserHelper.test.d.ts +1 -0
  44. package/bin/tests/utils/testStepParserHelper.test.js +359 -0
  45. package/bin/tests/utils/testStepParserHelper.test.js.map +1 -0
  46. package/package.json +9 -1
  47. package/src/helpers/tfs.ts +51 -7
  48. package/src/modules/GitDataProvider.ts +10 -0
  49. package/src/modules/TestDataProvider.ts +0 -1
  50. package/src/modules/TicketsDataProvider.ts +298 -141
  51. package/src/tests/helpers/helper.test.ts +337 -0
  52. package/src/tests/helpers/tfs.test.ts +1092 -0
  53. package/src/tests/index.test.ts +28 -0
  54. package/src/tests/models/tfs-data.test.ts +203 -0
  55. package/src/tests/modules/JfrogDataProvider.test.ts +167 -0
  56. package/src/tests/modules/ResultDataProvider.test.ts +2571 -0
  57. package/src/tests/modules/gitDataProvider.test.ts +2628 -0
  58. package/src/{modules/test → tests/modules}/managmentDataProvider.test.ts +33 -1
  59. package/src/tests/modules/pipelineDataProvider.test.ts +1038 -0
  60. package/src/tests/modules/testDataProvider.test.ts +1046 -0
  61. package/src/tests/modules/ticketsDataProvider.test.ts +2204 -0
  62. package/src/tests/utils/DataProviderUtils.test.ts +76 -0
  63. package/src/tests/utils/testStepParserHelper.test.ts +437 -0
  64. package/tsconfig.json +1 -0
  65. package/bin/helpers/test/tfs.test.js.map +0 -1
  66. package/bin/modules/test/JfrogDataProvider.test.js.map +0 -1
  67. package/bin/modules/test/ResultDataProvider.test.js +0 -444
  68. package/bin/modules/test/ResultDataProvider.test.js.map +0 -1
  69. package/bin/modules/test/gitDataProvider.test.js +0 -428
  70. package/bin/modules/test/gitDataProvider.test.js.map +0 -1
  71. package/bin/modules/test/managmentDataProvider.test.js.map +0 -1
  72. package/bin/modules/test/pipelineDataProvider.test.js +0 -237
  73. package/bin/modules/test/pipelineDataProvider.test.js.map +0 -1
  74. package/bin/modules/test/testDataProvider.test.js +0 -234
  75. package/bin/modules/test/testDataProvider.test.js.map +0 -1
  76. package/bin/modules/test/ticketsDataProvider.test.js +0 -348
  77. package/bin/modules/test/ticketsDataProvider.test.js.map +0 -1
  78. package/src/helpers/test/tfs.test.ts +0 -748
  79. package/src/modules/test/JfrogDataProvider.test.ts +0 -171
  80. package/src/modules/test/ResultDataProvider.test.ts +0 -542
  81. package/src/modules/test/gitDataProvider.test.ts +0 -645
  82. package/src/modules/test/pipelineDataProvider.test.ts +0 -292
  83. package/src/modules/test/testDataProvider.test.ts +0 -318
  84. package/src/modules/test/ticketsDataProvider.test.ts +0 -462
  85. /package/bin/{helpers/test/tfs.test.d.ts → tests/helpers/helper.test.d.ts} +0 -0
  86. /package/bin/{modules/test/JfrogDataProvider.test.d.ts → tests/helpers/tfs.test.d.ts} +0 -0
  87. /package/bin/{modules/test/ResultDataProvider.test.d.ts → tests/index.test.d.ts} +0 -0
  88. /package/bin/{modules/test/gitDataProvider.test.d.ts → tests/models/tfs-data.test.d.ts} +0 -0
  89. /package/bin/{modules/test/managmentDataProvider.test.d.ts → tests/modules/JfrogDataProvider.test.d.ts} +0 -0
  90. /package/bin/{modules/test/pipelineDataProvider.test.d.ts → tests/modules/ResultDataProvider.test.d.ts} +0 -0
  91. /package/bin/{modules/test/testDataProvider.test.d.ts → tests/modules/gitDataProvider.test.d.ts} +0 -0
  92. /package/bin/{modules/test/ticketsDataProvider.test.d.ts → tests/modules/managmentDataProvider.test.d.ts} +0 -0
@@ -1,348 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
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);
18
- });
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
- });
31
- });
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
- });
44
- });
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
61
- .spyOn(ticketsDataProvider, 'GetParentLink')
62
- .mockResolvedValueOnce(mockTraceItem)
63
- .mockResolvedValueOnce({ id: '2', title: 'Item 2', url: 'url', customerId: 'customer', links: [] });
64
- jest.spyOn(ticketsDataProvider, 'PopulateWorkItemsByIds').mockResolvedValueOnce(mockRelatedItems);
65
- jest.spyOn(ticketsDataProvider, 'GetLinks').mockResolvedValueOnce([]);
66
- // Act
67
- const result = await ticketsDataProvider.GetLinksByIds(mockProject, mockIds);
68
- // Assert
69
- expect(result.length).toBe(2);
70
- expect(ticketsDataProvider.PopulateWorkItemsByIds).toHaveBeenCalledWith(mockIds, mockProject);
71
- expect(ticketsDataProvider.GetRelationsIds).toHaveBeenCalledWith(mockWorkItems);
72
- });
73
- });
74
- describe('GetSharedQueries', () => {
75
- it('should fetch STD shared queries with correct URL', async () => {
76
- // Arrange
77
- const mockPath = '';
78
- const mockDocType = 'STD';
79
- const mockQueries = { name: 'Query 1' };
80
- const mockBranchesResponse = {
81
- reqToTest: { result: { reqTestTree: {} }, usedFolder: {} },
82
- testToReq: { result: { testReqTree: {} }, usedFolder: {} },
83
- mom: { result: { linkedMomTree: {} }, usedFolder: {} },
84
- };
85
- tfs_1.TFSServices.getItemContent.mockResolvedValueOnce(mockQueries);
86
- jest.spyOn(ticketsDataProvider, 'ensureQueryChildren').mockResolvedValueOnce(mockQueries);
87
- jest
88
- .spyOn(ticketsDataProvider, 'getDocTypeRoot')
89
- .mockResolvedValueOnce({ root: mockQueries, found: true });
90
- jest
91
- .spyOn(ticketsDataProvider, 'fetchDocTypeBranches')
92
- .mockResolvedValueOnce(mockBranchesResponse);
93
- // Act
94
- const result = await ticketsDataProvider.GetSharedQueries(mockProject, mockPath, mockDocType);
95
- // Assert
96
- expect(tfs_1.TFSServices.getItemContent).toHaveBeenCalledWith(`${mockOrgUrl}${mockProject}/_apis/wit/queries/Shared%20Queries?$depth=2&$expand=all`, mockToken);
97
- expect(result).toEqual({
98
- reqTestQueries: { reqTestTree: {}, testReqTree: {} },
99
- linkedMomQueries: { linkedMomTree: {} },
100
- });
101
- });
102
- it('should fetch SVD shared queries and call fetchAnyQueries', async () => {
103
- // Arrange
104
- const mockPath = 'Custom Path';
105
- const mockDocType = 'SVD';
106
- const mockQueries = { name: 'Query 1' };
107
- const mockBranchesResponse = {
108
- systemOverview: { result: {}, usedFolder: {} },
109
- knownBugs: { result: {}, usedFolder: {} },
110
- };
111
- tfs_1.TFSServices.getItemContent.mockResolvedValueOnce(mockQueries);
112
- jest.spyOn(ticketsDataProvider, 'ensureQueryChildren').mockResolvedValueOnce(mockQueries);
113
- jest
114
- .spyOn(ticketsDataProvider, 'getDocTypeRoot')
115
- .mockResolvedValueOnce({ root: mockQueries, found: true });
116
- jest
117
- .spyOn(ticketsDataProvider, 'fetchDocTypeBranches')
118
- .mockResolvedValueOnce(mockBranchesResponse);
119
- // Act
120
- const result = await ticketsDataProvider.GetSharedQueries(mockProject, mockPath, mockDocType);
121
- // Assert
122
- expect(tfs_1.TFSServices.getItemContent).toHaveBeenCalledWith(`${mockOrgUrl}${mockProject}/_apis/wit/queries/${mockPath}?$depth=2&$expand=all`, mockToken);
123
- expect(result).toEqual({
124
- systemOverviewQueryTree: {},
125
- knownBugsQueryTree: {},
126
- });
127
- });
128
- it('should handle errors', async () => {
129
- // Arrange
130
- const mockPath = '';
131
- const mockError = new Error('API error');
132
- tfs_1.TFSServices.getItemContent.mockImplementationOnce(() => {
133
- return Promise.reject(mockError);
134
- });
135
- // Act & Assert
136
- await expect(ticketsDataProvider.GetSharedQueries(mockProject, mockPath)).rejects.toThrow('API error');
137
- expect(logger_1.default.error).toHaveBeenCalled();
138
- });
139
- });
140
- describe('GetQueryResultsFromWiql', () => {
141
- it('should handle OneHop query with table format', async () => {
142
- // Arrange
143
- const mockWiqlHref = 'https://example.com/wiql';
144
- const mockTestCaseMap = new Map();
145
- const mockQueryResult = {
146
- queryType: tfs_data_1.QueryType.OneHop,
147
- columns: [],
148
- workItemRelations: [{ source: null, target: { id: 1, url: 'url' } }],
149
- };
150
- const mockTableResult = {
151
- sourceTargetsMap: new Map(),
152
- sortingSourceColumnsMap: new Map(),
153
- sortingTargetsColumnsMap: new Map(),
154
- };
155
- tfs_1.TFSServices.getItemContent.mockResolvedValueOnce(mockQueryResult);
156
- jest
157
- .spyOn(ticketsDataProvider, 'parseDirectLinkedQueryResultForTableFormat')
158
- .mockResolvedValueOnce(mockTableResult);
159
- // Act
160
- const result = await ticketsDataProvider.GetQueryResultsFromWiql(mockWiqlHref, true, mockTestCaseMap);
161
- // Assert
162
- expect(tfs_1.TFSServices.getItemContent).toHaveBeenCalledWith(mockWiqlHref, mockToken);
163
- expect(result).toEqual(mockTableResult);
164
- });
165
- it('should throw error when wiqlHref is empty', async () => {
166
- // Arrange
167
- const mockTestCaseMap = new Map();
168
- // Act & Assert
169
- const result = await ticketsDataProvider.GetQueryResultsFromWiql('', false, mockTestCaseMap);
170
- expect(logger_1.default.error).toHaveBeenCalled();
171
- expect(result).toBeUndefined();
172
- });
173
- });
174
- describe('GetModeledQuery', () => {
175
- it('should structure query list correctly', () => {
176
- // Arrange
177
- const mockQueryList = [
178
- {
179
- name: 'Query 1',
180
- _links: { wiql: 'http://example.com/wiql1' },
181
- id: 'q1',
182
- },
183
- {
184
- name: 'Query 2',
185
- _links: { wiql: null },
186
- id: 'q2',
187
- },
188
- ];
189
- // Act
190
- const result = ticketsDataProvider.GetModeledQuery(mockQueryList);
191
- // Assert
192
- expect(result).toEqual([
193
- { queryName: 'Query 1', wiql: 'http://example.com/wiql1', id: 'q1' },
194
- { queryName: 'Query 2', wiql: null, id: 'q2' },
195
- ]);
196
- });
197
- });
198
- describe('PopulateWorkItemsByIds', () => {
199
- it('should fetch work items in batches of 200', async () => {
200
- // Arrange
201
- const mockIds = Array.from({ length: 250 }, (_, i) => i + 1);
202
- const mockResponse1 = { value: mockIds.slice(0, 200).map((id) => ({ id })) };
203
- const mockResponse2 = { value: mockIds.slice(200).map((id) => ({ id })) };
204
- tfs_1.TFSServices.getItemContent
205
- .mockResolvedValueOnce(mockResponse1)
206
- .mockResolvedValueOnce(mockResponse2);
207
- // Act
208
- const result = await ticketsDataProvider.PopulateWorkItemsByIds(mockIds, mockProject);
209
- // Assert
210
- expect(tfs_1.TFSServices.getItemContent).toHaveBeenCalledTimes(2);
211
- expect(result.length).toBe(250);
212
- });
213
- it('should handle errors and return empty array', async () => {
214
- // Arrange
215
- const mockIds = [1, 2, 3];
216
- const mockError = new Error('API error');
217
- tfs_1.TFSServices.getItemContent.mockRejectedValueOnce(mockError);
218
- // Act
219
- const result = await ticketsDataProvider.PopulateWorkItemsByIds(mockIds, mockProject);
220
- // Assert
221
- expect(result).toEqual([]);
222
- expect(logger_1.default.error).toHaveBeenCalled();
223
- });
224
- });
225
- describe('GetIterationsByTeamName', () => {
226
- it('should fetch iterations with team name specified', async () => {
227
- // Arrange
228
- const mockTeamName = 'test-team';
229
- const mockIterations = ['iteration1', 'iteration2'];
230
- tfs_1.TFSServices.getItemContent.mockResolvedValueOnce(mockIterations);
231
- // Act
232
- const result = await ticketsDataProvider.GetIterationsByTeamName(mockProject, mockTeamName);
233
- // Assert
234
- expect(tfs_1.TFSServices.getItemContent).toHaveBeenCalledWith(`${mockOrgUrl}${mockProject}/${mockTeamName}/_apis/work/teamsettings/iterations`, mockToken, 'get');
235
- expect(result).toEqual(mockIterations);
236
- });
237
- it('should fetch iterations without team name', async () => {
238
- // Arrange
239
- const mockTeamName = '';
240
- const mockIterations = ['iteration1', 'iteration2'];
241
- tfs_1.TFSServices.getItemContent.mockResolvedValueOnce(mockIterations);
242
- // Act
243
- const result = await ticketsDataProvider.GetIterationsByTeamName(mockProject, mockTeamName);
244
- // Assert
245
- expect(tfs_1.TFSServices.getItemContent).toHaveBeenCalledWith(`${mockOrgUrl}${mockProject}/_apis/work/teamsettings/iterations`, mockToken, 'get');
246
- expect(result).toEqual(mockIterations);
247
- });
248
- });
249
- describe('CreateNewWorkItem', () => {
250
- it('should create work item with correct parameters', async () => {
251
- // Arrange
252
- const mockWiBody = [{ op: 'add', path: '/fields/System.Title', value: 'New Item' }];
253
- const mockWiType = 'Bug';
254
- const mockByPass = true;
255
- const mockResponse = { id: 123, fields: { 'System.Title': 'New Item' } };
256
- tfs_1.TFSServices.getItemContent.mockResolvedValueOnce(mockResponse);
257
- // Act
258
- const result = await ticketsDataProvider.CreateNewWorkItem(mockProject, mockWiBody, mockWiType, mockByPass);
259
- // Assert
260
- expect(tfs_1.TFSServices.getItemContent).toHaveBeenCalledWith(`${mockOrgUrl}${mockProject}/_apis/wit/workitems/$${mockWiType}?bypassRules=true`, mockToken, 'POST', mockWiBody, {
261
- 'Content-Type': 'application/json-patch+json',
262
- });
263
- expect(result).toEqual(mockResponse);
264
- });
265
- });
266
- describe('UpdateWorkItem', () => {
267
- it('should update work item with correct parameters', async () => {
268
- // Arrange
269
- const mockWiBody = [{ op: 'add', path: '/fields/System.Title', value: 'Updated Item' }];
270
- const mockWorkItemId = 123;
271
- const mockByPass = true;
272
- const mockResponse = { id: 123, fields: { 'System.Title': 'Updated Item' } };
273
- tfs_1.TFSServices.getItemContent.mockResolvedValueOnce(mockResponse);
274
- // Act
275
- const result = await ticketsDataProvider.UpdateWorkItem(mockProject, mockWiBody, mockWorkItemId, mockByPass);
276
- // Assert
277
- expect(tfs_1.TFSServices.getItemContent).toHaveBeenCalledWith(`${mockOrgUrl}${mockProject}/_apis/wit/workitems/${mockWorkItemId}?bypassRules=true`, mockToken, 'patch', mockWiBody, {
278
- 'Content-Type': 'application/json-patch+json',
279
- });
280
- expect(result).toEqual(mockResponse);
281
- });
282
- });
283
- describe('GetWorkitemAttachments', () => {
284
- it('should return attachments for work item', async () => {
285
- // Arrange
286
- const mockId = '123';
287
- const mockWorkItem = {
288
- relations: [
289
- {
290
- rel: 'AttachedFile',
291
- url: 'https://example.com/attachment/1',
292
- attributes: { name: 'file.txt' },
293
- },
294
- ],
295
- };
296
- // Mock the TFSServices.getItemContent directly to return our mock data
297
- // This is what will be called by the new TicketsDataProvider instance
298
- tfs_1.TFSServices.getItemContent.mockResolvedValueOnce(mockWorkItem);
299
- // Act
300
- const result = await ticketsDataProvider.GetWorkitemAttachments(mockProject, mockId);
301
- // Assert
302
- expect(tfs_1.TFSServices.getItemContent).toHaveBeenCalledWith(`${mockOrgUrl}${mockProject}/_apis/wit/workitems/${mockId}?$expand=All`, mockToken);
303
- expect(result.length).toBe(1);
304
- // Check that the downloadUrl was added correctly
305
- expect(result[0]).toHaveProperty('downloadUrl', 'https://example.com/attachment/1/file.txt');
306
- expect(result[0].rel).toBe('AttachedFile');
307
- });
308
- it('should handle work item with no relations', async () => {
309
- // Arrange
310
- const mockId = '123';
311
- const mockWorkItem = { relations: null };
312
- jest.spyOn(ticketsDataProvider, 'GetWorkItem').mockResolvedValueOnce(mockWorkItem);
313
- // Act
314
- const result = await ticketsDataProvider.GetWorkitemAttachments(mockProject, mockId);
315
- // Assert
316
- expect(result).toEqual([]);
317
- });
318
- it('should filter out non-attachment relations', async () => {
319
- // Arrange
320
- const mockId = '123';
321
- const mockWorkItem = {
322
- relations: [
323
- {
324
- rel: 'Parent',
325
- url: 'https://example.com/parent/1',
326
- attributes: { name: 'parent' },
327
- },
328
- {
329
- rel: 'AttachedFile',
330
- url: 'https://example.com/attachment/1',
331
- attributes: { name: 'file.txt' },
332
- },
333
- ],
334
- };
335
- // Mock TFSServices.getItemContent directly instead of GetWorkItem
336
- tfs_1.TFSServices.getItemContent.mockResolvedValueOnce(mockWorkItem);
337
- // Act
338
- const result = await ticketsDataProvider.GetWorkitemAttachments(mockProject, mockId);
339
- // Assert
340
- expect(tfs_1.TFSServices.getItemContent).toHaveBeenCalledWith(`${mockOrgUrl}${mockProject}/_apis/wit/workitems/${mockId}?$expand=All`, mockToken);
341
- expect(result.length).toBe(1);
342
- expect(result[0].rel).toBe('AttachedFile');
343
- // Only the AttachedFile relation should be in the result
344
- expect(result.some((item) => item.rel === 'Parent')).toBe(false);
345
- });
346
- });
347
- });
348
- //# sourceMappingURL=ticketsDataProvider.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ticketsDataProvider.test.js","sourceRoot":"","sources":["../../../src/modules/test/ticketsDataProvider.test.ts"],"names":[],"mappings":"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"}