@elisra-devops/docgen-skins 0.23.0 → 0.25.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 (65) hide show
  1. package/.github/workflows/ci.yml +18 -9
  2. package/.github/workflows/release.yml +22 -6
  3. package/Readme.md +11 -0
  4. package/bin/index.d.ts +12 -1
  5. package/bin/index.js +201 -16
  6. package/bin/index.js.map +1 -1
  7. package/bin/models/json/JSONRun.js +2 -0
  8. package/bin/models/json/JSONRun.js.map +1 -1
  9. package/bin/models/json/file/JSONFile.js.map +1 -1
  10. package/bin/models/json/paragraph/JSONParagraph.js.map +1 -1
  11. package/bin/models/json/paragraph/JSONRichTextParagraph.js.map +1 -1
  12. package/bin/models/json/paragraph/JSONTestSuiteHeaderParagraph.js +3 -0
  13. package/bin/models/json/paragraph/JSONTestSuiteHeaderParagraph.js.map +1 -1
  14. package/bin/models/json/table/JSONTable.d.ts +2 -1
  15. package/bin/models/json/table/JSONTable.js +20 -6
  16. package/bin/models/json/table/JSONTable.js.map +1 -1
  17. package/bin/models/json/table/JSONTableCell.js +2 -0
  18. package/bin/models/json/table/JSONTableCell.js.map +1 -1
  19. package/bin/models/json/table/JSONTableRow.js.map +1 -1
  20. package/bin/models/json/wordJsonModels.d.ts +5 -0
  21. package/bin/services/logger.js +17 -7
  22. package/bin/services/logger.js.map +1 -1
  23. package/bin/test/JSONFile.test.js +48 -0
  24. package/bin/test/JSONFile.test.js.map +1 -0
  25. package/bin/test/JSONRun.test.d.ts +1 -0
  26. package/bin/test/JSONRun.test.js +93 -0
  27. package/bin/test/JSONRun.test.js.map +1 -0
  28. package/bin/test/JSONTable.test.d.ts +1 -0
  29. package/bin/test/JSONTable.test.js +79 -0
  30. package/bin/test/JSONTable.test.js.map +1 -0
  31. package/bin/test/JSONTableCell.test.d.ts +1 -0
  32. package/bin/test/JSONTableCell.test.js +154 -0
  33. package/bin/test/JSONTableCell.test.js.map +1 -0
  34. package/bin/test/JSONTableRow.test.d.ts +1 -0
  35. package/bin/test/JSONTableRow.test.js +40 -0
  36. package/bin/test/JSONTableRow.test.js.map +1 -0
  37. package/bin/test/JSONTestSuiteHeaderParagraph.test.d.ts +1 -0
  38. package/bin/test/JSONTestSuiteHeaderParagraph.test.js +57 -0
  39. package/bin/test/JSONTestSuiteHeaderParagraph.test.js.map +1 -0
  40. package/bin/test/SkinsEdgeCases.test.d.ts +1 -0
  41. package/bin/test/SkinsEdgeCases.test.js +399 -0
  42. package/bin/test/SkinsEdgeCases.test.js.map +1 -0
  43. package/bin/test/integration/skins.integration.test.d.ts +1 -0
  44. package/bin/test/integration/skins.integration.test.js +533 -0
  45. package/bin/test/integration/skins.integration.test.js.map +1 -0
  46. package/package.json +5 -5
  47. package/src/index.ts +247 -10
  48. package/src/models/json/JSONRun.ts +2 -0
  49. package/src/models/json/paragraph/JSONTestSuiteHeaderParagraph.ts +4 -0
  50. package/src/models/json/table/JSONTable.ts +19 -3
  51. package/src/models/json/table/JSONTableCell.ts +1 -0
  52. package/src/models/json/wordJsonModels.ts +5 -0
  53. package/src/test/JSONFile.test.ts +59 -0
  54. package/src/test/JSONRun.test.ts +118 -0
  55. package/src/test/JSONTable.test.ts +126 -0
  56. package/src/test/JSONTableCell.test.ts +181 -0
  57. package/src/test/JSONTableRow.test.ts +42 -0
  58. package/src/test/JSONTestSuiteHeaderParagraph.test.ts +64 -0
  59. package/src/test/SkinsEdgeCases.test.ts +530 -0
  60. package/src/test/integration/skins.integration.test.ts +660 -0
  61. package/tsconfig.json +2 -2
  62. package/bin/test/skins.test.js +0 -126
  63. package/bin/test/skins.test.js.map +0 -1
  64. package/src/test/skins.test.ts +0 -189
  65. /package/bin/test/{skins.test.d.ts → JSONFile.test.d.ts} +0 -0
@@ -0,0 +1,154 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const JSONTableCell_1 = __importDefault(require("../models/json/table/JSONTableCell"));
7
+ const logger_1 = __importDefault(require("../services/logger"));
8
+ jest.mock('../services/logger', () => ({
9
+ __esModule: true,
10
+ default: {
11
+ debug: jest.fn(),
12
+ info: jest.fn(),
13
+ warn: jest.fn(),
14
+ error: jest.fn(),
15
+ },
16
+ }));
17
+ const getMockLogger = () => logger_1.default;
18
+ const baseStyles = {
19
+ isBold: false,
20
+ IsItalic: false,
21
+ IsUnderline: false,
22
+ Size: 10,
23
+ Uri: null,
24
+ Font: 'Arial',
25
+ InsertLineBreak: false,
26
+ InsertSpace: true,
27
+ };
28
+ describe('JSONTableCell', () => {
29
+ beforeEach(() => {
30
+ jest.clearAllMocks();
31
+ });
32
+ test('creates picture attachment when value contains picture link and respects isFlattened', () => {
33
+ const shading = { color: 'auto', fill: 'FF0000', themeFillShade: 'BF' };
34
+ const data = {
35
+ name: 'AttachmentCell',
36
+ value: [
37
+ {
38
+ attachmentLink: 'http://server/image.png',
39
+ tableCellAttachmentLink: 'http://server/image-render.png',
40
+ attachmentFileName: 'image.png',
41
+ },
42
+ ],
43
+ attachmentType: 'asEmbedded',
44
+ includeAttachmentContent: true,
45
+ width: '50%',
46
+ };
47
+ const cell = new JSONTableCell_1.default(data, Object.assign({}, baseStyles), false, shading, true);
48
+ const json = cell.getJsonCell();
49
+ expect(json.shading).toEqual(shading);
50
+ expect(json.attachments).toHaveLength(1);
51
+ expect(json.attachments[0]).toMatchObject({
52
+ type: 'Picture',
53
+ path: 'http://server/image-render.png',
54
+ name: 'image',
55
+ isFlattened: true,
56
+ });
57
+ });
58
+ test('creates file attachment with link flags for non-picture attachment', () => {
59
+ const data = {
60
+ name: 'AttachmentCell',
61
+ value: [
62
+ {
63
+ attachmentLink: 'http://server/doc1.pdf',
64
+ attachmentFileName: 'doc1.pdf',
65
+ },
66
+ ],
67
+ attachmentType: 'asLink',
68
+ includeAttachmentContent: false,
69
+ width: '50%',
70
+ };
71
+ const cell = new JSONTableCell_1.default(data, Object.assign({}, baseStyles), false, undefined, true);
72
+ const json = cell.getJsonCell();
73
+ expect(json.attachments).toHaveLength(1);
74
+ expect(json.attachments[0]).toMatchObject({
75
+ type: 'File',
76
+ path: 'http://server/doc1.pdf',
77
+ name: 'doc1',
78
+ isLinkedFile: true,
79
+ includeAttachmentContent: false,
80
+ isFlattened: true,
81
+ });
82
+ });
83
+ test('creates HTML cell when value contains HTML markup', () => {
84
+ const shading = { color: 'auto', fill: '00FF00' };
85
+ const data = {
86
+ name: 'HtmlCell',
87
+ value: '<p>Hello</p>',
88
+ width: '30%',
89
+ };
90
+ const cell = new JSONTableCell_1.default(data, Object.assign({}, baseStyles), false, shading, false);
91
+ const json = cell.getJsonCell();
92
+ expect(json.Html).toMatchObject({
93
+ type: 'html',
94
+ Html: '<p>Hello</p>',
95
+ font: 'Arial',
96
+ fontSize: 10,
97
+ });
98
+ expect(json.shading).toEqual(shading);
99
+ expect(json.attachments).toHaveLength(0);
100
+ });
101
+ test('creates text runs when value is simple text', () => {
102
+ const data = {
103
+ name: 'TextCell',
104
+ value: 'Plain text',
105
+ width: '20%',
106
+ url: 'http://example.com/field',
107
+ };
108
+ const cell = new JSONTableCell_1.default(data, Object.assign({}, baseStyles), false, undefined, false);
109
+ const json = cell.getJsonCell();
110
+ expect(json.Html).toBeUndefined();
111
+ expect(json.attachments).toHaveLength(0);
112
+ expect(json.Paragraphs[0].Runs.length).toBeGreaterThan(0);
113
+ const text = json.Paragraphs[0].Runs.map((r) => r.text).join('');
114
+ expect(text).toContain('Plain text');
115
+ });
116
+ test('logs error and falls back to error run when value is invalid non-array object', () => {
117
+ const data = {
118
+ name: 'BadCell',
119
+ value: { not: 'an array' },
120
+ width: '10%',
121
+ };
122
+ const cell = new JSONTableCell_1.default(data, Object.assign({}, baseStyles), false, undefined, false);
123
+ const json = cell.getJsonCell();
124
+ expect(getMockLogger().error).toHaveBeenCalled();
125
+ const text = json.Paragraphs[0].Runs.map((r) => r.text).join('');
126
+ expect(text).toContain('Docgen Error: Invalid data value');
127
+ });
128
+ test('threads sectionRefId from data to run SectionRefId', () => {
129
+ const data = {
130
+ name: 'Test Case ID',
131
+ value: '123',
132
+ sectionRefId: '123',
133
+ url: 'http://tfs/link',
134
+ shading: { color: 'auto', fill: 'FFFFFF' },
135
+ };
136
+ const cell = new JSONTableCell_1.default(data, Object.assign({}, baseStyles), false, undefined, false);
137
+ const json = cell.getJsonCell();
138
+ const runs = json.Paragraphs[0].Runs;
139
+ expect(runs.length).toBeGreaterThan(0);
140
+ expect(runs[0].SectionRefId).toBe('123');
141
+ });
142
+ test('SectionRefId is null when not provided on data', () => {
143
+ const data = {
144
+ name: 'Req ID',
145
+ value: '456',
146
+ shading: { color: 'auto', fill: 'FFFFFF' },
147
+ };
148
+ const cell = new JSONTableCell_1.default(data, Object.assign({}, baseStyles), false, undefined, false);
149
+ const json = cell.getJsonCell();
150
+ const runs = json.Paragraphs[0].Runs;
151
+ expect(runs[0].SectionRefId).toBeNull();
152
+ });
153
+ });
154
+ //# sourceMappingURL=JSONTableCell.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JSONTableCell.test.js","sourceRoot":"","sources":["../../src/test/JSONTableCell.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const JSONTableRow_1 = __importDefault(require("../models/json/table/JSONTableRow"));
7
+ jest.mock('../services/logger', () => ({
8
+ __esModule: true,
9
+ default: {
10
+ debug: jest.fn(),
11
+ info: jest.fn(),
12
+ warn: jest.fn(),
13
+ error: jest.fn(),
14
+ },
15
+ }));
16
+ const baseStyles = {
17
+ isBold: false,
18
+ IsItalic: false,
19
+ IsUnderline: false,
20
+ Size: 10,
21
+ Uri: null,
22
+ Font: 'Arial',
23
+ InsertLineBreak: false,
24
+ InsertSpace: true,
25
+ };
26
+ describe('JSONTableRow', () => {
27
+ beforeEach(() => {
28
+ jest.clearAllMocks();
29
+ });
30
+ test('throws error when WIData has no fields', () => {
31
+ const data = {
32
+ url: '',
33
+ level: 0,
34
+ Source: 1,
35
+ // fields is intentionally missing to trigger the error path
36
+ };
37
+ expect(() => new JSONTableRow_1.default(data, Object.assign({}, baseStyles))).toThrow('no fields to add for the table row');
38
+ });
39
+ });
40
+ //# sourceMappingURL=JSONTableRow.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JSONTableRow.test.js","sourceRoot":"","sources":["../../src/test/JSONTableRow.test.ts"],"names":[],"mappings":";;;;;AAAA,qFAA6D;AAG7D,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,GAAG,EAAE,CAAC,CAAC;IACrC,UAAU,EAAE,IAAI;IAChB,OAAO,EAAE;QACP,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE;QAChB,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE;QACf,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE;QACf,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE;KACjB;CACF,CAAC,CAAC,CAAC;AAEJ,MAAM,UAAU,GAAG;IACjB,MAAM,EAAE,KAAK;IACb,QAAQ,EAAE,KAAK;IACf,WAAW,EAAE,KAAK;IAClB,IAAI,EAAE,EAAE;IACR,GAAG,EAAE,IAAqB;IAC1B,IAAI,EAAE,OAAO;IACb,eAAe,EAAE,KAAK;IACtB,WAAW,EAAE,IAAI;CAClB,CAAC;AAEF,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,UAAU,CAAC,GAAG,EAAE;QACd,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAClD,MAAM,IAAI,GAAQ;YAChB,GAAG,EAAE,EAAE;YACP,KAAK,EAAE,CAAC;YACR,MAAM,EAAE,CAAC;YACT,4DAA4D;SAC7D,CAAC;QAEF,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,sBAAY,CAAC,IAAI,EAAE,kBAAK,UAAU,CAAS,CAAC,CAAC,CAAC,OAAO,CACpE,oCAAoC,CACrC,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const JSONTestSuiteHeaderParagraph_1 = __importDefault(require("../models/json/paragraph/JSONTestSuiteHeaderParagraph"));
7
+ jest.mock('../services/logger', () => ({
8
+ __esModule: true,
9
+ default: {
10
+ debug: jest.fn(),
11
+ info: jest.fn(),
12
+ warn: jest.fn(),
13
+ error: jest.fn(),
14
+ },
15
+ }));
16
+ const baseStyles = {
17
+ isBold: true,
18
+ IsItalic: false,
19
+ IsUnderline: false,
20
+ Size: 14,
21
+ Uri: null,
22
+ Font: 'Arial',
23
+ InsertLineBreak: false,
24
+ InsertSpace: true,
25
+ };
26
+ describe('JSONTestSuiteHeaderParagraph', () => {
27
+ beforeEach(() => {
28
+ jest.clearAllMocks();
29
+ });
30
+ test('creates runs for non-title/id/description fields and sets heading level', () => {
31
+ const fields = [{ name: 'Custom', value: 'Value', url: 'http://example.com' }];
32
+ const paragraph = new JSONTestSuiteHeaderParagraph_1.default(fields, Object.assign({}, baseStyles), 1, 2);
33
+ const json = paragraph.getJSONParagraph();
34
+ expect(json.type).toBe('paragraph');
35
+ expect(json.headingLevel).toBe(2);
36
+ expect(json.runs.length).toBeGreaterThan(0);
37
+ });
38
+ test('emits bookmarkName when wiId is truthy', () => {
39
+ const fields = [{ name: 'Custom', value: 'Value' }];
40
+ const paragraph = new JSONTestSuiteHeaderParagraph_1.default(fields, Object.assign({}, baseStyles), 42, 2);
41
+ const json = paragraph.getJSONParagraph();
42
+ expect(json.bookmarkName).toBe('_WI42');
43
+ });
44
+ test('does not emit bookmarkName when wiId is 0 or falsy', () => {
45
+ const fields = [{ name: 'Custom', value: 'Value' }];
46
+ const paragraph = new JSONTestSuiteHeaderParagraph_1.default(fields, Object.assign({}, baseStyles), 0, 2);
47
+ const json = paragraph.getJSONParagraph();
48
+ expect(json.bookmarkName).toBeUndefined();
49
+ });
50
+ test('does not emit bookmarkName when wiId is undefined', () => {
51
+ const fields = [{ name: 'Custom', value: 'Value' }];
52
+ const paragraph = new JSONTestSuiteHeaderParagraph_1.default(fields, Object.assign({}, baseStyles), undefined, 2);
53
+ const json = paragraph.getJSONParagraph();
54
+ expect(json.bookmarkName).toBeUndefined();
55
+ });
56
+ });
57
+ //# sourceMappingURL=JSONTestSuiteHeaderParagraph.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JSONTestSuiteHeaderParagraph.test.js","sourceRoot":"","sources":["../../src/test/JSONTestSuiteHeaderParagraph.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};