@cparra/apexdocs 2.25.0-alpha.4 → 2.25.0-alpha.5

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 (189) hide show
  1. package/dist/cli/generate.js +2745 -39
  2. package/dist/defaults-DUwru49Q.js +12 -0
  3. package/dist/defaults-SH0Rsi5E.js +11 -0
  4. package/dist/index.d.ts +62 -2
  5. package/dist/index.js +36 -1
  6. package/examples/plain-markdown/docs/Miscellaneous/ns.BaseClass.md +1 -1
  7. package/examples/plain-markdown/docs/Miscellaneous/ns.MultiInheritanceClass.md +1 -1
  8. package/examples/plain-markdown/docs/Miscellaneous/ns.ParentInterface.md +1 -1
  9. package/examples/plain-markdown/docs/Miscellaneous/ns.ReferencedEnum.md +1 -1
  10. package/examples/plain-markdown/docs/Miscellaneous/ns.SampleException.md +1 -1
  11. package/examples/plain-markdown/docs/Miscellaneous/ns.SampleInterface.md +1 -1
  12. package/examples/plain-markdown/docs/Miscellaneous/ns.Url.md +1 -1
  13. package/examples/plain-markdown/docs/Sample-Enums/ns.SampleEnum.md +1 -1
  14. package/examples/plain-markdown/docs/SampleGroup/ns.SampleClass.md +1 -1
  15. package/examples/plain-markdown/docs/index.md +1 -1
  16. package/examples/plain-markdown/package.json +3 -4
  17. package/examples/vitepress/.forceignore +12 -0
  18. package/examples/vitepress/apexdocs.config.ts +108 -0
  19. package/examples/vitepress/config/project-scratch-def.json +13 -0
  20. package/examples/vitepress/docs/.vitepress/cache/deps/@theme_index.js +259 -0
  21. package/examples/vitepress/docs/.vitepress/cache/deps/@theme_index.js.map +7 -0
  22. package/examples/vitepress/docs/.vitepress/cache/deps/_metadata.json +40 -0
  23. package/examples/vitepress/docs/.vitepress/cache/deps/chunk-574YRH25.js +11474 -0
  24. package/examples/vitepress/docs/.vitepress/cache/deps/chunk-574YRH25.js.map +7 -0
  25. package/examples/vitepress/docs/.vitepress/cache/deps/chunk-E5DZZB2I.js +9172 -0
  26. package/examples/vitepress/docs/.vitepress/cache/deps/chunk-E5DZZB2I.js.map +7 -0
  27. package/examples/vitepress/docs/.vitepress/cache/deps/package.json +3 -0
  28. package/examples/vitepress/docs/.vitepress/cache/deps/vitepress___@vue_devtools-api.js +4339 -0
  29. package/examples/vitepress/docs/.vitepress/cache/deps/vitepress___@vue_devtools-api.js.map +7 -0
  30. package/examples/vitepress/docs/.vitepress/cache/deps/vitepress___@vueuse_core.js +567 -0
  31. package/examples/vitepress/docs/.vitepress/cache/deps/vitepress___@vueuse_core.js.map +7 -0
  32. package/examples/vitepress/docs/.vitepress/cache/deps/vue.js +323 -0
  33. package/examples/vitepress/docs/.vitepress/cache/deps/vue.js.map +7 -0
  34. package/examples/vitepress/docs/.vitepress/config.mts +21 -0
  35. package/examples/vitepress/docs/.vitepress/sidebar.json +119 -0
  36. package/examples/vitepress/docs/Miscellaneous/apexdocs.BaseClass.md +20 -0
  37. package/examples/vitepress/docs/Miscellaneous/apexdocs.MultiInheritanceClass.md +78 -0
  38. package/examples/vitepress/docs/Miscellaneous/apexdocs.ParentInterface.md +19 -0
  39. package/examples/vitepress/docs/Miscellaneous/apexdocs.ReferencedEnum.md +15 -0
  40. package/examples/vitepress/docs/Miscellaneous/apexdocs.SampleException.md +28 -0
  41. package/examples/vitepress/docs/Miscellaneous/apexdocs.SampleInterface.md +122 -0
  42. package/examples/vitepress/docs/Miscellaneous/apexdocs.Url.md +318 -0
  43. package/examples/vitepress/docs/Sample-Enums/apexdocs.SampleEnum.md +41 -0
  44. package/examples/vitepress/docs/SampleGroup/apexdocs.SampleClass.md +178 -0
  45. package/examples/vitepress/docs/api-examples.md +49 -0
  46. package/examples/vitepress/docs/index-frontmatter.md +16 -0
  47. package/examples/vitepress/docs/index.md +127 -0
  48. package/examples/vitepress/docs/markdown-examples.md +85 -0
  49. package/examples/vitepress/force-app/main/default/classes/BaseClass.cls +3 -0
  50. package/examples/vitepress/force-app/main/default/classes/MultiInheritanceClass.cls +1 -0
  51. package/examples/vitepress/force-app/main/default/classes/ParentInterface.cls +3 -0
  52. package/examples/vitepress/force-app/main/default/classes/ReferencedEnum.cls +5 -0
  53. package/examples/vitepress/force-app/main/default/classes/SampleClass.cls +72 -0
  54. package/examples/vitepress/force-app/main/default/classes/SampleEnum.cls +30 -0
  55. package/examples/vitepress/force-app/main/default/classes/SampleException.cls +17 -0
  56. package/examples/vitepress/force-app/main/default/classes/SampleInterface.cls +46 -0
  57. package/examples/vitepress/force-app/main/default/classes/Url.cls +195 -0
  58. package/examples/vitepress/package-lock.json +2574 -0
  59. package/examples/vitepress/package.json +18 -0
  60. package/examples/vitepress/sfdx-project.json +12 -0
  61. package/jest.config.js +1 -0
  62. package/package.json +10 -6
  63. package/src/application/Apexdocs.ts +16 -104
  64. package/src/application/__tests__/apex-file-reader.spec.ts +104 -0
  65. package/src/application/apex-file-reader.ts +42 -0
  66. package/src/application/file-writer.ts +25 -0
  67. package/src/application/generators/markdown.ts +53 -0
  68. package/src/application/generators/openapi.ts +56 -0
  69. package/src/cli/args.ts +17 -112
  70. package/src/cli/commands/markdown.ts +58 -0
  71. package/src/cli/generate.ts +7 -5
  72. package/src/{model/__tests__ → core/__test__}/manifest.spec.ts +1 -1
  73. package/src/core/manifest.ts +57 -51
  74. package/src/{__spec__/core → core/markdown/__test__}/expect-extensions.ts +5 -5
  75. package/src/core/markdown/__test__/generating-class-docs.spec.ts +727 -0
  76. package/src/{__spec__/core → core/markdown/__test__}/generating-enum-docs.spec.ts +82 -59
  77. package/src/{__spec__/core → core/markdown/__test__}/generating-interface-docs.spec.ts +94 -75
  78. package/src/core/markdown/__test__/generating-reference-guide.spec.ts +184 -0
  79. package/src/core/{__test__ → markdown/__test__}/inheritance-chain.test.ts +2 -2
  80. package/src/core/markdown/__test__/test-helpers.ts +22 -0
  81. package/src/core/{adapters → markdown/adapters}/__tests__/interface-adapter.spec.ts +38 -8
  82. package/src/core/{adapters → markdown/adapters}/apex-types.ts +7 -4
  83. package/src/core/{adapters → markdown/adapters}/inline.ts +1 -1
  84. package/src/core/markdown/adapters/renderable-bundle.ts +144 -0
  85. package/src/core/markdown/adapters/renderable-to-page-data.ts +92 -0
  86. package/src/core/{adapters → markdown/adapters}/types.d.ts +16 -2
  87. package/src/core/markdown/generate-docs.ts +158 -0
  88. package/src/core/markdown/reflection/error-handling.ts +37 -0
  89. package/src/core/markdown/reflection/filter-scope.ts +13 -0
  90. package/src/core/markdown/reflection/inheritance-chain-expanion.ts +22 -0
  91. package/src/core/markdown/reflection/inherited-member-expansion.ts +105 -0
  92. package/src/core/markdown/reflection/reflect-source.ts +41 -0
  93. package/src/core/markdown/reflection/sort-members.ts +59 -0
  94. package/src/{transpiler/markdown/plain-markdown → core/markdown/templates}/class-template.ts +2 -0
  95. package/src/core/markdown/templates/hookable.ts +7 -0
  96. package/src/core/{template.ts → markdown/templates/template.ts} +12 -12
  97. package/src/core/markdown/utils.ts +3 -0
  98. package/src/{transpiler → core}/openapi/__tests__/open-api-docs-processor.spec.ts +1 -1
  99. package/src/{model → core/openapi}/apex-type-wrappers/__tests__/ClassMirrorWrapper.spec.ts +3 -3
  100. package/src/core/openapi/file-container.ts +13 -0
  101. package/src/{service → core/openapi}/manifest-factory.ts +3 -3
  102. package/src/{transpiler → core}/openapi/open-api-docs-processor.ts +9 -10
  103. package/src/core/openapi/openapi-type-file.ts +14 -0
  104. package/src/{service → core/openapi}/parser.ts +8 -8
  105. package/src/{transpiler → core}/openapi/parsers/Builder.ts +2 -2
  106. package/src/{transpiler → core}/openapi/parsers/MethodParser.ts +5 -5
  107. package/src/{transpiler → core}/openapi/parsers/ParameterObjectBuilder.ts +2 -2
  108. package/src/{transpiler → core}/openapi/parsers/ReferenceBuilder.ts +3 -3
  109. package/src/{transpiler → core}/openapi/parsers/RequestBodyBuilder.ts +2 -2
  110. package/src/{transpiler → core}/openapi/parsers/ResponsesBuilder.ts +2 -2
  111. package/src/{transpiler → core}/openapi/parsers/__tests__/MethodParser.spec.ts +1 -1
  112. package/src/{transpiler → core}/openapi/parsers/__tests__/ParameterObjectBuilder.spec.ts +2 -2
  113. package/src/{transpiler → core}/openapi/parsers/__tests__/ReferenceBuilder.spec.ts +2 -2
  114. package/src/{transpiler → core}/openapi/parsers/__tests__/RequestBodyBuilder.spec.ts +2 -2
  115. package/src/{transpiler → core}/openapi/parsers/__tests__/ResponsesBuilder.spec.ts +1 -1
  116. package/src/{transpiler → core/openapi}/transpiler.ts +2 -6
  117. package/src/{model → core/openapi}/types-repository.ts +0 -9
  118. package/src/core/parse-apex-metadata.ts +14 -0
  119. package/src/core/settings.ts +56 -0
  120. package/src/core/shared/types.d.ts +92 -0
  121. package/src/core/shared/utils.ts +5 -0
  122. package/src/defaults.ts +8 -0
  123. package/src/index.ts +34 -2
  124. package/src/test-helpers/InterfaceMirrorBuilder.ts +0 -5
  125. package/src/test-helpers/SettingsBuilder.ts +1 -3
  126. package/src/util/logger.ts +2 -2
  127. package/src/util/string-utils.ts +0 -4
  128. package/tsconfig.json +5 -1
  129. package/apexdocs.config.ts +0 -13
  130. package/examples/plain-markdown/template.md +0 -3
  131. package/src/__spec__/core/generating-class-docs.spec.ts +0 -531
  132. package/src/__spec__/core/generating-reference-guide.spec.ts +0 -164
  133. package/src/__spec__/core/test-helpers.ts +0 -9
  134. package/src/application/generators/generate-markdown-files.ts +0 -53
  135. package/src/core/apex-bundle.ts +0 -3
  136. package/src/core/generate-docs.ts +0 -432
  137. package/src/model/markdown-file.ts +0 -122
  138. package/src/model/markdown-generation-util/doc-comment-annotation-util.ts +0 -50
  139. package/src/model/markdown-generation-util/field-declaration-util.ts +0 -71
  140. package/src/model/markdown-generation-util/index.ts +0 -3
  141. package/src/model/markdown-generation-util/method-declaration-util.ts +0 -166
  142. package/src/model/markdown-generation-util/type-declaration-util.ts +0 -91
  143. package/src/model/markdown-home-file.ts +0 -58
  144. package/src/model/markdown-type-file.ts +0 -169
  145. package/src/model/openapi/openapi-type-file.ts +0 -14
  146. package/src/model/outputFile.ts +0 -20
  147. package/src/service/__tests__/apex-file-reader.spec.ts +0 -93
  148. package/src/service/apex-file-reader.ts +0 -47
  149. package/src/service/file-writer.ts +0 -34
  150. package/src/service/metadata-processor.ts +0 -16
  151. package/src/service/state.ts +0 -24
  152. package/src/service/walkers/class-walker.ts +0 -30
  153. package/src/service/walkers/enum-walker.ts +0 -7
  154. package/src/service/walkers/interface-walker.ts +0 -12
  155. package/src/service/walkers/walker-factory.ts +0 -19
  156. package/src/service/walkers/walker.ts +0 -42
  157. package/src/settings.ts +0 -143
  158. package/src/transpiler/factory.ts +0 -31
  159. package/src/transpiler/file-container.ts +0 -13
  160. package/src/transpiler/generator-choices.ts +0 -1
  161. package/src/transpiler/markdown/class-file-generatorHelper.ts +0 -61
  162. package/src/transpiler/markdown/docsify/docsify-docs-processor.ts +0 -12
  163. package/src/transpiler/markdown/jekyll/jekyll-docsProcessor.ts +0 -50
  164. package/src/transpiler/markdown/markdown-transpiler-base.ts +0 -28
  165. package/src/transpiler/processor-type-transpiler.ts +0 -18
  166. /package/src/{service → application}/file-system.ts +0 -0
  167. /package/src/core/{adapters → markdown/adapters}/__tests__/documentables.spec.ts +0 -0
  168. /package/src/core/{adapters → markdown/adapters}/__tests__/references.spec.ts +0 -0
  169. /package/src/core/{adapters → markdown/adapters}/documentables.ts +0 -0
  170. /package/src/core/{adapters → markdown/adapters}/fields-and-properties.ts +0 -0
  171. /package/src/core/{adapters → markdown/adapters}/methods-and-constructors.ts +0 -0
  172. /package/src/core/{adapters → markdown/adapters}/type-utils.ts +0 -0
  173. /package/src/core/{inheritance-chain.ts → markdown/reflection/inheritance-chain.ts} +0 -0
  174. /package/src/{transpiler/markdown/plain-markdown → core/markdown/templates}/constructors-partial-template.ts +0 -0
  175. /package/src/{transpiler/markdown/plain-markdown → core/markdown/templates}/documentable-partial-template.ts +0 -0
  176. /package/src/{transpiler/markdown/plain-markdown → core/markdown/templates}/enum-template.ts +0 -0
  177. /package/src/{transpiler/markdown/plain-markdown → core/markdown/templates}/fieldsPartialTemplate.ts +0 -0
  178. /package/src/{transpiler/markdown/plain-markdown → core/markdown/templates}/grouped-members-partial-template.ts +0 -0
  179. /package/src/{transpiler/markdown/plain-markdown → core/markdown/templates}/interface-template.ts +0 -0
  180. /package/src/{transpiler/markdown/plain-markdown → core/markdown/templates}/methods-partial-template.ts +0 -0
  181. /package/src/core/{templates → markdown/templates}/reference-guide.ts +0 -0
  182. /package/src/{transpiler/markdown/plain-markdown → core/markdown/templates}/type-doc-partial.ts +0 -0
  183. /package/src/{service → core/openapi}/__tests__/manifest-factory.spec.ts +0 -0
  184. /package/src/{model → core}/openapi/__tests__/open-api.spec.ts +0 -0
  185. /package/src/{model → core}/openapi/apex-doc-types.ts +0 -0
  186. /package/src/{model → core/openapi}/apex-type-wrappers/ClassMirrorWrapper.ts +0 -0
  187. /package/src/{model → core/openapi}/apex-type-wrappers/MethodMirrorWrapper.ts +0 -0
  188. /package/src/{model → core}/openapi/open-api-types.ts +0 -0
  189. /package/src/{model → core}/openapi/open-api.ts +0 -0
@@ -1,6 +1,5 @@
1
- import { generateDocs } from '../../core/generate-docs';
2
1
  import { assertEither, extendExpect } from './expect-extensions';
3
- import { apexBundleFromRawString } from './test-helpers';
2
+ import { apexBundleFromRawString, generateDocs } from './test-helpers';
4
3
 
5
4
  describe('Generates enum documentation', () => {
6
5
  beforeAll(() => {
@@ -8,7 +7,7 @@ describe('Generates enum documentation', () => {
8
7
  });
9
8
 
10
9
  describe('documentation output', () => {
11
- it('always returns markdown as the format', () => {
10
+ it('returns the name of the enum', async () => {
12
11
  const input = `
13
12
  public enum MyEnum {
14
13
  VALUE1,
@@ -16,24 +15,12 @@ describe('Generates enum documentation', () => {
16
15
  }
17
16
  `;
18
17
 
19
- const result = generateDocs([apexBundleFromRawString(input)]);
20
- assertEither(result, (data) => expect(data.format).toBe('markdown'));
21
- });
22
-
23
- it('returns the name of the enum', () => {
24
- const input = `
25
- public enum MyEnum {
26
- VALUE1,
27
- VALUE2
28
- }
29
- `;
30
-
31
- const result = generateDocs([apexBundleFromRawString(input)]);
18
+ const result = await generateDocs([apexBundleFromRawString(input)])();
32
19
  expect(result).documentationBundleHasLength(1);
33
- assertEither(result, (data) => expect(data.docs[0].typeName).toBe('MyEnum'));
20
+ assertEither(result, (data) => expect(data.docs[0].fileName).toBe('MyEnum'));
34
21
  });
35
22
 
36
- it('returns the type as enum', () => {
23
+ it('returns the type as enum', async () => {
37
24
  const input = `
38
25
  public enum MyEnum {
39
26
  VALUE1,
@@ -41,12 +28,12 @@ describe('Generates enum documentation', () => {
41
28
  }
42
29
  `;
43
30
 
44
- const result = generateDocs([apexBundleFromRawString(input)]);
31
+ const result = await generateDocs([apexBundleFromRawString(input)])();
45
32
  expect(result).documentationBundleHasLength(1);
46
- assertEither(result, (data) => expect(data.docs[0].type).toBe('enum'));
33
+ assertEither(result, (data) => expect(data.docs[0].source.type).toBe('enum'));
47
34
  });
48
35
 
49
- it('does not return enums out of scope', () => {
36
+ it('does not return enums out of scope', async () => {
50
37
  const input1 = `
51
38
  global enum MyEnum {
52
39
  VALUE1,
@@ -61,13 +48,13 @@ describe('Generates enum documentation', () => {
61
48
  }
62
49
  `;
63
50
 
64
- const result = generateDocs([apexBundleFromRawString(input1), apexBundleFromRawString(input2)], {
51
+ const result = await generateDocs([apexBundleFromRawString(input1), apexBundleFromRawString(input2)], {
65
52
  scope: ['global'],
66
- });
53
+ })();
67
54
  expect(result).documentationBundleHasLength(1);
68
55
  });
69
56
 
70
- it('does not return enums that have an @ignore in the docs', () => {
57
+ it('does not return enums that have an @ignore in the docs', async () => {
71
58
  const input = `
72
59
  /**
73
60
  * @ignore
@@ -78,13 +65,13 @@ describe('Generates enum documentation', () => {
78
65
  }
79
66
  `;
80
67
 
81
- const result = generateDocs([apexBundleFromRawString(input)]);
68
+ const result = await generateDocs([apexBundleFromRawString(input)])();
82
69
  expect(result).documentationBundleHasLength(0);
83
70
  });
84
71
  });
85
72
 
86
73
  describe('documentation content', () => {
87
- it('generates a heading with the enum name', () => {
74
+ it('generates a heading with the enum name', async () => {
88
75
  const input = `
89
76
  public enum MyEnum {
90
77
  VALUE1,
@@ -94,12 +81,12 @@ describe('Generates enum documentation', () => {
94
81
 
95
82
  const output = `# MyEnum Enum`;
96
83
 
97
- const result = generateDocs([apexBundleFromRawString(input)]);
84
+ const result = await generateDocs([apexBundleFromRawString(input)])();
98
85
  expect(result).documentationBundleHasLength(1);
99
86
  assertEither(result, (data) => expect(data).firstDocContains(output));
100
87
  });
101
88
 
102
- it('displays type level annotations', () => {
89
+ it('displays type level annotations', async () => {
103
90
  const input = `
104
91
  @NamespaceAccessible
105
92
  public enum MyEnum {
@@ -108,12 +95,12 @@ describe('Generates enum documentation', () => {
108
95
  }
109
96
  `;
110
97
 
111
- const result = generateDocs([apexBundleFromRawString(input)]);
98
+ const result = await generateDocs([apexBundleFromRawString(input)])();
112
99
  expect(result).documentationBundleHasLength(1);
113
100
  assertEither(result, (data) => expect(data).firstDocContains('NAMESPACEACCESSIBLE'));
114
101
  });
115
102
 
116
- it('displays the description', () => {
103
+ it('displays the description', async () => {
117
104
  const input = `
118
105
  /**
119
106
  * This is a description
@@ -124,12 +111,12 @@ describe('Generates enum documentation', () => {
124
111
  }
125
112
  `;
126
113
 
127
- const result = generateDocs([apexBundleFromRawString(input)]);
114
+ const result = await generateDocs([apexBundleFromRawString(input)])();
128
115
  expect(result).documentationBundleHasLength(1);
129
116
  assertEither(result, (data) => expect(data).firstDocContains('This is a description'));
130
117
  });
131
118
 
132
- it('display custom documentation tags', () => {
119
+ it('display custom documentation tags', async () => {
133
120
  const input = `
134
121
  /**
135
122
  * @custom-tag My Value
@@ -140,13 +127,13 @@ describe('Generates enum documentation', () => {
140
127
  }
141
128
  `;
142
129
 
143
- const result = generateDocs([apexBundleFromRawString(input)]);
130
+ const result = await generateDocs([apexBundleFromRawString(input)])();
144
131
  expect(result).documentationBundleHasLength(1);
145
132
  assertEither(result, (data) => expect(data).firstDocContains('Custom Tag'));
146
133
  assertEither(result, (data) => expect(data).firstDocContains('My Value'));
147
134
  });
148
135
 
149
- it('displays the group', () => {
136
+ it('displays the group', async () => {
150
137
  const input = `
151
138
  /**
152
139
  * @group MyGroup
@@ -157,13 +144,13 @@ describe('Generates enum documentation', () => {
157
144
  }
158
145
  `;
159
146
 
160
- const result = generateDocs([apexBundleFromRawString(input)]);
147
+ const result = await generateDocs([apexBundleFromRawString(input)])();
161
148
  expect(result).documentationBundleHasLength(1);
162
149
  assertEither(result, (data) => expect(data).firstDocContains('Group'));
163
150
  assertEither(result, (data) => expect(data).firstDocContains('MyGroup'));
164
151
  });
165
152
 
166
- it('displays the author', () => {
153
+ it('displays the author', async () => {
167
154
  const input = `
168
155
  /**
169
156
  * @author John Doe
@@ -174,13 +161,13 @@ describe('Generates enum documentation', () => {
174
161
  }
175
162
  `;
176
163
 
177
- const result = generateDocs([apexBundleFromRawString(input)]);
164
+ const result = await generateDocs([apexBundleFromRawString(input)])();
178
165
  expect(result).documentationBundleHasLength(1);
179
166
  assertEither(result, (data) => expect(data).firstDocContains('Author'));
180
167
  assertEither(result, (data) => expect(data).firstDocContains('John Doe'));
181
168
  });
182
169
 
183
- it('displays the date', () => {
170
+ it('displays the date', async () => {
184
171
  const input = `
185
172
  /**
186
173
  * @date 2021-01-01
@@ -191,13 +178,13 @@ describe('Generates enum documentation', () => {
191
178
  }
192
179
  `;
193
180
 
194
- const result = generateDocs([apexBundleFromRawString(input)]);
181
+ const result = await generateDocs([apexBundleFromRawString(input)])();
195
182
  expect(result).documentationBundleHasLength(1);
196
183
  assertEither(result, (data) => expect(data).firstDocContains('Date'));
197
184
  assertEither(result, (data) => expect(data).firstDocContains('2021-01-01'));
198
185
  });
199
186
 
200
- it('displays descriptions', () => {
187
+ it('displays descriptions', async () => {
201
188
  const input = `
202
189
  /**
203
190
  * @description This is a description
@@ -205,12 +192,12 @@ describe('Generates enum documentation', () => {
205
192
  public enum MyEnum {}
206
193
  `;
207
194
 
208
- const result = generateDocs([apexBundleFromRawString(input)]);
195
+ const result = await generateDocs([apexBundleFromRawString(input)])();
209
196
  expect(result).documentationBundleHasLength(1);
210
197
  assertEither(result, (data) => expect(data).firstDocContains('This is a description'));
211
198
  });
212
199
 
213
- it('displays descriptions with links', () => {
200
+ it('displays descriptions with links', async () => {
214
201
  const input1 = `
215
202
  /**
216
203
  * @description This is a description with a {@link EnumRef} reference
@@ -220,7 +207,7 @@ describe('Generates enum documentation', () => {
220
207
 
221
208
  const input2 = 'public enum EnumRef {}';
222
209
 
223
- const result = generateDocs([apexBundleFromRawString(input1), apexBundleFromRawString(input2)]);
210
+ const result = await generateDocs([apexBundleFromRawString(input1), apexBundleFromRawString(input2)])();
224
211
  expect(result).documentationBundleHasLength(2);
225
212
  assertEither(result, (data) => expect(data).firstDocContains('Description'));
226
213
  assertEither(result, (data) =>
@@ -228,7 +215,7 @@ describe('Generates enum documentation', () => {
228
215
  );
229
216
  });
230
217
 
231
- it('displays descriptions with emails', () => {
218
+ it('displays descriptions with emails', async () => {
232
219
  const input = `
233
220
  /**
234
221
  * @description This is a description with an {@email test@testerson.com} email
@@ -236,7 +223,7 @@ describe('Generates enum documentation', () => {
236
223
  public enum MyEnum {}
237
224
  `;
238
225
 
239
- const result = generateDocs([apexBundleFromRawString(input)]);
226
+ const result = await generateDocs([apexBundleFromRawString(input)])();
240
227
  expect(result).documentationBundleHasLength(1);
241
228
  assertEither(result, (data) =>
242
229
  expect(data).firstDocContains(
@@ -245,7 +232,7 @@ describe('Generates enum documentation', () => {
245
232
  );
246
233
  });
247
234
 
248
- it('displays sees with accurately resolved links', () => {
235
+ it('displays sees with accurately resolved links', async () => {
249
236
  const input1 = `
250
237
  /**
251
238
  * @see EnumRef
@@ -255,13 +242,13 @@ describe('Generates enum documentation', () => {
255
242
 
256
243
  const input2 = 'public enum EnumRef {}';
257
244
 
258
- const result = generateDocs([apexBundleFromRawString(input1), apexBundleFromRawString(input2)]);
245
+ const result = await generateDocs([apexBundleFromRawString(input1), apexBundleFromRawString(input2)])();
259
246
  expect(result).documentationBundleHasLength(2);
260
247
  assertEither(result, (data) => expect(data).firstDocContains('See'));
261
248
  assertEither(result, (data) => expect(data).firstDocContains('[EnumRef](./EnumRef.md)'));
262
249
  });
263
250
 
264
- it('displays sees without links when the reference is not found', () => {
251
+ it('displays sees without links when the reference is not found', async () => {
265
252
  const input = `
266
253
  /**
267
254
  * @see EnumRef
@@ -269,34 +256,34 @@ describe('Generates enum documentation', () => {
269
256
  public enum MyEnum {}
270
257
  `;
271
258
 
272
- const result = generateDocs([apexBundleFromRawString(input)]);
259
+ const result = await generateDocs([apexBundleFromRawString(input)])();
273
260
  expect(result).documentationBundleHasLength(1);
274
261
  assertEither(result, (data) => expect(data).firstDocContains('See'));
275
262
  assertEither(result, (data) => expect(data).firstDocContains('EnumRef'));
276
263
  });
277
264
 
278
- it('displays the namespace if present in the config', () => {
265
+ it('displays the namespace if present in the config', async () => {
279
266
  const input = `
280
267
  public enum MyEnum {}
281
268
  `;
282
269
 
283
- const result = generateDocs([apexBundleFromRawString(input)], { namespace: 'MyNamespace' });
270
+ const result = await generateDocs([apexBundleFromRawString(input)], { namespace: 'MyNamespace' })();
284
271
  expect(result).documentationBundleHasLength(1);
285
272
  assertEither(result, (data) => expect(data).firstDocContains('## Namespace'));
286
273
  assertEither(result, (data) => expect(data).firstDocContains('MyNamespace'));
287
274
  });
288
275
 
289
- it('does not display the namespace if not present in the config', () => {
276
+ it('does not display the namespace if not present in the config', async () => {
290
277
  const input = `
291
278
  public enum MyEnum {}
292
279
  `;
293
280
 
294
- const result = generateDocs([apexBundleFromRawString(input)]);
281
+ const result = await generateDocs([apexBundleFromRawString(input)])();
295
282
  expect(result).documentationBundleHasLength(1);
296
283
  assertEither(result, (data) => expect(data).firstDocContainsNot('## Namespace'));
297
284
  });
298
285
 
299
- it('displays a mermaid diagram', () => {
286
+ it('displays a mermaid diagram', async () => {
300
287
  const input = `
301
288
  /**
302
289
  * @mermaid
@@ -312,13 +299,13 @@ describe('Generates enum documentation', () => {
312
299
  }
313
300
  `;
314
301
 
315
- const result = generateDocs([apexBundleFromRawString(input)]);
302
+ const result = await generateDocs([apexBundleFromRawString(input)])();
316
303
  expect(result).documentationBundleHasLength(1);
317
304
  assertEither(result, (data) => expect(data).firstDocContains('```mermaid'));
318
305
  assertEither(result, (data) => expect(data).firstDocContains('graph TD'));
319
306
  });
320
307
 
321
- it('displays an example code block', () => {
308
+ it('displays an example code block', async () => {
322
309
  const input = `
323
310
  /**
324
311
  * @example
@@ -334,13 +321,13 @@ describe('Generates enum documentation', () => {
334
321
  }
335
322
  `;
336
323
 
337
- const result = generateDocs([apexBundleFromRawString(input)]);
324
+ const result = await generateDocs([apexBundleFromRawString(input)])();
338
325
  expect(result).documentationBundleHasLength(1);
339
326
  assertEither(result, (data) => expect(data).firstDocContains('```apex'));
340
327
  assertEither(result, (data) => expect(data).firstDocContains('public class MyClass'));
341
328
  });
342
329
 
343
- it('displays values', () => {
330
+ it('displays values', async () => {
344
331
  const input = `
345
332
  public enum MyEnum {
346
333
  VALUE1,
@@ -348,11 +335,47 @@ describe('Generates enum documentation', () => {
348
335
  }
349
336
  `;
350
337
 
351
- const result = generateDocs([apexBundleFromRawString(input)]);
338
+ const result = await generateDocs([apexBundleFromRawString(input)])();
352
339
  expect(result).documentationBundleHasLength(1);
353
340
  assertEither(result, (data) => expect(data).firstDocContains('## Values'));
354
341
  assertEither(result, (data) => expect(data).firstDocContains('VALUE1'));
355
342
  assertEither(result, (data) => expect(data).firstDocContains('VALUE2'));
356
343
  });
344
+
345
+ it('displays values sorted when sortMembersAlphabetically is true', async () => {
346
+ const input = `
347
+ public enum MyEnum {
348
+ VALUE2,
349
+ VALUE1
350
+ }
351
+ `;
352
+
353
+ const result = await generateDocs([apexBundleFromRawString(input)], { sortMembersAlphabetically: true })();
354
+ expect(result).documentationBundleHasLength(1);
355
+ assertEither(result, (data) => expect(data).firstDocContains('## Values'));
356
+ assertEither(result, (data) => {
357
+ const value1Index = data.docs[0].content.indexOf('VALUE1');
358
+ const value2Index = data.docs[0].content.indexOf('VALUE2');
359
+ expect(value1Index).toBeLessThan(value2Index);
360
+ });
361
+ });
362
+
363
+ it('does not sort values when sortMembersAlphabetically is false', async () => {
364
+ const input = `
365
+ public enum MyEnum {
366
+ VALUE2,
367
+ VALUE1
368
+ }
369
+ `;
370
+
371
+ const result = await generateDocs([apexBundleFromRawString(input)], { sortMembersAlphabetically: false })();
372
+ expect(result).documentationBundleHasLength(1);
373
+ assertEither(result, (data) => expect(data).firstDocContains('## Values'));
374
+ assertEither(result, (data) => {
375
+ const value1Index = data.docs[0].content.indexOf('VALUE1');
376
+ const value2Index = data.docs[0].content.indexOf('VALUE2');
377
+ expect(value1Index).toBeGreaterThan(value2Index);
378
+ });
379
+ });
357
380
  });
358
381
  });