@cparra/apex-reflection 0.1.0-alpha.0 → 0.1.1-alpha.10

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 (158) hide show
  1. package/__tests__/end-to-end.test.ts +256 -0
  2. package/coverage/clover.xml +12857 -0
  3. package/coverage/coverage-final.json +3 -0
  4. package/coverage/lcov-report/base.css +224 -0
  5. package/coverage/lcov-report/block-navigation.js +79 -0
  6. package/coverage/lcov-report/favicon.png +0 -0
  7. package/coverage/lcov-report/index.html +126 -0
  8. package/coverage/lcov-report/index.js.html +104 -0
  9. package/coverage/lcov-report/out.js.html +41126 -0
  10. package/coverage/lcov-report/prettify.css +1 -0
  11. package/coverage/lcov-report/prettify.js +2 -0
  12. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  13. package/coverage/lcov-report/sorter.js +170 -0
  14. package/coverage/lcov.info +24801 -0
  15. package/index.d.ts +118 -0
  16. package/index.js +8 -0
  17. package/index.ts +141 -0
  18. package/jest.config.js +11 -0
  19. package/out.js +13708 -0
  20. package/package.json +22 -17
  21. package/tsconfig.json +5 -3
  22. package/.idea/apexdocs-dart.iml +0 -18
  23. package/.idea/jsLibraryMappings.xml +0 -6
  24. package/.idea/libraries/Dart_Packages.xml +0 -556
  25. package/.idea/libraries/Dart_SDK.xml +0 -28
  26. package/.idea/misc.xml +0 -6
  27. package/.idea/modules.xml +0 -8
  28. package/.idea/runConfigurations/_template__of_Dart_Test.xml +0 -6
  29. package/.idea/vcs.xml +0 -6
  30. package/CHANGELOG.md +0 -3
  31. package/README.md +0 -26
  32. package/TODO.md +0 -5
  33. package/analysis_options.yaml +0 -30
  34. package/antlr4-4.9.2/CHANGELOG.md +0 -4
  35. package/antlr4-4.9.2/LICENSE +0 -52
  36. package/antlr4-4.9.2/README.md +0 -11
  37. package/antlr4-4.9.2/analysis_options.yaml +0 -1
  38. package/antlr4-4.9.2/lib/antlr4.dart +0 -21
  39. package/antlr4-4.9.2/lib/src/atn/atn.dart +0 -18
  40. package/antlr4-4.9.2/lib/src/atn/src/atn.dart +0 -170
  41. package/antlr4-4.9.2/lib/src/atn/src/atn_config.dart +0 -242
  42. package/antlr4-4.9.2/lib/src/atn/src/atn_config_set.dart +0 -283
  43. package/antlr4-4.9.2/lib/src/atn/src/atn_deserializer.dart +0 -809
  44. package/antlr4-4.9.2/lib/src/atn/src/atn_simulator.dart +0 -95
  45. package/antlr4-4.9.2/lib/src/atn/src/atn_state.dart +0 -296
  46. package/antlr4-4.9.2/lib/src/atn/src/atn_type.dart +0 -14
  47. package/antlr4-4.9.2/lib/src/atn/src/info.dart +0 -553
  48. package/antlr4-4.9.2/lib/src/atn/src/lexer_action.dart +0 -601
  49. package/antlr4-4.9.2/lib/src/atn/src/lexer_action_executor.dart +0 -167
  50. package/antlr4-4.9.2/lib/src/atn/src/lexer_atn_simulator.dart +0 -731
  51. package/antlr4-4.9.2/lib/src/atn/src/parser_atn_simulator.dart +0 -2630
  52. package/antlr4-4.9.2/lib/src/atn/src/profiling_atn_simulator.dart +0 -229
  53. package/antlr4-4.9.2/lib/src/atn/src/semantic_context.dart +0 -404
  54. package/antlr4-4.9.2/lib/src/atn/src/transition.dart +0 -305
  55. package/antlr4-4.9.2/lib/src/dfa/dfa.dart +0 -8
  56. package/antlr4-4.9.2/lib/src/dfa/src/dfa.dart +0 -138
  57. package/antlr4-4.9.2/lib/src/dfa/src/dfa_serializer.dart +0 -76
  58. package/antlr4-4.9.2/lib/src/dfa/src/dfa_state.dart +0 -151
  59. package/antlr4-4.9.2/lib/src/error/error.dart +0 -10
  60. package/antlr4-4.9.2/lib/src/error/src/diagnostic_error_listener.dart +0 -116
  61. package/antlr4-4.9.2/lib/src/error/src/error_listener.dart +0 -241
  62. package/antlr4-4.9.2/lib/src/error/src/error_strategy.dart +0 -902
  63. package/antlr4-4.9.2/lib/src/error/src/errors.dart +0 -204
  64. package/antlr4-4.9.2/lib/src/input_stream.dart +0 -335
  65. package/antlr4-4.9.2/lib/src/interval_set.dart +0 -735
  66. package/antlr4-4.9.2/lib/src/lexer.dart +0 -343
  67. package/antlr4-4.9.2/lib/src/ll1_analyzer.dart +0 -204
  68. package/antlr4-4.9.2/lib/src/misc/multi_map.dart +0 -32
  69. package/antlr4-4.9.2/lib/src/misc/pair.dart +0 -34
  70. package/antlr4-4.9.2/lib/src/parser.dart +0 -777
  71. package/antlr4-4.9.2/lib/src/parser_interpreter.dart +0 -393
  72. package/antlr4-4.9.2/lib/src/parser_rule_context.dart +0 -275
  73. package/antlr4-4.9.2/lib/src/prediction_context.dart +0 -877
  74. package/antlr4-4.9.2/lib/src/recognizer.dart +0 -182
  75. package/antlr4-4.9.2/lib/src/rule_context.dart +0 -192
  76. package/antlr4-4.9.2/lib/src/runtime_meta_data.dart +0 -188
  77. package/antlr4-4.9.2/lib/src/token.dart +0 -431
  78. package/antlr4-4.9.2/lib/src/token_factory.dart +0 -88
  79. package/antlr4-4.9.2/lib/src/token_source.dart +0 -241
  80. package/antlr4-4.9.2/lib/src/token_stream.dart +0 -627
  81. package/antlr4-4.9.2/lib/src/tree/src/pattern/chunk.dart +0 -90
  82. package/antlr4-4.9.2/lib/src/tree/src/pattern/parse_tree_match.dart +0 -635
  83. package/antlr4-4.9.2/lib/src/tree/src/tree.dart +0 -370
  84. package/antlr4-4.9.2/lib/src/tree/src/trees.dart +0 -226
  85. package/antlr4-4.9.2/lib/src/tree/tree.dart +0 -10
  86. package/antlr4-4.9.2/lib/src/util/bit_set.dart +0 -308
  87. package/antlr4-4.9.2/lib/src/util/murmur_hash.dart +0 -77
  88. package/antlr4-4.9.2/lib/src/util/utils.dart +0 -31
  89. package/antlr4-4.9.2/lib/src/vocabulary.dart +0 -254
  90. package/antlr4-4.9.2/pubspec.yaml +0 -13
  91. package/example/node_example/index.js +0 -8
  92. package/example/node_example/package.json +0 -12
  93. package/example/node_example_ts/package-lock.json +0 -70
  94. package/example/node_example_ts/package.json +0 -19
  95. package/example/node_example_ts/src/index.js +0 -5
  96. package/example/node_example_ts/src/index.ts +0 -9
  97. package/example/node_example_ts/tsconfig.json +0 -79
  98. package/js/dart2jsout.js +0 -25898
  99. package/js/dart2jsout.js.map +0 -16
  100. package/js/index.d.ts +0 -1
  101. package/js/index.js +0 -4
  102. package/js/out.js +0 -26023
  103. package/js/out.js.map +0 -16
  104. package/js/package-lock.json +0 -57
  105. package/js/preamble.js +0 -125
  106. package/lib/apexdocs_dart.dart +0 -28
  107. package/lib/src/antlr/grammars/Apexdoc/ApexdocLexer.g4 +0 -120
  108. package/lib/src/antlr/grammars/Apexdoc/ApexdocParser.g4 +0 -158
  109. package/lib/src/antlr/grammars/Apexdoc/gen/ApexdocLexer.interp +0 -95
  110. package/lib/src/antlr/grammars/Apexdoc/gen/ApexdocLexer.java +0 -238
  111. package/lib/src/antlr/grammars/Apexdoc/gen/ApexdocLexer.tokens +0 -23
  112. package/lib/src/antlr/grammars/apex/ApexLexer.g4 +0 -255
  113. package/lib/src/antlr/grammars/apex/ApexParser.g4 +0 -567
  114. package/lib/src/antlr/grammars/apex/examples/ApexClass.cls +0 -6
  115. package/lib/src/antlr/lib/apex/ApexLexer.dart +0 -1223
  116. package/lib/src/antlr/lib/apex/ApexLexer.interp +0 -393
  117. package/lib/src/antlr/lib/apex/ApexLexer.tokens +0 -212
  118. package/lib/src/antlr/lib/apex/ApexParser.dart +0 -9349
  119. package/lib/src/antlr/lib/apex/ApexParser.interp +0 -326
  120. package/lib/src/antlr/lib/apex/ApexParser.tokens +0 -212
  121. package/lib/src/antlr/lib/apex/ApexParserBaseListener.dart +0 -1036
  122. package/lib/src/antlr/lib/apex/ApexParserListener.dart +0 -975
  123. package/lib/src/antlr/lib/apexdoc/ApexdocLexer.dart +0 -373
  124. package/lib/src/antlr/lib/apexdoc/ApexdocLexer.interp +0 -95
  125. package/lib/src/antlr/lib/apexdoc/ApexdocLexer.tokens +0 -23
  126. package/lib/src/antlr/lib/apexdoc/ApexdocParser.dart +0 -2471
  127. package/lib/src/antlr/lib/apexdoc/ApexdocParser.interp +0 -69
  128. package/lib/src/antlr/lib/apexdoc/ApexdocParser.tokens +0 -23
  129. package/lib/src/antlr/lib/apexdoc/ApexdocParserBaseListener.dart +0 -252
  130. package/lib/src/antlr/lib/apexdoc/ApexdocParserListener.dart +0 -215
  131. package/lib/src/builders/builders.dart +0 -32
  132. package/lib/src/model/apex_file_manifest.dart +0 -37
  133. package/lib/src/model/apex_file_manifest.g.dart +0 -18
  134. package/lib/src/model/declaration.dart +0 -50
  135. package/lib/src/model/doc_comment.dart +0 -117
  136. package/lib/src/model/doc_comment.g.dart +0 -118
  137. package/lib/src/model/members.dart +0 -143
  138. package/lib/src/model/members.g.dart +0 -105
  139. package/lib/src/model/types.dart +0 -159
  140. package/lib/src/model/types.g.dart +0 -111
  141. package/lib/src/service/apex_listener.dart +0 -226
  142. package/lib/src/service/apexdoc_listener.dart +0 -82
  143. package/lib/src/service/parsers.dart +0 -33
  144. package/lib/src/service/utils/parsing/access_modifiers_parser.dart +0 -33
  145. package/lib/src/service/utils/parsing/parameters_parser.dart +0 -18
  146. package/lib/src/service/utils/parsing/parsing_utils.dart +0 -2
  147. package/lib/src/service/walker.dart +0 -82
  148. package/pubspec.yaml +0 -19
  149. package/test/apex_file_manifest_test.dart +0 -16
  150. package/test/apex_listener_test.dart +0 -703
  151. package/test/apexdoc_parser_test.dart +0 -179
  152. package/test/doc_comment_test.dart +0 -89
  153. package/test/members_serialization_test.dart +0 -158
  154. package/test/members_test.dart +0 -178
  155. package/test/types_serialization_test.dart +0 -191
  156. package/test/types_test.dart +0 -311
  157. package/test/walker_test.dart +0 -58
  158. package/tool/grind.dart +0 -20
@@ -1,703 +0,0 @@
1
- // Disabling null safety since this test relies on the antrl4 package
2
- // @dart=2.10
3
-
4
- import 'package:antlr4/antlr4.dart';
5
- import 'package:apexdocs_dart/src/model/members.dart';
6
- import 'package:apexdocs_dart/src/model/types.dart';
7
- import 'package:test/test.dart';
8
-
9
- import 'package:apexdocs_dart/src/service/walker.dart';
10
-
11
- void main() {
12
- group('Parses Apex Classes', () {
13
- test('Creates a simple class', () {
14
- final apexWalkerDefinition = ApexWalkerDefinition();
15
- Walker.walk(
16
- InputStream.fromString('class MyClass{}'), apexWalkerDefinition);
17
- expect(apexWalkerDefinition.getGeneratedApexType(), isNotNull);
18
- expect(apexWalkerDefinition.getGeneratedApexType().name, 'MyClass');
19
- });
20
-
21
- test('Classes can have Apex docs', () {
22
- final apexWalkerDefinition = ApexWalkerDefinition();
23
- const classBody = '''
24
- /**
25
- * @description Class description
26
- */
27
- class MyClass{}
28
- ''';
29
- Walker.walk(InputStream.fromString(classBody), apexWalkerDefinition);
30
- expect(
31
- apexWalkerDefinition.getGeneratedApexType().rawDocComment, isNotNull);
32
- expect(apexWalkerDefinition.getGeneratedApexType().docDescription,
33
- equals('Class description'));
34
- });
35
-
36
- test('Classes without access modifiers are private by default', () {
37
- final apexWalkerDefinition = ApexWalkerDefinition();
38
- Walker.walk(
39
- InputStream.fromString('class MyClass{}'), apexWalkerDefinition);
40
- expect(apexWalkerDefinition.getGeneratedApexType().isPrivate, isTrue);
41
- });
42
-
43
- test('Classes with private access modifiers are private', () {
44
- final apexWalkerDefinition = ApexWalkerDefinition();
45
- Walker.walk(InputStream.fromString('private class MyClass{}'),
46
- apexWalkerDefinition);
47
- expect(apexWalkerDefinition.getGeneratedApexType().isPrivate, isTrue);
48
- });
49
-
50
- test('Classes with public access modifiers are public', () {
51
- final apexWalkerDefinition = ApexWalkerDefinition();
52
- Walker.walk(InputStream.fromString('public class MyClass{}'),
53
- apexWalkerDefinition);
54
- expect(apexWalkerDefinition.getGeneratedApexType().isPrivate, isFalse);
55
- expect(apexWalkerDefinition.getGeneratedApexType().isPublic, isTrue);
56
- });
57
-
58
- test('Classes with global access modifiers are global', () {
59
- final apexWalkerDefinition = ApexWalkerDefinition();
60
- Walker.walk(InputStream.fromString('global class MyClass{}'),
61
- apexWalkerDefinition);
62
- expect(apexWalkerDefinition.getGeneratedApexType().isPrivate, isFalse);
63
- expect(apexWalkerDefinition.getGeneratedApexType().isPublic, isFalse);
64
- expect(apexWalkerDefinition.getGeneratedApexType().isGlobal, isTrue);
65
- });
66
-
67
- test('Classes with protected access modifiers are protected', () {
68
- final apexWalkerDefinition = ApexWalkerDefinition();
69
- Walker.walk(InputStream.fromString('protected class MyClass{}'),
70
- apexWalkerDefinition);
71
- expect(apexWalkerDefinition.getGeneratedApexType().isPrivate, isFalse);
72
- expect(apexWalkerDefinition.getGeneratedApexType().isPublic, isFalse);
73
- expect(apexWalkerDefinition.getGeneratedApexType().isGlobal, isFalse);
74
- expect(apexWalkerDefinition.getGeneratedApexType().isProtected, isTrue);
75
- });
76
-
77
- test('Classes with protected access modifiers are protected', () {
78
- final apexWalkerDefinition = ApexWalkerDefinition();
79
- Walker.walk(InputStream.fromString('protected class MyClass{}'),
80
- apexWalkerDefinition);
81
- expect(apexWalkerDefinition.getGeneratedApexType().isPrivate, isFalse);
82
- expect(apexWalkerDefinition.getGeneratedApexType().isPublic, isFalse);
83
- expect(apexWalkerDefinition.getGeneratedApexType().isGlobal, isFalse);
84
- expect(apexWalkerDefinition.getGeneratedApexType().isProtected, isTrue);
85
- });
86
-
87
- test('Virtual classes are supported', () {
88
- final apexWalkerDefinition = ApexWalkerDefinition();
89
- Walker.walk(InputStream.fromString('public virtual class MyClass{}'),
90
- apexWalkerDefinition);
91
- expect(apexWalkerDefinition.getGeneratedApexType().isVirtual, isTrue);
92
- });
93
-
94
- test('Supports the NamespaceAccessible annotation', () {
95
- final apexWalkerDefinition = ApexWalkerDefinition();
96
- Walker.walk(
97
- InputStream.fromString(
98
- '@NamespaceAccessible public virtual class MyClass{}'),
99
- apexWalkerDefinition);
100
- expect(apexWalkerDefinition.getGeneratedApexType().isNamespaceAccessible,
101
- isTrue);
102
- });
103
-
104
- test('Supports the IsTest annotation', () {
105
- final apexWalkerDefinition = ApexWalkerDefinition();
106
- Walker.walk(InputStream.fromString('@IsTest private class MyClass{}'),
107
- apexWalkerDefinition);
108
- expect(apexWalkerDefinition.getGeneratedApexType().isTest, isTrue);
109
- });
110
-
111
- test('Supports annotations with extra parameters', () {
112
- final apexWalkerDefinition = ApexWalkerDefinition();
113
- Walker.walk(
114
- InputStream.fromString(
115
- '@IsTest(Parallel=true) private class MyClass{}'),
116
- apexWalkerDefinition);
117
- expect(apexWalkerDefinition.getGeneratedApexType().isTest, isTrue);
118
- });
119
-
120
- test('Does not extend any class by default', () {
121
- final apexWalkerDefinition = ApexWalkerDefinition();
122
- Walker.walk(InputStream.fromString('public class MyClass{}'),
123
- apexWalkerDefinition);
124
- var generatedClass =
125
- apexWalkerDefinition.getGeneratedApexType() as ClassModel;
126
- expect(generatedClass.extendedClass, isNull);
127
- });
128
-
129
- test('Classes can extend another class', () {
130
- final apexWalkerDefinition = ApexWalkerDefinition();
131
- Walker.walk(
132
- InputStream.fromString('public class MyClass extends ParentClass{}'),
133
- apexWalkerDefinition);
134
- var generatedClass =
135
- apexWalkerDefinition.getGeneratedApexType() as ClassModel;
136
- expect(generatedClass.extendedClass, equals('ParentClass'));
137
- });
138
-
139
- test('Classes can have properties', () {
140
- final apexWalkerDefinition = ApexWalkerDefinition();
141
- var classBody = '''
142
- public class MyClass {
143
- @NamespaceAccessible public String MyProperty1 { get; set; }
144
- private Integer MyProperty2 { get; set; }
145
- }
146
- ''';
147
- Walker.walk(InputStream.fromString(classBody), apexWalkerDefinition);
148
- var generatedClass =
149
- apexWalkerDefinition.getGeneratedApexType() as ClassModel;
150
- expect(generatedClass.properties.length, equals(2));
151
- expect(
152
- generatedClass.properties
153
- .any((element) => element.name == 'MyProperty1'),
154
- isTrue);
155
- expect(
156
- generatedClass.properties
157
- .any((element) => element.name == 'MyProperty2'),
158
- isTrue);
159
-
160
- Property property1 = generatedClass.properties
161
- .firstWhere((element) => element.name == 'MyProperty1');
162
- expect(property1.isNamespaceAccessible, isTrue);
163
- expect(property1.type, equals('String'));
164
- expect(property1.isPublic, isTrue);
165
-
166
- Property property2 = generatedClass.properties
167
- .firstWhere((element) => element.name == 'MyProperty2');
168
- expect(property2.isPrivate, isTrue);
169
- expect(property2.type, equals('Integer'));
170
- });
171
-
172
- test('Classes can have properties with apex docs', () {
173
- final apexWalkerDefinition = ApexWalkerDefinition();
174
- var classBody = '''
175
- public class MyClass {
176
- /**
177
- * @description Some description
178
- */
179
- @NamespaceAccessible public String MyProperty1 { get; set; }
180
- }
181
- ''';
182
- Walker.walk(InputStream.fromString(classBody), apexWalkerDefinition);
183
- var generatedClass =
184
- apexWalkerDefinition.getGeneratedApexType() as ClassModel;
185
- expect(generatedClass.properties.length, equals(1));
186
- expect(
187
- generatedClass.properties
188
- .any((element) => element.name == 'MyProperty1'),
189
- isTrue);
190
-
191
- Property property1 = generatedClass.properties
192
- .firstWhere((element) => element.name == 'MyProperty1');
193
- expect(property1.rawDocComment, isNotNull);
194
- });
195
-
196
- test('Classes can have fields', () {
197
- final apexWalkerDefinition = ApexWalkerDefinition();
198
- var classBody = '''
199
- public class MyClass {
200
- private String myVar1, myVar2;
201
- private Integer myVar3;
202
- }
203
- ''';
204
- Walker.walk(InputStream.fromString(classBody), apexWalkerDefinition);
205
- var generatedClass =
206
- apexWalkerDefinition.getGeneratedApexType() as ClassModel;
207
- expect(generatedClass.fields.length, equals(3));
208
- expect(generatedClass.fields.any((element) => element.name == 'myVar1'),
209
- isTrue);
210
- expect(generatedClass.fields.any((element) => element.name == 'myVar2'),
211
- isTrue);
212
- expect(generatedClass.fields.any((element) => element.name == 'myVar3'),
213
- isTrue);
214
-
215
- Field field1 = generatedClass.fields
216
- .firstWhere((element) => element.name == 'myVar1');
217
- expect(field1.isPrivate, isTrue);
218
- expect(field1.type, equals('String'));
219
-
220
- Field field2 = generatedClass.fields
221
- .firstWhere((element) => element.name == 'myVar2');
222
- expect(field2.isPrivate, isTrue);
223
- expect(field2.type, equals('String'));
224
-
225
- Field field3 = generatedClass.fields
226
- .firstWhere((element) => element.name == 'myVar3');
227
- expect(field3.isPrivate, isTrue);
228
- expect(field3.type, equals('Integer'));
229
- });
230
-
231
- test('Classes can have fields with doc comments', () {
232
- final apexWalkerDefinition = ApexWalkerDefinition();
233
- var classBody = '''
234
- public class MyClass {
235
- /**
236
- * @description Some description
237
- */
238
- private String myVar1;
239
- }
240
- ''';
241
- Walker.walk(InputStream.fromString(classBody), apexWalkerDefinition);
242
- var generatedClass =
243
- apexWalkerDefinition.getGeneratedApexType() as ClassModel;
244
- expect(generatedClass.fields.length, equals(1));
245
- expect(generatedClass.fields.any((element) => element.name == 'myVar1'),
246
- isTrue);
247
-
248
- Field field1 = generatedClass.fields
249
- .firstWhere((element) => element.name == 'myVar1');
250
- expect(field1.rawDocComment, isNotNull);
251
- });
252
-
253
- test('Classes can have methods', () {
254
- final apexWalkerDefinition = ApexWalkerDefinition();
255
- var classBody = '''
256
- public class MyClass {
257
- @NamespaceAccessible
258
- public void sayHi() {
259
- System.debug(getGreeting());
260
- }
261
- public String getGreeting() {
262
- return 'Hi!';
263
- }
264
- }
265
- ''';
266
-
267
- Walker.walk(InputStream.fromString(classBody), apexWalkerDefinition);
268
- var generatedClass =
269
- apexWalkerDefinition.getGeneratedApexType() as ClassModel;
270
- expect(generatedClass.methods.length, equals(2));
271
- expect(generatedClass.methods.any((element) => element.name == 'sayHi'),
272
- isTrue);
273
- expect(
274
- generatedClass.methods
275
- .any((element) => element.name == 'getGreeting'),
276
- isTrue);
277
-
278
- Method method1 = generatedClass.methods
279
- .firstWhere((element) => element.name == 'sayHi');
280
- expect(method1.isPublic, isTrue);
281
- expect(method1.isNamespaceAccessible, isTrue);
282
- expect(method1.isVoid, isTrue);
283
-
284
- Method method2 = generatedClass.methods
285
- .firstWhere((element) => element.name == 'getGreeting');
286
- expect(method2.isPublic, isTrue);
287
- expect(method2.isNamespaceAccessible, isFalse);
288
- expect(method2.isVoid, isFalse);
289
- expect(method2.type, equals('String'));
290
- });
291
-
292
- test('Classes can have methods with doc comments', () {
293
- final apexWalkerDefinition = ApexWalkerDefinition();
294
- var classBody = '''
295
- public class MyClass {
296
- /**
297
- * @description Some description
298
- */
299
- @NamespaceAccessible
300
- public void sayHi() {
301
- System.debug(getGreeting());
302
- }
303
- }
304
- ''';
305
-
306
- Walker.walk(InputStream.fromString(classBody), apexWalkerDefinition);
307
- var generatedClass =
308
- apexWalkerDefinition.getGeneratedApexType() as ClassModel;
309
- expect(generatedClass.methods.length, equals(1));
310
- expect(generatedClass.methods.any((element) => element.name == 'sayHi'),
311
- isTrue);
312
-
313
- Method method1 = generatedClass.methods
314
- .firstWhere((element) => element.name == 'sayHi');
315
- expect(method1.rawDocComment, isNotNull);
316
- });
317
-
318
- test('Classes can have methods with doc comments and parameters', () {
319
- final apexWalkerDefinition = ApexWalkerDefinition();
320
- var classBody = '''
321
- public class MyClass {
322
- /**
323
- * @description Some description
324
- * @param param1 The description for param1
325
- */
326
- @NamespaceAccessible
327
- public void sayHi(String param1) {
328
- System.debug(getGreeting());
329
- }
330
- }
331
- ''';
332
-
333
- Walker.walk(InputStream.fromString(classBody), apexWalkerDefinition);
334
- var generatedClass =
335
- apexWalkerDefinition.getGeneratedApexType() as ClassModel;
336
- expect(generatedClass.methods.length, equals(1));
337
- expect(generatedClass.methods.any((element) => element.name == 'sayHi'),
338
- isTrue);
339
-
340
- Method method1 = generatedClass.methods
341
- .firstWhere((element) => element.name == 'sayHi');
342
- expect(method1.docDescription, 'Some description');
343
- expect(method1.parameters.first.docDescription,
344
- 'The description for param1');
345
- });
346
-
347
- test('Classes can have constructors', () {
348
- final apexWalkerDefinition = ApexWalkerDefinition();
349
- var classBody = '''
350
- public class MyClass {
351
- private final String var1;
352
- @NamespaceAccessible
353
- public MyClass() {
354
- this.var1 = 'Hello!';
355
- }
356
-
357
- public MyClass(String greeting) {
358
- this.var1 = greeting;
359
- }
360
- }
361
- ''';
362
-
363
- Walker.walk(InputStream.fromString(classBody), apexWalkerDefinition);
364
- var generatedClass =
365
- apexWalkerDefinition.getGeneratedApexType() as ClassModel;
366
- expect(generatedClass.constructors.length, equals(2));
367
- expect(
368
- generatedClass.constructors
369
- .any((element) => element.isNamespaceAccessible),
370
- isTrue);
371
- expect(
372
- generatedClass.constructors
373
- .any((element) => !element.isNamespaceAccessible),
374
- isTrue);
375
-
376
- Constructor constructor1 = generatedClass.constructors
377
- .firstWhere((element) => element.isNamespaceAccessible);
378
- expect(constructor1.isPublic, isTrue);
379
- expect(constructor1.parameters.isEmpty, isTrue);
380
-
381
- Constructor constructor2 = generatedClass.constructors
382
- .firstWhere((element) => !element.isNamespaceAccessible);
383
- expect(constructor2.isPublic, isTrue);
384
- expect(constructor2.parameters.length, equals(1));
385
- });
386
-
387
- test('Classes can have constructors with doc comments', () {
388
- final apexWalkerDefinition = ApexWalkerDefinition();
389
- var classBody = '''
390
- public class MyClass {
391
- private final String var1;
392
- /**
393
- * @description Some description
394
- */
395
- @NamespaceAccessible
396
- public MyClass() {
397
- this.var1 = 'Hello!';
398
- }
399
- }
400
- ''';
401
-
402
- Walker.walk(InputStream.fromString(classBody), apexWalkerDefinition);
403
- var generatedClass =
404
- apexWalkerDefinition.getGeneratedApexType() as ClassModel;
405
- expect(generatedClass.constructors.length, equals(1));
406
- expect(
407
- generatedClass.constructors
408
- .any((element) => element.isNamespaceAccessible),
409
- isTrue);
410
-
411
- Constructor constructor1 = generatedClass.constructors
412
- .firstWhere((element) => element.isNamespaceAccessible);
413
- expect(constructor1.rawDocComment, isNotNull);
414
- });
415
-
416
- test('Classes can have inner enums', () {
417
- final apexWalkerDefinition = ApexWalkerDefinition();
418
- var classBody = '''
419
- public class MyClass {
420
- @NamespaceAccessible
421
- public enum MyEnum {
422
- A,B,C
423
- }
424
- }
425
- ''';
426
-
427
- Walker.walk(InputStream.fromString(classBody), apexWalkerDefinition);
428
- var generatedClass =
429
- apexWalkerDefinition.getGeneratedApexType() as ClassModel;
430
- expect(generatedClass.enums.length, equals(1));
431
- expect(generatedClass.enums.first.name, equals('MyEnum'));
432
- expect(generatedClass.enums.first.isNamespaceAccessible, isTrue);
433
- expect(generatedClass.enums.first.isPublic, isTrue);
434
- });
435
-
436
- test('Classes can have inner enums with documents', () {
437
- final apexWalkerDefinition = ApexWalkerDefinition();
438
- var classBody = '''
439
- public class MyClass {
440
- /**
441
- * @description Some description
442
- */
443
- @NamespaceAccessible
444
- public enum MyEnum {
445
- A,B,C
446
- }
447
- }
448
- ''';
449
-
450
- Walker.walk(InputStream.fromString(classBody), apexWalkerDefinition);
451
- var generatedClass =
452
- apexWalkerDefinition.getGeneratedApexType() as ClassModel;
453
- expect(generatedClass.enums.length, equals(1));
454
- expect(generatedClass.enums.first.rawDocComment, isNotNull);
455
- });
456
-
457
- test('Classes can have inner interfaces', () {
458
- final apexWalkerDefinition = ApexWalkerDefinition();
459
- var classBody = '''
460
- public class MyClass {
461
- @NamespaceAccessible
462
- public interface MyInterface {
463
- String sampleMethod(String prop1, String prop2);
464
- }
465
- }
466
- ''';
467
-
468
- Walker.walk(InputStream.fromString(classBody), apexWalkerDefinition);
469
- var generatedClass =
470
- apexWalkerDefinition.getGeneratedApexType() as ClassModel;
471
- expect(generatedClass.interfaces.length, equals(1));
472
-
473
- var innerInterface = generatedClass.interfaces.first;
474
- expect(innerInterface.name, equals('MyInterface'));
475
- expect(innerInterface.isNamespaceAccessible, isTrue);
476
- expect(innerInterface.isPublic, isTrue);
477
- expect(innerInterface.methods.length, equals(1));
478
- expect(innerInterface.methods.first.type, 'String');
479
- });
480
-
481
- test('Classes can have inner interfaces with doc comments', () {
482
- final apexWalkerDefinition = ApexWalkerDefinition();
483
- var classBody = '''
484
- public class MyClass {
485
- /**
486
- * @description Some description
487
- */
488
- @NamespaceAccessible
489
- public interface MyInterface {
490
- String sampleMethod(String prop1, String prop2);
491
- }
492
- }
493
- ''';
494
-
495
- Walker.walk(InputStream.fromString(classBody), apexWalkerDefinition);
496
- var generatedClass =
497
- apexWalkerDefinition.getGeneratedApexType() as ClassModel;
498
- expect(generatedClass.interfaces.length, equals(1));
499
-
500
- var innerInterface = generatedClass.interfaces.first;
501
- expect(innerInterface.rawDocComment, isNotNull);
502
- });
503
-
504
- test('Classes can have inner classes', () {
505
- final apexWalkerDefinition = ApexWalkerDefinition();
506
- var classBody = '''
507
- public class MyClass {
508
- public class InnerClass {
509
- public String innerMethod(String prop1, String prop2) {
510
- return '';
511
- }
512
- }
513
- }
514
- ''';
515
-
516
- Walker.walk(InputStream.fromString(classBody), apexWalkerDefinition);
517
- var generatedClass =
518
- apexWalkerDefinition.getGeneratedApexType() as ClassModel;
519
- expect(generatedClass.classes.length, equals(1));
520
-
521
- var innerClass = generatedClass.classes.first;
522
- expect(innerClass.name, equals('InnerClass'));
523
- expect(innerClass.isNamespaceAccessible, isFalse);
524
- expect(innerClass.isPublic, isTrue);
525
- expect(innerClass.methods.length, equals(1));
526
- expect(innerClass.methods.first.type, 'String');
527
- expect(innerClass.methods.first.parameters.length, equals(2));
528
- });
529
-
530
- test('Classes can have inner classes with doc comments', () {
531
- final apexWalkerDefinition = ApexWalkerDefinition();
532
- var classBody = '''
533
- public class MyClass {
534
- /**
535
- * @description Some description
536
- */
537
- public class InnerClass {
538
- public String innerMethod(String prop1, String prop2) {
539
- return '';
540
- }
541
- }
542
- }
543
- ''';
544
-
545
- Walker.walk(InputStream.fromString(classBody), apexWalkerDefinition);
546
- var generatedClass =
547
- apexWalkerDefinition.getGeneratedApexType() as ClassModel;
548
- expect(generatedClass.classes.length, equals(1));
549
-
550
- var innerClass = generatedClass.classes.first;
551
- expect(innerClass.rawDocComment, isNotNull);
552
- });
553
- });
554
-
555
- group('Parses Apex Interfaces', () {
556
- test('Creates a simple interface', () {
557
- final apexWalkerDefinition = ApexWalkerDefinition();
558
- Walker.walk(InputStream.fromString('interface MyInterface{}'),
559
- apexWalkerDefinition);
560
- expect(apexWalkerDefinition.getGeneratedApexType(), isNotNull);
561
- expect(apexWalkerDefinition.getGeneratedApexType().name, 'MyInterface');
562
- });
563
-
564
- test('Interfaces can have doc comments', () {
565
- final apexWalkerDefinition = ApexWalkerDefinition();
566
- const interfaceBody = '''
567
- /**
568
- * @description Some description
569
- */
570
- interface MyInterface{}
571
- ''';
572
- Walker.walk(InputStream.fromString(interfaceBody), apexWalkerDefinition);
573
- expect(apexWalkerDefinition.getGeneratedApexType(), isNotNull);
574
- expect(
575
- apexWalkerDefinition.getGeneratedApexType().rawDocComment, isNotNull);
576
- });
577
-
578
- test('Interfaces without access modifiers are private by default', () {
579
- final apexWalkerDefinition = ApexWalkerDefinition();
580
- Walker.walk(
581
- InputStream.fromString('interface MyClass{}'), apexWalkerDefinition);
582
- expect(apexWalkerDefinition.getGeneratedApexType().isPrivate, isTrue);
583
- });
584
-
585
- test('Interfaces with private access modifiers are private', () {
586
- final apexWalkerDefinition = ApexWalkerDefinition();
587
- Walker.walk(InputStream.fromString('private interface MyClass{}'),
588
- apexWalkerDefinition);
589
- expect(apexWalkerDefinition.getGeneratedApexType().isPrivate, isTrue);
590
- });
591
-
592
- test('Interfaces can extend other interfaces', () {
593
- final apexWalkerDefinition = ApexWalkerDefinition();
594
- Walker.walk(
595
- InputStream.fromString(
596
- 'public interface MyInterface extends Interface1, Interface2{}'),
597
- apexWalkerDefinition);
598
- var generatedInterface =
599
- apexWalkerDefinition.getGeneratedApexType() as InterfaceModel;
600
- expect(generatedInterface.extendedInterfaces, isNotEmpty);
601
- expect(generatedInterface.extendedInterfaces[0], 'Interface1');
602
- expect(generatedInterface.extendedInterfaces[1], 'Interface2');
603
- });
604
-
605
- test('Interfaces can have methods', () {
606
- final apexWalkerDefinition = ApexWalkerDefinition();
607
- var interfaceBody = '''
608
- @NamespaceAccessible
609
- public interface MyInterface {
610
- void sayHi();
611
- String getGreeting();
612
- }
613
- ''';
614
-
615
- Walker.walk(InputStream.fromString(interfaceBody), apexWalkerDefinition);
616
- var generatedInterface =
617
- apexWalkerDefinition.getGeneratedApexType() as InterfaceModel;
618
- expect(generatedInterface.methods.length, equals(2));
619
- expect(
620
- generatedInterface.methods.any((element) => element.name == 'sayHi'),
621
- isTrue);
622
- expect(
623
- generatedInterface.methods
624
- .any((element) => element.name == 'getGreeting'),
625
- isTrue);
626
-
627
- Method method1 = generatedInterface.methods
628
- .firstWhere((element) => element.name == 'sayHi');
629
- // Interface methods must inherit the access modifiers of the parent interface
630
- expect(method1.isPublic, isTrue);
631
- expect(method1.isNamespaceAccessible, isTrue);
632
- expect(method1.isVoid, isTrue);
633
-
634
- Method method2 = generatedInterface.methods
635
- .firstWhere((element) => element.name == 'getGreeting');
636
- expect(method2.isPublic, isTrue);
637
- expect(method2.isNamespaceAccessible, isTrue);
638
- expect(method2.isVoid, isFalse);
639
- expect(method2.type, equals('String'));
640
- });
641
-
642
- test('Interfaces can have methods with doc comments', () {
643
- final apexWalkerDefinition = ApexWalkerDefinition();
644
- var interfaceBody = '''
645
- @NamespaceAccessible
646
- public interface MyInterface {
647
- /**
648
- * @description Some description
649
- */
650
- void sayHi();
651
- }
652
- ''';
653
-
654
- Walker.walk(InputStream.fromString(interfaceBody), apexWalkerDefinition);
655
- var generatedInterface =
656
- apexWalkerDefinition.getGeneratedApexType() as InterfaceModel;
657
- expect(generatedInterface.methods.length, equals(1));
658
- expect(
659
- generatedInterface.methods.any((element) => element.name == 'sayHi'),
660
- isTrue);
661
-
662
- Method method1 = generatedInterface.methods
663
- .firstWhere((element) => element.name == 'sayHi');
664
- expect(method1.rawDocComment, isNotNull);
665
- });
666
- });
667
-
668
- group('Parses Apex enums', () {
669
- test('Creates a simple enum', () {
670
- final apexWalkerDefinition = ApexWalkerDefinition();
671
- Walker.walk(
672
- InputStream.fromString('enum MyEnum{}'), apexWalkerDefinition);
673
- expect(apexWalkerDefinition.getGeneratedApexType(), isNotNull);
674
- expect(apexWalkerDefinition.getGeneratedApexType().name, 'MyEnum');
675
- });
676
-
677
- test('Enums can have doc comments', () {
678
- final apexWalkerDefinition = ApexWalkerDefinition();
679
- const enumBody = '''
680
- /**
681
- * @description Some description
682
- */
683
- enum MyEnum{}
684
- ''';
685
- Walker.walk(InputStream.fromString(enumBody), apexWalkerDefinition);
686
- expect(apexWalkerDefinition.getGeneratedApexType(), isNotNull);
687
- expect(
688
- apexWalkerDefinition.getGeneratedApexType().rawDocComment, isNotNull);
689
- });
690
-
691
- test('Supports enums with access modifiers', () {
692
- final apexWalkerDefinition = ApexWalkerDefinition();
693
- Walker.walk(
694
- InputStream.fromString('@NamespaceAccessible public enum MyEnum{}'),
695
- apexWalkerDefinition);
696
- expect(apexWalkerDefinition.getGeneratedApexType(), isNotNull);
697
- expect(apexWalkerDefinition.getGeneratedApexType().isPublic, isTrue);
698
- expect(apexWalkerDefinition.getGeneratedApexType().isNamespaceAccessible,
699
- isTrue);
700
- expect(apexWalkerDefinition.getGeneratedApexType().isPrivate, isFalse);
701
- });
702
- });
703
- }