@cparra/apexdocs 3.0.0-rc.0 → 3.1.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 (226) hide show
  1. package/README.md +61 -576
  2. package/dist/cli/generate.js +73 -3094
  3. package/dist/defaults-BcE8DTat.js +13 -0
  4. package/dist/defaults-D07y_bq4.js +40 -0
  5. package/dist/defaults-gPzwP66p.js +14 -0
  6. package/dist/index.d.ts +35 -3
  7. package/dist/index.js +90 -2
  8. package/dist/logger-BEbUIfqN.js +3282 -0
  9. package/dist/logger-BGuf1PnL.js +3281 -0
  10. package/dist/logger-CWBRF2za.js +3284 -0
  11. package/dist/logger-CdBmDEN1.js +3283 -0
  12. package/dist/logger-Ce4QqPFR.js +3278 -0
  13. package/dist/logger-CyEVYaAC.js +3284 -0
  14. package/dist/logger-D7a83ycP.js +3277 -0
  15. package/dist/logger-DGaHeBKk.js +3279 -0
  16. package/dist/logger-Dqhl_lO_.js +3278 -0
  17. package/dist/logger-aySSWi0G.js +3280 -0
  18. package/dist/logger-qLCcAtiy.js +3284 -0
  19. package/package.json +5 -2
  20. package/.github/workflows/ci.yaml +0 -22
  21. package/.github/workflows/close_stale.yml +0 -22
  22. package/.prettierrc.js +0 -7
  23. package/__mocks__/chalk.js +0 -12
  24. package/__mocks__/log-update.js +0 -6
  25. package/eslint.config.mjs +0 -10
  26. package/examples/markdown/.forceignore +0 -12
  27. package/examples/markdown/config/project-scratch-def.json +0 -5
  28. package/examples/markdown/docs/index.md +0 -109
  29. package/examples/markdown/docs/miscellaneous/BaseClass.md +0 -16
  30. package/examples/markdown/docs/miscellaneous/MultiInheritanceClass.md +0 -72
  31. package/examples/markdown/docs/miscellaneous/ParentInterface.md +0 -15
  32. package/examples/markdown/docs/miscellaneous/ReferencedEnum.md +0 -8
  33. package/examples/markdown/docs/miscellaneous/SampleException.md +0 -24
  34. package/examples/markdown/docs/miscellaneous/SampleInterface.md +0 -116
  35. package/examples/markdown/docs/miscellaneous/Url.md +0 -311
  36. package/examples/markdown/docs/sample-enums/SampleEnum.md +0 -36
  37. package/examples/markdown/docs/samplegroup/SampleClass.md +0 -170
  38. package/examples/markdown/force-app/classes/BaseClass.cls +0 -3
  39. package/examples/markdown/force-app/classes/MultiInheritanceClass.cls +0 -1
  40. package/examples/markdown/force-app/classes/ParentInterface.cls +0 -3
  41. package/examples/markdown/force-app/classes/ReferencedEnum.cls +0 -3
  42. package/examples/markdown/force-app/classes/SampleClass.cls +0 -72
  43. package/examples/markdown/force-app/classes/SampleEnum.cls +0 -30
  44. package/examples/markdown/force-app/classes/SampleException.cls +0 -17
  45. package/examples/markdown/force-app/classes/SampleInterface.cls +0 -50
  46. package/examples/markdown/force-app/classes/Url.cls +0 -196
  47. package/examples/markdown/package-lock.json +0 -665
  48. package/examples/markdown/package.json +0 -20
  49. package/examples/markdown/sfdx-project.json +0 -12
  50. package/examples/markdown-jsconfig/.forceignore +0 -12
  51. package/examples/markdown-jsconfig/apexdocs.config.mjs +0 -21
  52. package/examples/markdown-jsconfig/config/project-scratch-def.json +0 -5
  53. package/examples/markdown-jsconfig/docs/index.md +0 -12
  54. package/examples/markdown-jsconfig/docs/miscellaneous/Url.md +0 -315
  55. package/examples/markdown-jsconfig/force-app/classes/Url.cls +0 -196
  56. package/examples/markdown-jsconfig/package-lock.json +0 -665
  57. package/examples/markdown-jsconfig/package.json +0 -15
  58. package/examples/markdown-jsconfig/sfdx-project.json +0 -12
  59. package/examples/open-api/config/project-scratch-def.json +0 -13
  60. package/examples/open-api/docs/openapi.json +0 -582
  61. package/examples/open-api/force-app/main/default/classes/ChildClass.cls +0 -42
  62. package/examples/open-api/force-app/main/default/classes/SampleClass.cls +0 -167
  63. package/examples/open-api/force-app/main/default/restapi/SampleRestResource.cls +0 -195
  64. package/examples/open-api/force-app/main/default/restapi/SampleRestResourceToSkip.cls +0 -35
  65. package/examples/open-api/force-app/main/default/restapi/SampleRestResourceWithInnerClass.cls +0 -24
  66. package/examples/open-api/force-app/main/default/restapi/SampleRestResourceWithoutApexDocs.cls +0 -15
  67. package/examples/open-api/force-app/main/default/restapi/references/Reference1.cls +0 -9
  68. package/examples/open-api/force-app/main/default/restapi/references/Reference2.cls +0 -9
  69. package/examples/open-api/force-app/main/default/restapi/references/Reference3.cls +0 -3
  70. package/examples/open-api/force-app/main/default/restapi/references/Reference4.cls +0 -3
  71. package/examples/open-api/force-app/main/default/restapi/references/Reference5.cls +0 -3
  72. package/examples/open-api/force-app/main/default/restapi/references/Reference6.cls +0 -6
  73. package/examples/open-api/force-app/main/default/restapi/references/Reference7.cls +0 -3
  74. package/examples/open-api/package-lock.json +0 -724
  75. package/examples/open-api/package.json +0 -20
  76. package/examples/open-api/sfdx-project.json +0 -12
  77. package/examples/vitepress/.forceignore +0 -12
  78. package/examples/vitepress/apexdocs.config.ts +0 -111
  79. package/examples/vitepress/config/project-scratch-def.json +0 -13
  80. package/examples/vitepress/docs/.vitepress/cache/deps/@theme_index.js +0 -259
  81. package/examples/vitepress/docs/.vitepress/cache/deps/@theme_index.js.map +0 -7
  82. package/examples/vitepress/docs/.vitepress/cache/deps/_metadata.json +0 -40
  83. package/examples/vitepress/docs/.vitepress/cache/deps/chunk-574YRH25.js +0 -11474
  84. package/examples/vitepress/docs/.vitepress/cache/deps/chunk-574YRH25.js.map +0 -7
  85. package/examples/vitepress/docs/.vitepress/cache/deps/chunk-E5DZZB2I.js +0 -9172
  86. package/examples/vitepress/docs/.vitepress/cache/deps/chunk-E5DZZB2I.js.map +0 -7
  87. package/examples/vitepress/docs/.vitepress/cache/deps/package.json +0 -3
  88. package/examples/vitepress/docs/.vitepress/cache/deps/vitepress___@vue_devtools-api.js +0 -4339
  89. package/examples/vitepress/docs/.vitepress/cache/deps/vitepress___@vue_devtools-api.js.map +0 -7
  90. package/examples/vitepress/docs/.vitepress/cache/deps/vitepress___@vueuse_core.js +0 -567
  91. package/examples/vitepress/docs/.vitepress/cache/deps/vitepress___@vueuse_core.js.map +0 -7
  92. package/examples/vitepress/docs/.vitepress/cache/deps/vue.js +0 -323
  93. package/examples/vitepress/docs/.vitepress/cache/deps/vue.js.map +0 -7
  94. package/examples/vitepress/docs/.vitepress/config.mts +0 -21
  95. package/examples/vitepress/docs/.vitepress/sidebar.json +0 -119
  96. package/examples/vitepress/docs/api-examples.md +0 -49
  97. package/examples/vitepress/docs/index-frontmatter.md +0 -16
  98. package/examples/vitepress/docs/index.md +0 -56
  99. package/examples/vitepress/docs/markdown-examples.md +0 -85
  100. package/examples/vitepress/docs/miscellaneous/BaseClass.md +0 -20
  101. package/examples/vitepress/docs/miscellaneous/MultiInheritanceClass.md +0 -76
  102. package/examples/vitepress/docs/miscellaneous/ParentInterface.md +0 -19
  103. package/examples/vitepress/docs/miscellaneous/ReferencedEnum.md +0 -15
  104. package/examples/vitepress/docs/miscellaneous/SampleException.md +0 -28
  105. package/examples/vitepress/docs/miscellaneous/SampleInterface.md +0 -116
  106. package/examples/vitepress/docs/miscellaneous/Url.md +0 -317
  107. package/examples/vitepress/docs/sample-enums/SampleEnum.md +0 -40
  108. package/examples/vitepress/docs/samplegroup/SampleClass.md +0 -174
  109. package/examples/vitepress/force-app/main/default/classes/BaseClass.cls +0 -3
  110. package/examples/vitepress/force-app/main/default/classes/MultiInheritanceClass.cls +0 -1
  111. package/examples/vitepress/force-app/main/default/classes/ParentInterface.cls +0 -3
  112. package/examples/vitepress/force-app/main/default/classes/ReferencedEnum.cls +0 -5
  113. package/examples/vitepress/force-app/main/default/classes/SampleClass.cls +0 -72
  114. package/examples/vitepress/force-app/main/default/classes/SampleEnum.cls +0 -30
  115. package/examples/vitepress/force-app/main/default/classes/SampleException.cls +0 -17
  116. package/examples/vitepress/force-app/main/default/classes/SampleInterface.cls +0 -46
  117. package/examples/vitepress/force-app/main/default/classes/Url.cls +0 -198
  118. package/examples/vitepress/package-lock.json +0 -2574
  119. package/examples/vitepress/package.json +0 -18
  120. package/examples/vitepress/sfdx-project.json +0 -12
  121. package/jest.config.js +0 -10
  122. package/jest.d.ts +0 -7
  123. package/src/application/Apexdocs.ts +0 -72
  124. package/src/application/__tests__/apex-file-reader.spec.ts +0 -87
  125. package/src/application/apex-file-reader.ts +0 -55
  126. package/src/application/file-system.ts +0 -69
  127. package/src/application/file-writer.ts +0 -43
  128. package/src/application/generators/markdown.ts +0 -45
  129. package/src/application/generators/openapi.ts +0 -71
  130. package/src/cli/args.ts +0 -46
  131. package/src/cli/commands/markdown.ts +0 -51
  132. package/src/cli/commands/openapi.ts +0 -36
  133. package/src/cli/generate.ts +0 -16
  134. package/src/core/__test__/manifest.spec.ts +0 -16
  135. package/src/core/manifest.ts +0 -90
  136. package/src/core/markdown/__test__/expect-extensions.ts +0 -32
  137. package/src/core/markdown/__test__/generating-class-docs.spec.ts +0 -605
  138. package/src/core/markdown/__test__/generating-docs.spec.ts +0 -111
  139. package/src/core/markdown/__test__/generating-enum-docs.spec.ts +0 -321
  140. package/src/core/markdown/__test__/generating-interface-docs.spec.ts +0 -397
  141. package/src/core/markdown/__test__/generating-reference-guide.spec.ts +0 -180
  142. package/src/core/markdown/__test__/inheritance-chain.test.ts +0 -54
  143. package/src/core/markdown/__test__/test-helpers.ts +0 -23
  144. package/src/core/markdown/adapters/__tests__/documentables.spec.ts +0 -109
  145. package/src/core/markdown/adapters/__tests__/interface-adapter.spec.ts +0 -148
  146. package/src/core/markdown/adapters/__tests__/link-generator.spec.ts +0 -130
  147. package/src/core/markdown/adapters/__tests__/references.spec.ts +0 -136
  148. package/src/core/markdown/adapters/apex-types.ts +0 -238
  149. package/src/core/markdown/adapters/documentables.ts +0 -115
  150. package/src/core/markdown/adapters/fields-and-properties.ts +0 -45
  151. package/src/core/markdown/adapters/generate-link.ts +0 -82
  152. package/src/core/markdown/adapters/inline.ts +0 -143
  153. package/src/core/markdown/adapters/methods-and-constructors.ts +0 -133
  154. package/src/core/markdown/adapters/reference-guide.ts +0 -37
  155. package/src/core/markdown/adapters/renderable-bundle.ts +0 -61
  156. package/src/core/markdown/adapters/renderable-to-page-data.ts +0 -89
  157. package/src/core/markdown/adapters/type-utils.ts +0 -13
  158. package/src/core/markdown/adapters/types.d.ts +0 -180
  159. package/src/core/markdown/generate-docs.ts +0 -212
  160. package/src/core/markdown/reflection/__test__/filter-scope.spec.ts +0 -306
  161. package/src/core/markdown/reflection/filter-scope.ts +0 -13
  162. package/src/core/markdown/reflection/inheritance-chain-expanion.ts +0 -22
  163. package/src/core/markdown/reflection/inheritance-chain.ts +0 -23
  164. package/src/core/markdown/reflection/inherited-member-expansion.ts +0 -105
  165. package/src/core/markdown/reflection/reflect-source.ts +0 -123
  166. package/src/core/markdown/reflection/sort-members.ts +0 -59
  167. package/src/core/markdown/templates/class-template.ts +0 -75
  168. package/src/core/markdown/templates/constructors-partial-template.ts +0 -32
  169. package/src/core/markdown/templates/documentable-partial-template.ts +0 -26
  170. package/src/core/markdown/templates/enum-template.ts +0 -12
  171. package/src/core/markdown/templates/fieldsPartialTemplate.ts +0 -23
  172. package/src/core/markdown/templates/grouped-members-partial-template.ts +0 -6
  173. package/src/core/markdown/templates/hookable.ts +0 -7
  174. package/src/core/markdown/templates/interface-template.ts +0 -16
  175. package/src/core/markdown/templates/methods-partial-template.ts +0 -43
  176. package/src/core/markdown/templates/reference-guide.ts +0 -14
  177. package/src/core/markdown/templates/template.ts +0 -114
  178. package/src/core/markdown/templates/type-doc-partial.ts +0 -27
  179. package/src/core/markdown/utils.ts +0 -3
  180. package/src/core/openApiSettings.ts +0 -41
  181. package/src/core/openapi/__tests__/manifest-factory.spec.ts +0 -16
  182. package/src/core/openapi/__tests__/open-api-docs-processor.spec.ts +0 -56
  183. package/src/core/openapi/__tests__/open-api.spec.ts +0 -22
  184. package/src/core/openapi/apex-doc-types.ts +0 -26
  185. package/src/core/openapi/apex-type-wrappers/ClassMirrorWrapper.ts +0 -12
  186. package/src/core/openapi/apex-type-wrappers/MethodMirrorWrapper.ts +0 -11
  187. package/src/core/openapi/apex-type-wrappers/__tests__/ClassMirrorWrapper.spec.ts +0 -15
  188. package/src/core/openapi/file-container.ts +0 -13
  189. package/src/core/openapi/manifest-factory.ts +0 -16
  190. package/src/core/openapi/open-api-docs-processor.ts +0 -93
  191. package/src/core/openapi/open-api-types.ts +0 -119
  192. package/src/core/openapi/open-api.ts +0 -45
  193. package/src/core/openapi/openapi-type-file.ts +0 -12
  194. package/src/core/openapi/parser.ts +0 -160
  195. package/src/core/openapi/parsers/Builder.ts +0 -40
  196. package/src/core/openapi/parsers/MethodParser.ts +0 -249
  197. package/src/core/openapi/parsers/ParameterObjectBuilder.ts +0 -13
  198. package/src/core/openapi/parsers/ReferenceBuilder.ts +0 -299
  199. package/src/core/openapi/parsers/RequestBodyBuilder.ts +0 -19
  200. package/src/core/openapi/parsers/ResponsesBuilder.ts +0 -21
  201. package/src/core/openapi/parsers/__tests__/MethodParser.spec.ts +0 -44
  202. package/src/core/openapi/parsers/__tests__/ParameterObjectBuilder.spec.ts +0 -68
  203. package/src/core/openapi/parsers/__tests__/ReferenceBuilder.spec.ts +0 -751
  204. package/src/core/openapi/parsers/__tests__/RequestBodyBuilder.spec.ts +0 -64
  205. package/src/core/openapi/parsers/__tests__/ResponsesBuilder.spec.ts +0 -55
  206. package/src/core/openapi/transpiler.ts +0 -17
  207. package/src/core/openapi/types-repository.ts +0 -54
  208. package/src/core/parse-apex-metadata.ts +0 -30
  209. package/src/core/shared/types.d.ts +0 -148
  210. package/src/core/shared/utils.ts +0 -5
  211. package/src/defaults.ts +0 -9
  212. package/src/index.ts +0 -49
  213. package/src/test-helpers/AnnotationBuilder.ts +0 -29
  214. package/src/test-helpers/ClassMirrorBuilder.ts +0 -69
  215. package/src/test-helpers/DocCommentAnnotationBuilder.ts +0 -24
  216. package/src/test-helpers/DocCommentBuilder.ts +0 -36
  217. package/src/test-helpers/FieldMirrorBuilder.ts +0 -59
  218. package/src/test-helpers/InterfaceMirrorBuilder.ts +0 -39
  219. package/src/test-helpers/MethodMirrorBuilder.ts +0 -77
  220. package/src/test-helpers/SettingsBuilder.ts +0 -17
  221. package/src/util/error-logger.ts +0 -92
  222. package/src/util/fp.ts +0 -3
  223. package/src/util/logger.ts +0 -44
  224. package/src/util/string-utils.ts +0 -7
  225. package/tsconfig.json +0 -25
  226. package/tslint.json +0 -6
@@ -1,111 +0,0 @@
1
- import { DocPageData, PostHookDocumentationBundle } from '../../shared/types';
2
- import { assertEither, extendExpect } from './expect-extensions';
3
- import { apexBundleFromRawString, generateDocs } from './test-helpers';
4
-
5
- function aSingleDoc(result: PostHookDocumentationBundle): DocPageData {
6
- expect(result.docs).toHaveLength(1);
7
- return result.docs[0];
8
- }
9
-
10
- describe('When generating documentation', () => {
11
- beforeAll(() => {
12
- extendExpect();
13
- });
14
-
15
- describe('the resulting files', () => {
16
- it('are named after the type', async () => {
17
- const properties: [string, string][] = [
18
- ['public class MyClass {}', 'MyClass.md'],
19
- ['public interface MyInterface {}', 'MyInterface.md'],
20
- ['public enum MyEnum {}', 'MyEnum.md'],
21
- ];
22
-
23
- for (const [input, expected] of properties) {
24
- const result = await generateDocs([apexBundleFromRawString(input)])();
25
- assertEither(result, (data) => expect(aSingleDoc(data).outputDocPath).toContain(expected));
26
- }
27
- });
28
-
29
- it('are placed in the miscellaneous folder if no group is provided', async () => {
30
- const properties: [string, string][] = [
31
- ['public class MyClass {}', 'miscellaneous'],
32
- ['public interface MyInterface {}', 'miscellaneous'],
33
- ['public enum MyEnum {}', 'miscellaneous'],
34
- ];
35
-
36
- for (const [input, expected] of properties) {
37
- const result = await generateDocs([apexBundleFromRawString(input)])();
38
- assertEither(result, (data) => expect(aSingleDoc(data).outputDocPath).toContain(expected));
39
- }
40
- });
41
-
42
- it('are placed in the slugified group folder if a group is provided', async () => {
43
- const properties: [string, string][] = [
44
- [
45
- `/**
46
- * @group MyGroup
47
- */
48
- public class MyClass {}`,
49
- 'mygroup',
50
- ],
51
- [
52
- `/**
53
- * @group MyGroup
54
- */
55
- public interface MyInterface {}`,
56
- 'mygroup',
57
- ],
58
- [
59
- `/**
60
- * @group MyGroup
61
- */
62
- public enum MyEnum {}`,
63
- 'mygroup',
64
- ],
65
- ];
66
-
67
- for (const [input, expected] of properties) {
68
- const result = await generateDocs([apexBundleFromRawString(input)])();
69
- assertEither(result, (data) => expect(aSingleDoc(data).outputDocPath).toContain(expected));
70
- }
71
- });
72
- });
73
-
74
- describe('the generated bundles', () => {
75
- it('return the type', async () => {
76
- const properties: [string, string][] = [
77
- ['public class MyClass {}', 'class'],
78
- ['public interface MyInterface {}', 'interface'],
79
- ['public enum MyEnum {}', 'enum'],
80
- ];
81
-
82
- for (const [input, expected] of properties) {
83
- const result = await generateDocs([apexBundleFromRawString(input)])();
84
- assertEither(result, (data) => expect(aSingleDoc(data).source.type).toBe(expected));
85
- }
86
- });
87
- });
88
-
89
- describe('the generated bundle', () => {
90
- it('does not return files out of scope', async () => {
91
- const input1 = 'global class MyClass {}';
92
- const input2 = 'public class AnotherClass {}';
93
-
94
- const result = await generateDocs([apexBundleFromRawString(input1), apexBundleFromRawString(input2)], {
95
- scope: ['global'],
96
- })();
97
- expect(result).documentationBundleHasLength(1);
98
- });
99
-
100
- it('does not return files that have an @ignore in the docs', async () => {
101
- const input = `
102
- /**
103
- * @ignore
104
- */
105
- public class MyClass {}`;
106
-
107
- const result = await generateDocs([apexBundleFromRawString(input)])();
108
- expect(result).documentationBundleHasLength(0);
109
- });
110
- });
111
- });
@@ -1,321 +0,0 @@
1
- import { assertEither, extendExpect } from './expect-extensions';
2
- import { apexBundleFromRawString, generateDocs } from './test-helpers';
3
-
4
- describe('Generates enum documentation', () => {
5
- beforeAll(() => {
6
- extendExpect();
7
- });
8
-
9
- describe('documentation content', () => {
10
- it('generates a heading with the enum name', async () => {
11
- const input = `
12
- public enum MyEnum {
13
- VALUE1,
14
- VALUE2
15
- }
16
- `;
17
-
18
- const output = `# MyEnum Enum`;
19
-
20
- const result = await generateDocs([apexBundleFromRawString(input)])();
21
- expect(result).documentationBundleHasLength(1);
22
- assertEither(result, (data) => expect(data).firstDocContains(output));
23
- });
24
-
25
- it('displays type level annotations', async () => {
26
- const input = `
27
- @NamespaceAccessible
28
- public enum MyEnum {
29
- VALUE1,
30
- VALUE2
31
- }
32
- `;
33
-
34
- const result = await generateDocs([apexBundleFromRawString(input)])();
35
- expect(result).documentationBundleHasLength(1);
36
- assertEither(result, (data) => expect(data).firstDocContains('NAMESPACEACCESSIBLE'));
37
- });
38
-
39
- it('displays the description', async () => {
40
- const input = `
41
- /**
42
- * This is a description
43
- */
44
- public enum MyEnum {
45
- VALUE1,
46
- VALUE2
47
- }
48
- `;
49
-
50
- const result = await generateDocs([apexBundleFromRawString(input)])();
51
- expect(result).documentationBundleHasLength(1);
52
- assertEither(result, (data) => expect(data).firstDocContains('This is a description'));
53
- });
54
-
55
- it('display custom documentation tags', async () => {
56
- const input = `
57
- /**
58
- * @custom-tag My Value
59
- */
60
- public enum MyEnum {
61
- VALUE1,
62
- VALUE2
63
- }
64
- `;
65
-
66
- const result = await generateDocs([apexBundleFromRawString(input)])();
67
- expect(result).documentationBundleHasLength(1);
68
- assertEither(result, (data) => expect(data).firstDocContains('Custom Tag'));
69
- assertEither(result, (data) => expect(data).firstDocContains('My Value'));
70
- });
71
-
72
- it('displays the group', async () => {
73
- const input = `
74
- /**
75
- * @group MyGroup
76
- */
77
- public enum MyEnum {
78
- VALUE1,
79
- VALUE2
80
- }
81
- `;
82
-
83
- const result = await generateDocs([apexBundleFromRawString(input)])();
84
- expect(result).documentationBundleHasLength(1);
85
- assertEither(result, (data) => expect(data).firstDocContains('Group'));
86
- assertEither(result, (data) => expect(data).firstDocContains('MyGroup'));
87
- });
88
-
89
- it('displays the author', async () => {
90
- const input = `
91
- /**
92
- * @author John Doe
93
- */
94
- public enum MyEnum {
95
- VALUE1,
96
- VALUE2
97
- }
98
- `;
99
-
100
- const result = await generateDocs([apexBundleFromRawString(input)])();
101
- expect(result).documentationBundleHasLength(1);
102
- assertEither(result, (data) => expect(data).firstDocContains('Author'));
103
- assertEither(result, (data) => expect(data).firstDocContains('John Doe'));
104
- });
105
-
106
- it('displays the date', async () => {
107
- const input = `
108
- /**
109
- * @date 2021-01-01
110
- */
111
- public enum MyEnum {
112
- VALUE1,
113
- VALUE2
114
- }
115
- `;
116
-
117
- const result = await generateDocs([apexBundleFromRawString(input)])();
118
- expect(result).documentationBundleHasLength(1);
119
- assertEither(result, (data) => expect(data).firstDocContains('Date'));
120
- assertEither(result, (data) => expect(data).firstDocContains('2021-01-01'));
121
- });
122
-
123
- it('displays descriptions', async () => {
124
- const input = `
125
- /**
126
- * @description This is a description
127
- */
128
- public enum MyEnum {}
129
- `;
130
-
131
- const result = await generateDocs([apexBundleFromRawString(input)])();
132
- expect(result).documentationBundleHasLength(1);
133
- assertEither(result, (data) => expect(data).firstDocContains('This is a description'));
134
- });
135
-
136
- it('displays descriptions with links', async () => {
137
- const input1 = `
138
- /**
139
- * @description This is a description with a {@link EnumRef} reference
140
- */
141
- public enum MyEnum {}
142
- `;
143
-
144
- const input2 = 'public enum EnumRef {}';
145
-
146
- const result = await generateDocs([apexBundleFromRawString(input1), apexBundleFromRawString(input2)])();
147
- expect(result).documentationBundleHasLength(2);
148
- assertEither(result, (data) => expect(data).firstDocContains('Description'));
149
- assertEither(result, (data) =>
150
- expect(data).firstDocContains('This is a description with a [EnumRef](EnumRef.md) reference'),
151
- );
152
- });
153
-
154
- it('displays descriptions with emails', async () => {
155
- const input = `
156
- /**
157
- * @description This is a description with an {@email test@testerson.com} email
158
- */
159
- public enum MyEnum {}
160
- `;
161
-
162
- const result = await generateDocs([apexBundleFromRawString(input)])();
163
- expect(result).documentationBundleHasLength(1);
164
- assertEither(result, (data) =>
165
- expect(data).firstDocContains(
166
- 'This is a description with an [test@testerson.com](mailto:test@testerson.com) email',
167
- ),
168
- );
169
- });
170
-
171
- it('displays sees with accurately resolved links', async () => {
172
- const input1 = `
173
- /**
174
- * @see EnumRef
175
- */
176
- public enum MyEnum {}
177
- `;
178
-
179
- const input2 = 'public enum EnumRef {}';
180
-
181
- const result = await generateDocs([apexBundleFromRawString(input1), apexBundleFromRawString(input2)])();
182
- expect(result).documentationBundleHasLength(2);
183
- assertEither(result, (data) => expect(data).firstDocContains('See'));
184
- assertEither(result, (data) => expect(data).firstDocContains('[EnumRef](EnumRef.md)'));
185
- });
186
-
187
- it('displays sees without links when the reference is not found', async () => {
188
- const input = `
189
- /**
190
- * @see EnumRef
191
- */
192
- public enum MyEnum {}
193
- `;
194
-
195
- const result = await generateDocs([apexBundleFromRawString(input)])();
196
- expect(result).documentationBundleHasLength(1);
197
- assertEither(result, (data) => expect(data).firstDocContains('See'));
198
- assertEither(result, (data) => expect(data).firstDocContains('EnumRef'));
199
- });
200
-
201
- it('displays the namespace if present in the config', async () => {
202
- const input = `
203
- public enum MyEnum {}
204
- `;
205
-
206
- const result = await generateDocs([apexBundleFromRawString(input)], { namespace: 'MyNamespace' })();
207
- expect(result).documentationBundleHasLength(1);
208
- assertEither(result, (data) => expect(data).firstDocContains('## Namespace'));
209
- assertEither(result, (data) => expect(data).firstDocContains('MyNamespace'));
210
- });
211
-
212
- it('does not display the namespace if not present in the config', async () => {
213
- const input = `
214
- public enum MyEnum {}
215
- `;
216
-
217
- const result = await generateDocs([apexBundleFromRawString(input)])();
218
- expect(result).documentationBundleHasLength(1);
219
- assertEither(result, (data) => expect(data).firstDocContainsNot('## Namespace'));
220
- });
221
-
222
- it('displays a mermaid diagram', async () => {
223
- const input = `
224
- /**
225
- * @mermaid
226
- * \`\`\`mermaid
227
- * graph TD
228
- * A[Square Rect] -- Link text --> B((Circle))
229
- * A --> C(Round Rect)
230
- * B --> D{Rhombus}
231
- * C --> D
232
- * \`\`\`
233
- */
234
- public enum MyEnum {
235
- VALUE1,
236
- VALUE2
237
- }
238
- `;
239
-
240
- const result = await generateDocs([apexBundleFromRawString(input)])();
241
- expect(result).documentationBundleHasLength(1);
242
- assertEither(result, (data) => expect(data).firstDocContains('```mermaid'));
243
- assertEither(result, (data) => expect(data).firstDocContains('graph TD'));
244
- });
245
-
246
- it('displays an example code block', async () => {
247
- const input = `
248
- /**
249
- * @example
250
- * \`\`\`apex
251
- * public class MyClass {
252
- * public void myMethod() {
253
- * System.debug('Hello, World!');
254
- * }
255
- * }
256
- * \`\`\`
257
- */
258
- public enum MyEnum {
259
- VALUE1,
260
- VALUE2
261
- }
262
- `;
263
-
264
- const result = await generateDocs([apexBundleFromRawString(input)])();
265
- expect(result).documentationBundleHasLength(1);
266
- assertEither(result, (data) => expect(data).firstDocContains('```apex'));
267
- assertEither(result, (data) => expect(data).firstDocContains('public class MyClass'));
268
- });
269
-
270
- it('displays values', async () => {
271
- const input = `
272
- public enum MyEnum {
273
- VALUE1,
274
- VALUE2
275
- }
276
- `;
277
-
278
- const result = await generateDocs([apexBundleFromRawString(input)])();
279
- expect(result).documentationBundleHasLength(1);
280
- assertEither(result, (data) => expect(data).firstDocContains('## Values'));
281
- assertEither(result, (data) => expect(data).firstDocContains('VALUE1'));
282
- assertEither(result, (data) => expect(data).firstDocContains('VALUE2'));
283
- });
284
-
285
- it('displays values sorted when sortMembersAlphabetically is true', async () => {
286
- const input = `
287
- public enum MyEnum {
288
- VALUE2,
289
- VALUE1
290
- }
291
- `;
292
-
293
- const result = await generateDocs([apexBundleFromRawString(input)], { sortMembersAlphabetically: true })();
294
- expect(result).documentationBundleHasLength(1);
295
- assertEither(result, (data) => expect(data).firstDocContains('## Values'));
296
- assertEither(result, (data) => {
297
- const value1Index = data.docs[0].content.indexOf('VALUE1');
298
- const value2Index = data.docs[0].content.indexOf('VALUE2');
299
- expect(value1Index).toBeLessThan(value2Index);
300
- });
301
- });
302
-
303
- it('does not sort values when sortMembersAlphabetically is false', async () => {
304
- const input = `
305
- public enum MyEnum {
306
- VALUE2,
307
- VALUE1
308
- }
309
- `;
310
-
311
- const result = await generateDocs([apexBundleFromRawString(input)], { sortMembersAlphabetically: false })();
312
- expect(result).documentationBundleHasLength(1);
313
- assertEither(result, (data) => expect(data).firstDocContains('## Values'));
314
- assertEither(result, (data) => {
315
- const value1Index = data.docs[0].content.indexOf('VALUE1');
316
- const value2Index = data.docs[0].content.indexOf('VALUE2');
317
- expect(value1Index).toBeGreaterThan(value2Index);
318
- });
319
- });
320
- });
321
- });