testeranto 0.140.2 → 0.146.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 (204) hide show
  1. package/.aider.chat.history.md +11006 -0
  2. package/.aider.input.history +441 -0
  3. package/.aider.tags.cache.v3/06/1a/1ec9fd1f595d4b36094caef45894.val +0 -0
  4. package/.aider.tags.cache.v3/0f/f6/f42b5108253d75de3cb6286df7f6.val +0 -0
  5. package/.aider.tags.cache.v3/{ad/3c/10f2ab1397f6d544e613d2a6acaf.val → 3d/81/8b6f0e9b98ec2952cdb8968ac386.val} +0 -0
  6. package/.aider.tags.cache.v3/cache.db +0 -0
  7. package/.aider.tags.cache.v3/{a7/97/6d37fce350ad2d588f36729db0cd.val → d6/7d/1820c2d4b9330eab7017da4515e7.val} +0 -0
  8. package/README.md +15 -16
  9. package/dist/tsconfig.tsbuildinfo +1 -1
  10. package/docs/aiderTest.sh +1 -0
  11. package/docs/index.md +45 -33
  12. package/docs/testing.ai.txt +98 -0
  13. package/docs/testing.prompt.txt +8 -0
  14. package/package.json +3 -3
  15. package/src/Node.ts +17 -13
  16. package/src/PM/PM_WithEslintAndTsc.ts +83 -67
  17. package/src/PM/main.ts +182 -92
  18. package/src/PM/node.ts +1 -15
  19. package/src/PM/nodeSidecar.ts +0 -1
  20. package/src/Pure.test.ts +299 -0
  21. package/src/Pure.ts +20 -2
  22. package/src/Types.ts +5 -5
  23. package/src/Web.ts +1 -1
  24. package/src/build.ts +0 -1
  25. package/src/esbuildConfigs/consoleDetectorPlugin.ts +28 -14
  26. package/src/esbuildConfigs/nativeImportDetectorPlugin.ts +26 -0
  27. package/src/esbuildConfigs/pure.ts +3 -1
  28. package/src/esbuildConfigs/rebuildPlugin.ts +1 -4
  29. package/src/lib/BaseSuite.test/node.test.ts +12 -0
  30. package/src/lib/BaseSuite.test/pure.test.ts +12 -0
  31. package/src/lib/{BaseSuite.test.ts → BaseSuite.test/test.ts} +36 -27
  32. package/src/lib/BaseSuite.test/web.test.ts +12 -0
  33. package/src/lib/BaseSuite.ts +17 -15
  34. package/src/lib/abstractBase.test/MockGiven.ts +31 -0
  35. package/src/lib/abstractBase.test/MockThen.ts +20 -0
  36. package/src/lib/abstractBase.test/MockWhen.ts +17 -0
  37. package/src/lib/abstractBase.test/implementation.ts +51 -0
  38. package/src/lib/abstractBase.test/index.ts +19 -0
  39. package/src/lib/abstractBase.test/interface.ts +12 -0
  40. package/src/lib/abstractBase.test/specification.ts +49 -0
  41. package/src/lib/abstractBase.test/types.ts +19 -0
  42. package/src/lib/abstractBase.ts +0 -2
  43. package/src/lib/baseBuilder.test/TestBaseBuilder.ts +83 -0
  44. package/src/lib/baseBuilder.test/baseBuilder.test.implementation.ts +134 -0
  45. package/src/lib/baseBuilder.test/baseBuilder.test.interface.ts +18 -0
  46. package/src/lib/baseBuilder.test/baseBuilder.test.node.ts +14 -0
  47. package/src/lib/baseBuilder.test/baseBuilder.test.pure.ts +14 -0
  48. package/src/lib/baseBuilder.test/baseBuilder.test.specification.ts +35 -0
  49. package/src/lib/baseBuilder.test/baseBuilder.test.types.ts +36 -0
  50. package/src/lib/baseBuilder.test/baseBuilder.test.web.ts +14 -0
  51. package/src/lib/basebuilder.ts +2 -1
  52. package/src/lib/classBuilder.test/TestClassBuilder.ts +88 -0
  53. package/src/lib/classBuilder.test/classBuilder.test.implementation.ts +204 -0
  54. package/src/lib/classBuilder.test/classBuilder.test.interface.ts +18 -0
  55. package/src/lib/classBuilder.test/classBuilder.test.specification.ts +113 -0
  56. package/src/lib/classBuilder.test/classBuilder.test.ts +14 -0
  57. package/src/lib/classBuilder.test/classBuilder.test.types.ts +84 -0
  58. package/src/lib/core.test/MockCore.ts +49 -0
  59. package/src/lib/core.test/core.test.implementation.ts +129 -0
  60. package/src/lib/core.test/core.test.interface.ts +18 -0
  61. package/src/lib/core.test/core.test.specification.ts +99 -0
  62. package/src/lib/core.test/core.test.ts +15 -0
  63. package/src/lib/core.test/core.test.types.ts +68 -0
  64. package/src/lib/core.ts +1 -11
  65. package/src/lib/pmProxy.test/implementation.ts +104 -0
  66. package/src/lib/pmProxy.test/index.ts +19 -0
  67. package/src/lib/pmProxy.test/interface.ts +46 -0
  68. package/src/lib/pmProxy.test/mockPM.ts +38 -0
  69. package/src/lib/pmProxy.test/mockPMBase.ts +136 -0
  70. package/src/lib/pmProxy.test/specification.ts +123 -0
  71. package/src/lib/pmProxy.test/types.ts +45 -0
  72. package/src/lib/pmProxy.ts +40 -193
  73. package/src/run.ts +7 -7
  74. package/testeranto/bundles/node/allTests/chunk-NQBTLMSG.mjs +254 -0
  75. package/testeranto/bundles/node/allTests/chunk-RF3LIUSG.mjs +765 -0
  76. package/testeranto/bundles/node/allTests/chunk-YZWFKYY3.mjs +171 -0
  77. package/testeranto/bundles/node/allTests/metafile.json +628 -3567
  78. package/testeranto/bundles/node/allTests/src/lib/BaseSuite.test/node.test.mjs +325 -0
  79. package/testeranto/bundles/node/allTests/src/lib/baseBuilder.test/baseBuilder.test.node.mjs +226 -0
  80. package/testeranto/bundles/node/allTests/src/lib/classBuilder.test/classBuilder.test.mjs +408 -0
  81. package/testeranto/bundles/node/allTests/src/lib/core.test/core.test.mjs +279 -0
  82. package/testeranto/bundles/node/allTests/src/lib/pmProxy.test/index.mjs +4587 -0
  83. package/testeranto/bundles/{node/allTests/chunk-4PJCC2XT.mjs → pure/allTests/chunk-W22WOQNK.mjs} +208 -326
  84. package/testeranto/bundles/pure/allTests/metafile.json +732 -3
  85. package/testeranto/bundles/pure/allTests/src/Pure.test.mjs +369 -0
  86. package/testeranto/bundles/{node/allTests/src/lib/BaseSuite.test.mjs → pure/allTests/src/lib/BaseSuite.test/pure.test.mjs} +26 -8
  87. package/testeranto/bundles/pure/allTests/src/lib/baseBuilder.test/baseBuilder.test.pure.mjs +224 -0
  88. package/testeranto/bundles/web/allTests/chunk-FIZ3WLUB.mjs +943 -0
  89. package/testeranto/bundles/web/allTests/metafile.json +1133 -2
  90. package/testeranto/bundles/web/allTests/src/lib/BaseSuite.test/web.test.html +19 -0
  91. package/testeranto/bundles/web/allTests/src/lib/BaseSuite.test/web.test.mjs +322 -0
  92. package/testeranto/bundles/web/allTests/src/lib/baseBuilder.test/baseBuilder.test.web.html +19 -0
  93. package/testeranto/bundles/web/allTests/src/lib/baseBuilder.test/baseBuilder.test.web.mjs +10964 -0
  94. package/testeranto/index.html +1 -1
  95. package/testeranto/reports/allTests/config.json +50 -11
  96. package/testeranto/reports/allTests/index.html +1 -1
  97. package/testeranto/reports/allTests/src/Pure.test/pure/lint_errors.json +1539 -0
  98. package/testeranto/reports/allTests/src/Pure.test/pure/logs.txt +11 -0
  99. package/testeranto/reports/allTests/src/Pure.test/pure/message +1 -0
  100. package/testeranto/reports/allTests/src/Pure.test/pure/prompt.txt +8 -0
  101. package/testeranto/reports/allTests/src/{PM/__tests__/pureSidecar.testeranto/node → Pure.test/pure}/type_errors.txt +18 -14
  102. package/testeranto/reports/allTests/src/lib/BaseSuite.test/node.test/node/lint_errors.json +620 -0
  103. package/testeranto/reports/allTests/src/lib/BaseSuite.test/node.test/node/logs.txt +12 -0
  104. package/testeranto/reports/allTests/src/lib/BaseSuite.test/node.test/node/message +1 -0
  105. package/testeranto/reports/allTests/src/lib/BaseSuite.test/node.test/node/prompt.txt +8 -0
  106. package/testeranto/reports/allTests/src/lib/BaseSuite.test/node.test/node/type_errors.txt +94 -0
  107. package/testeranto/reports/allTests/src/lib/BaseSuite.test/pure.test/pure/index.html +21 -0
  108. package/testeranto/reports/allTests/src/lib/BaseSuite.test/pure.test/pure/lint_errors.json +620 -0
  109. package/testeranto/reports/allTests/src/lib/BaseSuite.test/pure.test/pure/logs.txt +11 -0
  110. package/testeranto/reports/allTests/src/lib/BaseSuite.test/pure.test/pure/message +1 -0
  111. package/testeranto/reports/allTests/src/lib/BaseSuite.test/pure.test/pure/prompt.txt +8 -0
  112. package/testeranto/reports/allTests/src/lib/BaseSuite.test/pure.test/pure/type_errors.txt +104 -0
  113. package/testeranto/reports/allTests/src/lib/BaseSuite.test/web.test/web/dev.html +21 -0
  114. package/testeranto/reports/allTests/src/lib/BaseSuite.test/web.test/web/index.html +21 -0
  115. package/testeranto/reports/allTests/src/lib/BaseSuite.test/{node → web.test/web}/lint_errors.json +69 -57
  116. package/testeranto/reports/allTests/src/lib/BaseSuite.test/web.test/web/logs.txt +10 -0
  117. package/testeranto/reports/allTests/src/lib/BaseSuite.test/web.test/web/message +1 -0
  118. package/testeranto/reports/allTests/src/lib/BaseSuite.test/web.test/web/prompt.txt +8 -0
  119. package/testeranto/reports/allTests/src/lib/BaseSuite.test/web.test/web/type_errors.txt +95 -0
  120. package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.node/node/dev.html +21 -0
  121. package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.node/node/index.html +21 -0
  122. package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.node/node/lint_errors.json +966 -0
  123. package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.node/node/message +1 -0
  124. package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.node/node/prompt.txt +11 -0
  125. package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.node/node/type_errors.txt +57 -0
  126. package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.pure/pure/bdd_errors.txt +1 -0
  127. package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.pure/pure/dev.html +21 -0
  128. package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.pure/pure/index.html +21 -0
  129. package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.pure/pure/lint_errors.json +966 -0
  130. package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.pure/pure/log.txt +0 -0
  131. package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.pure/pure/message +1 -0
  132. package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.pure/pure/prompt.txt +11 -0
  133. package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.pure/pure/tests.json +57 -0
  134. package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.pure/pure/type_errors.txt +57 -0
  135. package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.web/web/bdd_errors.txt +1 -0
  136. package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.web/web/dev.html +21 -0
  137. package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.web/web/index.html +21 -0
  138. package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.web/web/lint_errors.json +966 -0
  139. package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.web/web/log.txt +0 -0
  140. package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.web/web/logs.txt +0 -0
  141. package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.web/web/message +1 -0
  142. package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.web/web/prompt.txt +11 -0
  143. package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.web/web/tests.json +57 -0
  144. package/testeranto/reports/allTests/src/lib/baseBuilder.test/baseBuilder.test.web/web/type_errors.txt +48 -0
  145. package/testeranto/reports/allTests/src/lib/classBuilder.test/classBuilder.test/node/dev.html +21 -0
  146. package/testeranto/reports/allTests/src/lib/classBuilder.test/classBuilder.test/node/index.html +21 -0
  147. package/testeranto/reports/allTests/src/lib/classBuilder.test/classBuilder.test/node/lint_errors.json +791 -0
  148. package/testeranto/reports/allTests/src/lib/classBuilder.test/classBuilder.test/node/logs.txt +12 -0
  149. package/testeranto/reports/allTests/src/lib/classBuilder.test/classBuilder.test/node/message +1 -0
  150. package/testeranto/reports/allTests/src/lib/classBuilder.test/classBuilder.test/node/prompt.txt +11 -0
  151. package/testeranto/reports/allTests/src/lib/classBuilder.test/classBuilder.test/node/type_errors.txt +55 -0
  152. package/testeranto/reports/allTests/src/lib/core.test/core.test/node/dev.html +21 -0
  153. package/testeranto/reports/allTests/src/lib/core.test/core.test/node/index.html +21 -0
  154. package/testeranto/reports/allTests/src/lib/core.test/core.test/node/lint_errors.json +416 -0
  155. package/testeranto/reports/allTests/src/lib/core.test/core.test/node/logs.txt +17 -0
  156. package/testeranto/reports/allTests/src/lib/core.test/core.test/node/message +1 -0
  157. package/testeranto/reports/allTests/src/lib/core.test/core.test/node/prompt.txt +11 -0
  158. package/testeranto/reports/allTests/src/lib/core.test/core.test/node/type_errors.txt +65 -0
  159. package/testeranto/reports/allTests/src/lib/pmProxy.test/index/node/dev.html +21 -0
  160. package/testeranto/reports/allTests/src/lib/pmProxy.test/index/node/index.html +21 -0
  161. package/testeranto/reports/allTests/src/lib/pmProxy.test/index/node/lint_errors.json +1724 -0
  162. package/testeranto/reports/allTests/src/lib/pmProxy.test/index/node/log.txt +0 -0
  163. package/testeranto/reports/allTests/src/lib/pmProxy.test/index/node/logs.txt +30 -0
  164. package/testeranto/reports/allTests/src/lib/pmProxy.test/index/node/message +1 -0
  165. package/testeranto/reports/allTests/src/lib/pmProxy.test/index/node/prompt.txt +11 -0
  166. package/testeranto/reports/allTests/src/lib/pmProxy.test/index/node/type_errors.txt +64 -0
  167. package/testeranto/reports/allTests/summary.json +59 -24
  168. package/testeranto.config.ts +37 -12
  169. package/tsc.log +273 -27
  170. package/testeranto/bundles/node/allTests/chunk-PG6KUKNP.mjs +0 -44
  171. package/testeranto/bundles/node/allTests/src/PM/__tests__/nodeSidecar.testeranto.mjs +0 -187
  172. package/testeranto/bundles/node/allTests/src/PM/__tests__/pureSidecar.testeranto.mjs +0 -156
  173. package/testeranto/bundles/node/allTests/src/PM/__tests__/webSidecar.testeranto.mjs +0 -156
  174. package/testeranto/bundles/node/allTests/src/mothership/test.mjs +0 -24411
  175. package/testeranto/reports/allTests/src/PM/__tests__/nodeSidecar.testeranto/node/index.html +0 -21
  176. package/testeranto/reports/allTests/src/PM/__tests__/nodeSidecar.testeranto/node/lint_errors.json +0 -80
  177. package/testeranto/reports/allTests/src/PM/__tests__/nodeSidecar.testeranto/node/message +0 -1
  178. package/testeranto/reports/allTests/src/PM/__tests__/nodeSidecar.testeranto/node/prompt.txt +0 -8
  179. package/testeranto/reports/allTests/src/PM/__tests__/nodeSidecar.testeranto/node/type_errors.txt +0 -28
  180. package/testeranto/reports/allTests/src/PM/__tests__/pureSidecar.testeranto/node/index.html +0 -21
  181. package/testeranto/reports/allTests/src/PM/__tests__/pureSidecar.testeranto/node/lint_errors.json +0 -80
  182. package/testeranto/reports/allTests/src/PM/__tests__/pureSidecar.testeranto/node/message +0 -1
  183. package/testeranto/reports/allTests/src/PM/__tests__/pureSidecar.testeranto/node/prompt.txt +0 -8
  184. package/testeranto/reports/allTests/src/PM/__tests__/webSidecar.testeranto/node/index.html +0 -21
  185. package/testeranto/reports/allTests/src/PM/__tests__/webSidecar.testeranto/node/lint_errors.json +0 -80
  186. package/testeranto/reports/allTests/src/PM/__tests__/webSidecar.testeranto/node/message +0 -1
  187. package/testeranto/reports/allTests/src/PM/__tests__/webSidecar.testeranto/node/prompt.txt +0 -8
  188. package/testeranto/reports/allTests/src/PM/__tests__/webSidecar.testeranto/node/type_errors.txt +0 -32
  189. package/testeranto/reports/allTests/src/lib/BaseSuite.test/node/console_log.txt +0 -35
  190. package/testeranto/reports/allTests/src/lib/BaseSuite.test/node/index.html +0 -21
  191. package/testeranto/reports/allTests/src/lib/BaseSuite.test/node/message +0 -1
  192. package/testeranto/reports/allTests/src/lib/BaseSuite.test/node/prompt.txt +0 -7
  193. package/testeranto/reports/allTests/src/lib/BaseSuite.test/node/type_errors.txt +0 -68
  194. package/testeranto/reports/allTests/src/mothership/test/node/index.html +0 -21
  195. package/testeranto/reports/allTests/src/mothership/test/node/lint_errors.json +0 -1
  196. package/testeranto/reports/allTests/src/mothership/test/node/message +0 -1
  197. package/testeranto/reports/allTests/src/mothership/test/node/prompt.txt +0 -8
  198. package/testeranto/reports/allTests/src/mothership/test/node/type_errors.txt +0 -24
  199. /package/testeranto/reports/allTests/src/{PM/__tests__/nodeSidecar.testeranto/node → Pure.test/pure}/dev.html +0 -0
  200. /package/testeranto/reports/allTests/src/{PM/__tests__/pureSidecar.testeranto/node/dev.html → Pure.test/pure/index.html} +0 -0
  201. /package/testeranto/reports/allTests/src/{PM/__tests__/webSidecar.testeranto → lib/BaseSuite.test/node.test}/node/dev.html +0 -0
  202. /package/testeranto/reports/allTests/src/lib/BaseSuite.test/{node/dev.html → node.test/node/index.html} +0 -0
  203. /package/testeranto/reports/allTests/src/{mothership/test/node → lib/BaseSuite.test/pure.test/pure}/dev.html +0 -0
  204. /package/testeranto/reports/allTests/src/lib/{BaseSuite.test/node/log.txt → baseBuilder.test/baseBuilder.test.node/node/logs.txt} +0 -0
@@ -95,21 +95,23 @@ export abstract class BaseSuite<I extends Ibdd_in_any, O extends Ibdd_out_any> {
95
95
 
96
96
  for (const [gKey, g] of Object.entries(this.givens)) {
97
97
  const giver = this.givens[gKey];
98
- this.store = await giver.give(
99
- subject,
100
- gKey,
101
- testResourceConfiguration,
102
- this.assertThat,
103
- suiteArtifactory,
104
- tLog,
105
- pm,
106
- sNdx
107
- ).catch((e) => {
108
- this.failed = true;
109
- this.fails = this.fails + 1;
110
- console.error("Given error:", e);
111
- throw e;
112
- });
98
+ this.store = await giver
99
+ .give(
100
+ subject,
101
+ gKey,
102
+ testResourceConfiguration,
103
+ this.assertThat,
104
+ suiteArtifactory,
105
+ tLog,
106
+ pm,
107
+ sNdx
108
+ )
109
+ .catch((e) => {
110
+ this.failed = true;
111
+ this.fails = this.fails + 1;
112
+ console.error("Given error 1:", e);
113
+ throw e;
114
+ });
113
115
  }
114
116
 
115
117
  for (const [ndx, thater] of this.checks.entries()) {
@@ -0,0 +1,31 @@
1
+ import { BaseGiven } from "../abstractBase";
2
+ import { Ibdd_in_any } from "../../CoreTypes";
3
+
4
+ export class MockGiven<I extends Ibdd_in_any> extends BaseGiven<I> {
5
+ constructor(
6
+ name: string,
7
+ features: string[],
8
+ whens: BaseWhen<I>[],
9
+ thens: BaseThen<I>[],
10
+ givenCB: I["given"],
11
+ initialValues: any
12
+ ) {
13
+ super(name, features, whens, thens, givenCB, initialValues);
14
+ }
15
+
16
+ async givenThat(
17
+ subject: I["isubject"],
18
+ testResourceConfiguration: any,
19
+ artifactory: any,
20
+ givenCB: I["given"],
21
+ initialValues: any,
22
+ pm: any
23
+ ): Promise<I["istore"]> {
24
+ return givenCB();
25
+ }
26
+
27
+ uberCatcher(e: Error): void {
28
+ console.error("MockGiven error:", e);
29
+ this.error = e;
30
+ }
31
+ }
@@ -0,0 +1,20 @@
1
+ import { BaseThen } from "../abstractBase";
2
+ import { Ibdd_in_any } from "../../CoreTypes";
3
+
4
+ export class MockThen<I extends Ibdd_in_any> extends BaseThen<I> {
5
+ constructor(
6
+ name: string,
7
+ thenCB: (val: I["iselection"]) => Promise<I["then"]>
8
+ ) {
9
+ super(name, thenCB);
10
+ }
11
+
12
+ async butThen(
13
+ store: I["istore"],
14
+ thenCB: (s: I["iselection"]) => Promise<I["isubject"]>,
15
+ testResourceConfiguration: any,
16
+ pm: any
17
+ ): Promise<I["iselection"]> {
18
+ return thenCB(store);
19
+ }
20
+ }
@@ -0,0 +1,17 @@
1
+ import { BaseWhen } from "../abstractBase";
2
+ import { Ibdd_in_any } from "../../CoreTypes";
3
+
4
+ export class MockWhen<I extends Ibdd_in_any> extends BaseWhen<I> {
5
+ constructor(name: string, whenCB: (x: I["iselection"]) => I["then"]) {
6
+ super(name, whenCB);
7
+ }
8
+
9
+ async andWhen(
10
+ store: I["istore"],
11
+ whenCB: (x: I["iselection"]) => I["then"],
12
+ testResource: any,
13
+ pm: any
14
+ ): Promise<I["istore"]> {
15
+ return whenCB(store);
16
+ }
17
+ }
@@ -0,0 +1,51 @@
1
+ import { PassThrough } from "stream";
2
+
3
+ import { ITestImplementation } from "../../CoreTypes";
4
+
5
+ import { I, O } from "./types";
6
+
7
+ export const implementation: ITestImplementation<I, O> = {
8
+ suites: {
9
+ Default: "Abstract Base Test Suite",
10
+ },
11
+
12
+ givens: {
13
+ Default: () => ({
14
+ testStore: { value: "initial" },
15
+ testSelection: { selected: true },
16
+ }),
17
+ WithError: () => ({
18
+ testStore: { value: "error" },
19
+ testSelection: { selected: false },
20
+ }),
21
+ },
22
+
23
+ whens: {
24
+ modifyStore: (newValue: string) => (store) => ({
25
+ ...store,
26
+ testStore: { value: newValue },
27
+ }),
28
+ throwError: () => () => {
29
+ throw new Error("Test error");
30
+ },
31
+ },
32
+
33
+ thens: {
34
+ verifyStore: (expected: string) => (store) => {
35
+ if (store.testStore.value !== expected) {
36
+ throw new Error(`Expected ${expected}, got ${store.testStore.value}`);
37
+ }
38
+ return store;
39
+ },
40
+ verifyError: (expected: string) => (store) => {
41
+ if (!store.error || !store.error.message.includes(expected)) {
42
+ throw new Error(`Expected error "${expected}" not found`);
43
+ }
44
+ return store;
45
+ },
46
+ },
47
+
48
+ checks: {
49
+ Default: () => new PassThrough(),
50
+ },
51
+ };
@@ -0,0 +1,19 @@
1
+ import Testeranto from "../../Node";
2
+ import { specification } from "./specification";
3
+ import { implementation } from "./implementation";
4
+ import { testInterface } from "./interface";
5
+ import { I, O } from "./types";
6
+ import { MockGiven } from "./MockGiven";
7
+ import { MockThen } from "./MockThen";
8
+ import { MockWhen } from "./MockWhen";
9
+
10
+ export default Testeranto<I, O, {}>(
11
+ {
12
+ MockGiven,
13
+ MockWhen,
14
+ MockThen,
15
+ },
16
+ specification,
17
+ implementation,
18
+ testInterface
19
+ );
@@ -0,0 +1,12 @@
1
+ import { ITestInterface } from "../../CoreTypes";
2
+ import { I } from "./types";
3
+
4
+ export const testInterface: ITestInterface<I> = {
5
+ beforeEach: async (subject, initializer) => initializer(),
6
+ andWhen: async (store, whenCB) => whenCB(store),
7
+ butThen: async (store, thenCB) => thenCB(store),
8
+ afterEach: (store) => store,
9
+ afterAll: () => {},
10
+ assertThis: (result) => !!result,
11
+ beforeAll: async (input) => input as any
12
+ };
@@ -0,0 +1,49 @@
1
+ import { ITestSpecification } from "../../CoreTypes";
2
+ import { I, O } from "./types";
3
+
4
+ export const specification: ITestSpecification<I, O> = (
5
+ Suite,
6
+ Given,
7
+ When,
8
+ Then,
9
+ Check
10
+ ) => [
11
+ Suite.Default("BaseGiven Tests", {
12
+ initialization: Given.Default(
13
+ ["Should initialize with default values"],
14
+ [],
15
+ [Then.verifyStore("initial")]
16
+ ),
17
+ errorHandling: Given.WithError(
18
+ ["Should handle errors properly"],
19
+ [When.throwError()],
20
+ [Then.verifyError("Test error")]
21
+ )
22
+ }),
23
+
24
+ Suite.Default("BaseWhen Tests", {
25
+ stateModification: Given.Default(
26
+ ["Should modify state correctly"],
27
+ [When.modifyStore("modified")],
28
+ [Then.verifyStore("modified")]
29
+ ),
30
+ errorPropagation: Given.Default(
31
+ ["Should propagate errors"],
32
+ [When.throwError()],
33
+ [Then.verifyError("Test error")]
34
+ )
35
+ }),
36
+
37
+ Suite.Default("BaseThen Tests", {
38
+ assertionPassing: Given.Default(
39
+ ["Should pass valid assertions"],
40
+ [When.modifyStore("asserted")],
41
+ [Then.verifyStore("asserted")]
42
+ ),
43
+ assertionFailing: Given.Default(
44
+ ["Should fail invalid assertions"],
45
+ [When.modifyStore("wrong")],
46
+ [Then.verifyStore("right")] // This should fail
47
+ )
48
+ })
49
+ ];
@@ -0,0 +1,19 @@
1
+ import { Ibdd_in, Ibdd_out } from "../../CoreTypes";
2
+
3
+ export type I = Ibdd_in<
4
+ {}, // iinput
5
+ {}, // isubject
6
+ { testStore: { value: string }; error?: Error }, // istore
7
+ { testSelection: { selected: boolean } }, // iselection
8
+ () => { testStore: { value: string } }, // given
9
+ (store: any) => any, // when
10
+ (store: any) => any // then
11
+ >;
12
+
13
+ export type O = Ibdd_out<
14
+ { Default: [string] }, // Suites
15
+ { Default: []; WithError: [] }, // Givens
16
+ { modifyStore: [string]; throwError: [] }, // Whens
17
+ { verifyStore: [string]; verifyError: [string] }, // Thens
18
+ { Default: [] } // Checks
19
+ >;
@@ -214,7 +214,6 @@ export abstract class BaseWhen<I extends Ibdd_in_any> {
214
214
  testResourceConfiguration,
215
215
  andWhenProxy(pm, filepath)
216
216
  ).catch((e: Error) => {
217
- console.log("MARK9", e);
218
217
  this.error = e;
219
218
  throw e;
220
219
  });
@@ -271,7 +270,6 @@ export abstract class BaseThen<I extends Ibdd_in_any> {
271
270
  testResourceConfiguration,
272
271
  butThenProxy(pm, filepath)
273
272
  ).catch((e) => {
274
- console.log("test failed 3", e);
275
273
  this.error = e;
276
274
  throw e;
277
275
  });
@@ -0,0 +1,83 @@
1
+ import { BaseBuilder } from "../basebuilder";
2
+ import { Ibdd_in_any, Ibdd_out_any, ITestSpecification } from "../../CoreTypes";
3
+ import {
4
+ ISuiteKlasser,
5
+ IGivenKlasser,
6
+ IWhenKlasser,
7
+ IThenKlasser,
8
+ ICheckKlasser,
9
+ } from "../types";
10
+ import { ITTestResourceRequest } from "..";
11
+
12
+ /**
13
+ * Concrete implementation of BaseBuilder for testing purposes only
14
+ */
15
+ export class TestBaseBuilder<
16
+ I extends Ibdd_in_any,
17
+ O extends Ibdd_out_any,
18
+ SuiteExtensions = {},
19
+ GivenExtensions = {},
20
+ WhenExtensions = {},
21
+ ThenExtensions = {},
22
+ CheckExtensions = {}
23
+ > extends BaseBuilder<
24
+ I,
25
+ O,
26
+ SuiteExtensions,
27
+ GivenExtensions,
28
+ WhenExtensions,
29
+ ThenExtensions,
30
+ CheckExtensions
31
+ > {
32
+ public summary: Record<string, any> = {};
33
+
34
+ constructor(
35
+ input: I["iinput"],
36
+ suitesOverrides: Record<
37
+ keyof SuiteExtensions,
38
+ ISuiteKlasser<I, O>
39
+ > = {} as any,
40
+ givenOverrides: Record<keyof GivenExtensions, IGivenKlasser<I>> = {} as any,
41
+ whenOverrides: Record<keyof WhenExtensions, IWhenKlasser<I>> = {} as any,
42
+ thenOverrides: Record<keyof ThenExtensions, IThenKlasser<I>> = {} as any,
43
+ checkOverrides: Record<keyof CheckExtensions, ICheckKlasser<I>> = {} as any,
44
+ testResourceRequirement: ITTestResourceRequest = { ports: [] },
45
+ testSpecification: ITestSpecification<I, O> = () => []
46
+ ) {
47
+ super(
48
+ input,
49
+ suitesOverrides,
50
+ givenOverrides,
51
+ whenOverrides,
52
+ thenOverrides,
53
+ checkOverrides,
54
+ testResourceRequirement,
55
+ testSpecification
56
+ );
57
+
58
+ this.summary = {};
59
+ }
60
+
61
+ /**
62
+ * Simplified version for testing that doesn't actually run tests
63
+ */
64
+ public testRun(puppetMaster: any): Promise<any> {
65
+ this.summary = {
66
+ [puppetMaster.testResourceConfiguration.name]: {
67
+ typeErrors: 0,
68
+ staticErrors: 0,
69
+ runTimeError: "",
70
+ prompt: "",
71
+ failingFeatures: {},
72
+ },
73
+ };
74
+
75
+ return Promise.resolve({
76
+ failed: false,
77
+ fails: 0,
78
+ artifacts: [],
79
+ logPromise: Promise.resolve(),
80
+ features: [],
81
+ });
82
+ }
83
+ }
@@ -0,0 +1,134 @@
1
+ import { PassThrough } from "stream";
2
+
3
+ import { ITestImplementation } from "../../CoreTypes";
4
+ import { TestBaseBuilder } from "./TestBaseBuilder";
5
+
6
+ import { I, O } from "./baseBuilder.test.types";
7
+ import { ITTestResourceRequest } from "..";
8
+ import { BaseBuilder } from "../basebuilder";
9
+
10
+ // Define our test subject type
11
+ type TestSubject = TestBaseBuilder<any, any, any, any, any, any>;
12
+
13
+ export const implementation: ITestImplementation<I, O, {}> = {
14
+ suites: {
15
+ Default: "BaseBuilder test suite",
16
+ },
17
+
18
+ givens: {
19
+ Default: () => {
20
+ return new TestBaseBuilder(
21
+ {},
22
+ {},
23
+ {},
24
+ {},
25
+ {},
26
+ {},
27
+ { ports: [] },
28
+ () => []
29
+ );
30
+ },
31
+ WithCustomInput: (input: any) => {
32
+ return new TestBaseBuilder(
33
+ input,
34
+ {},
35
+ {},
36
+ {},
37
+ {},
38
+ {},
39
+ { ports: [] },
40
+ () => []
41
+ );
42
+ },
43
+ WithResourceRequirements: (requirements: ITTestResourceRequest) => {
44
+ return new TestBaseBuilder(
45
+ {},
46
+ {},
47
+ {},
48
+ {},
49
+ {},
50
+ {},
51
+ requirements,
52
+ () => []
53
+ );
54
+ },
55
+ },
56
+
57
+ whens: {
58
+ addArtifact: (artifact: Promise<any>) => (builder: TestSubject) => {
59
+ builder.artifacts.push(artifact);
60
+ return builder;
61
+ },
62
+ setTestJobs: (jobs: ITestJob[]) => (builder: TestSubject) => {
63
+ builder.testJobs = jobs;
64
+ return builder;
65
+ },
66
+ },
67
+
68
+ thens: {
69
+ initializedProperly: () => (builder: TestSubject) => {
70
+ if (!(builder instanceof BaseBuilder)) {
71
+ throw new Error("Builder was not properly initialized");
72
+ }
73
+ return builder;
74
+ },
75
+ specsGenerated: () => (builder: TestSubject) => {
76
+ if (!Array.isArray(builder.specs)) {
77
+ throw new Error("Specs were not generated");
78
+ }
79
+ return builder;
80
+ },
81
+ jobsCreated: () => (builder: TestSubject) => {
82
+ if (!Array.isArray(builder.testJobs)) {
83
+ throw new Error("Test jobs were not created");
84
+ }
85
+ return builder;
86
+ },
87
+ artifactsTracked: () => (builder: TestSubject) => {
88
+ if (!Array.isArray(builder.artifacts)) {
89
+ throw new Error("Artifacts array not initialized");
90
+ }
91
+ return builder;
92
+ },
93
+ resourceRequirementsSet: () => (builder: TestSubject) => {
94
+ if (!builder.testResourceRequirement) {
95
+ throw new Error("Resource requirements not set");
96
+ }
97
+ return builder;
98
+ },
99
+ suitesOverridesConfigured: () => (builder: TestSubject) => {
100
+ if (!builder.suitesOverrides) {
101
+ throw new Error("Suites overrides not configured");
102
+ }
103
+ return builder;
104
+ },
105
+ givensOverridesConfigured: () => (builder: TestSubject) => {
106
+ if (!builder.givenOverides) {
107
+ throw new Error("Givens overrides not configured");
108
+ }
109
+ return builder;
110
+ },
111
+ whensOverridesConfigured: () => (builder: TestSubject) => {
112
+ if (!builder.whenOverides) {
113
+ throw new Error("Whens overrides not configured");
114
+ }
115
+ return builder;
116
+ },
117
+ thensOverridesConfigured: () => (builder: TestSubject) => {
118
+ if (!builder.thenOverides) {
119
+ throw new Error("Thens overrides not configured");
120
+ }
121
+ return builder;
122
+ },
123
+ checksOverridesConfigured: () => (builder: TestSubject) => {
124
+ if (!builder.checkOverides) {
125
+ throw new Error("Checks overrides not configured");
126
+ }
127
+ return builder;
128
+ },
129
+ },
130
+
131
+ checks: {
132
+ Default: () => new PassThrough(), // Not used in these tests
133
+ },
134
+ };
@@ -0,0 +1,18 @@
1
+ import { ITestInterface } from "../../CoreTypes";
2
+
3
+ import { I } from "./baseBuilder.test.types";
4
+
5
+ export const testInterface: ITestInterface<I> = {
6
+ beforeEach: async (subject, initializer) => {
7
+ return initializer();
8
+ },
9
+ andWhen: async (store, whenCB, testResource, utils) => {
10
+ return whenCB(store, utils);
11
+ },
12
+ butThen: async (store, thenCB, testResource, pm) => {
13
+ return thenCB(store, pm);
14
+ },
15
+ afterEach: (store) => store,
16
+ afterAll: () => {},
17
+ assertThis: (x: any) => {},
18
+ };
@@ -0,0 +1,14 @@
1
+ import Testeranto from "../../Pure";
2
+
3
+ import { specification } from "./baseBuilder.test.specification";
4
+ import { implementation } from "./baseBuilder.test.implementation";
5
+ import { testInterface } from "./baseBuilder.test.interface";
6
+ import { I, O } from "./baseBuilder.test.types";
7
+ import { BaseBuilder } from "../basebuilder";
8
+
9
+ export default Testeranto<I, O, {}>(
10
+ BaseBuilder.prototype,
11
+ specification,
12
+ implementation,
13
+ testInterface
14
+ );
@@ -0,0 +1,14 @@
1
+ import Testeranto from "../../Pure";
2
+
3
+ import { specification } from "./baseBuilder.test.specification";
4
+ import { implementation } from "./baseBuilder.test.implementation";
5
+ import { testInterface } from "./baseBuilder.test.interface";
6
+ import { I, O } from "./baseBuilder.test.types";
7
+ import { BaseBuilder } from "../basebuilder";
8
+
9
+ export default Testeranto<I, O, {}>(
10
+ BaseBuilder.prototype,
11
+ specification,
12
+ implementation,
13
+ testInterface
14
+ );
@@ -0,0 +1,35 @@
1
+ import { ITestSpecification } from "../../CoreTypes";
2
+
3
+ import { I, O } from "./baseBuilder.test.types";
4
+
5
+ export const specification: ITestSpecification<I, O> = (
6
+ Suite,
7
+ Given,
8
+ When,
9
+ Then,
10
+ Check
11
+ ) => {
12
+ return [
13
+ Suite.Default(
14
+ "Testing BaseBuilder functionality",
15
+ {
16
+ testInitialization: Given.Default(
17
+ ["BaseBuilder should initialize correctly"],
18
+ [],
19
+ [Then.initializedProperly()]
20
+ ),
21
+ testSpecsGeneration: Given.Default(
22
+ ["BaseBuilder should generate specs from test specification"],
23
+ [],
24
+ [Then.specsGenerated()]
25
+ ),
26
+ testJobsCreation: Given.Default(
27
+ ["BaseBuilder should create test jobs"],
28
+ [],
29
+ [Then.jobsCreated()]
30
+ ),
31
+ },
32
+ []
33
+ ),
34
+ ];
35
+ };
@@ -0,0 +1,36 @@
1
+ import { Ibdd_in, Ibdd_out } from "../../CoreTypes";
2
+
3
+ import { TestBaseBuilder } from "./TestBaseBuilder";
4
+
5
+ export type I = Ibdd_in<
6
+ {}, // iinput
7
+ BaseBuilder<any, any, any, any, any, any>, // isubject
8
+ BaseBuilder<any, any, any, any, any, any>, // istore
9
+ BaseBuilder<any, any, any, any, any, any>, // iselection
10
+ () => BaseBuilder<any, any, any, any, any, any>, // given
11
+ (store: any) => any, // when
12
+ (store: any) => any // then
13
+ >;
14
+
15
+ export type O = Ibdd_out<
16
+ // Suites
17
+ {
18
+ Default: [string];
19
+ },
20
+ // Givens
21
+ {
22
+ Default: [];
23
+ },
24
+ // Whens
25
+ {}, // No whens in these tests
26
+ // Thens
27
+ {
28
+ initializedProperly: [];
29
+ specsGenerated: [];
30
+ jobsCreated: [];
31
+ },
32
+ // Checks
33
+ {
34
+ Default: [];
35
+ }
36
+ >;
@@ -0,0 +1,14 @@
1
+ import Testeranto from "../../Web";
2
+
3
+ import { specification } from "./baseBuilder.test.specification";
4
+ import { implementation } from "./baseBuilder.test.implementation";
5
+ import { testInterface } from "./baseBuilder.test.interface";
6
+ import { I, O } from "./baseBuilder.test.types";
7
+ import { BaseBuilder } from "../basebuilder";
8
+
9
+ export default Testeranto<I, O, {}>(
10
+ BaseBuilder.prototype,
11
+ specification,
12
+ implementation,
13
+ testInterface
14
+ );
@@ -114,8 +114,9 @@ export abstract class BaseBuilder<
114
114
  logFilePath
115
115
  );
116
116
 
117
+ // deprecated?
117
118
  const tLog = async (...l: string[]) => {
118
- // console.log("x", x);
119
+ //
119
120
  };
120
121
 
121
122
  const suiteDone: BaseSuite<I, O> = await runner(puppetMaster, tLog);