@neurodevs/node-tdd 0.2.5 → 1.0.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 (326) hide show
  1. package/.vscode/launch.json +52 -57
  2. package/.vscode/settings.json +61 -66
  3. package/.vscode/tasks.json +98 -129
  4. package/README.md +1 -0
  5. package/build/.spruce/settings.json +3 -10
  6. package/build/__tests__/MockFetch.d.ts +18 -0
  7. package/build/__tests__/MockFetch.js +55 -0
  8. package/build/__tests__/MockFetch.js.map +1 -0
  9. package/build/__tests__/{impl → behavioral}/AbstractModuleTest.test.d.ts +2 -3
  10. package/build/__tests__/{impl → behavioral}/AbstractModuleTest.test.js +3 -12
  11. package/build/__tests__/behavioral/AbstractModuleTest.test.js.map +1 -0
  12. package/build/__tests__/behavioral/utilities/AllHooksCalledEvenIfNotDefined.test.d.ts +5 -0
  13. package/build/__tests__/behavioral/utilities/AllHooksCalledEvenIfNotDefined.test.js +34 -0
  14. package/build/__tests__/behavioral/utilities/AllHooksCalledEvenIfNotDefined.test.js.map +1 -0
  15. package/build/__tests__/behavioral/utilities/Assert.test.d.ts +45 -0
  16. package/build/__tests__/behavioral/utilities/Assert.test.js +645 -0
  17. package/build/__tests__/behavioral/utilities/Assert.test.js.map +1 -0
  18. package/build/__tests__/behavioral/utilities/InstanceParentTestCanAccessParentMethods.test.d.ts +4 -0
  19. package/build/__tests__/behavioral/utilities/InstanceParentTestCanAccessParentMethods.test.js +23 -0
  20. package/build/__tests__/behavioral/utilities/InstanceParentTestCanAccessParentMethods.test.js.map +1 -0
  21. package/build/__tests__/behavioral/utilities/MockFetch.test.d.ts +28 -0
  22. package/build/__tests__/behavioral/utilities/MockFetch.test.js +211 -0
  23. package/build/__tests__/behavioral/utilities/MockFetch.test.js.map +1 -0
  24. package/build/__tests__/behavioral/utilities/StackCleaner.test.d.ts +4 -0
  25. package/build/__tests__/behavioral/utilities/StackCleaner.test.js +46 -0
  26. package/build/__tests__/behavioral/utilities/StackCleaner.test.js.map +1 -0
  27. package/build/__tests__/behavioral/utilities/StaticParentTestCanAccessParentMethods.test.d.ts +7 -0
  28. package/build/__tests__/behavioral/utilities/StaticParentTestCanAccessParentMethods.test.js +32 -0
  29. package/build/__tests__/behavioral/utilities/StaticParentTestCanAccessParentMethods.test.js.map +1 -0
  30. package/build/__tests__/behavioral/utilities/StaticTestInheritsAbstractSpruceTestProperly.test.d.ts +4 -0
  31. package/build/__tests__/behavioral/utilities/StaticTestInheritsAbstractSpruceTestProperly.test.js +19 -0
  32. package/build/__tests__/behavioral/utilities/StaticTestInheritsAbstractSpruceTestProperly.test.js.map +1 -0
  33. package/build/__tests__/behavioral/utilities/Stringify.test.d.ts +5 -0
  34. package/build/__tests__/behavioral/utilities/Stringify.test.js +127 -0
  35. package/build/__tests__/behavioral/utilities/Stringify.test.js.map +1 -0
  36. package/build/__tests__/behavioral/utilities/TestDecoratorResolver.test.d.ts +7 -0
  37. package/build/__tests__/behavioral/utilities/TestDecoratorResolver.test.js +38 -0
  38. package/build/__tests__/behavioral/utilities/TestDecoratorResolver.test.js.map +1 -0
  39. package/build/__tests__/behavioral/utilities/TestOnBasic.test.d.ts +12 -0
  40. package/build/__tests__/behavioral/utilities/TestOnBasic.test.js +68 -0
  41. package/build/__tests__/behavioral/utilities/TestOnBasic.test.js.map +1 -0
  42. package/build/__tests__/behavioral/utilities/TestOnInstance.test.d.ts +28 -0
  43. package/build/__tests__/behavioral/utilities/TestOnInstance.test.js +289 -0
  44. package/build/__tests__/behavioral/utilities/TestOnInstance.test.js.map +1 -0
  45. package/build/__tests__/behavioral/utilities/TestOnInstanceExtendsTest.test.d.ts +9 -0
  46. package/build/__tests__/behavioral/utilities/TestOnInstanceExtendsTest.test.js +118 -0
  47. package/build/__tests__/behavioral/utilities/TestOnInstanceExtendsTest.test.js.map +1 -0
  48. package/build/__tests__/behavioral/utilities/TestOnInstanceExtendsTestWithHooks.test.d.ts +5 -0
  49. package/build/__tests__/behavioral/utilities/TestOnInstanceExtendsTestWithHooks.test.js +78 -0
  50. package/build/__tests__/behavioral/utilities/TestOnInstanceExtendsTestWithHooks.test.js.map +1 -0
  51. package/build/__tests__/behavioral/utilities/TestOnInstanceWithParentBeforeAll.test.d.ts +4 -0
  52. package/build/__tests__/behavioral/utilities/TestOnInstanceWithParentBeforeAll.test.js +23 -0
  53. package/build/__tests__/behavioral/utilities/TestOnInstanceWithParentBeforeAll.test.js.map +1 -0
  54. package/build/__tests__/behavioral/utilities/TestOnInstanceWithTwoLevelsOfInheritence.test.d.ts +4 -0
  55. package/build/__tests__/behavioral/utilities/TestOnInstanceWithTwoLevelsOfInheritence.test.js +24 -0
  56. package/build/__tests__/behavioral/utilities/TestOnInstanceWithTwoLevelsOfInheritence.test.js.map +1 -0
  57. package/build/__tests__/behavioral/utilities/TestResolver.test.d.ts +7 -0
  58. package/build/__tests__/behavioral/utilities/TestResolver.test.js +38 -0
  59. package/build/__tests__/behavioral/utilities/TestResolver.test.js.map +1 -0
  60. package/build/__tests__/behavioral/utilities/TestResolverOnStatic.test.d.ts +4 -0
  61. package/build/__tests__/behavioral/utilities/TestResolverOnStatic.test.js +20 -0
  62. package/build/__tests__/behavioral/utilities/TestResolverOnStatic.test.js.map +1 -0
  63. package/build/__tests__/behavioral/workspace/JestJsonParser.test.d.ts +18 -0
  64. package/build/__tests__/behavioral/workspace/JestJsonParser.test.js +267 -0
  65. package/build/__tests__/behavioral/workspace/JestJsonParser.test.js.map +1 -0
  66. package/build/__tests__/behavioral/workspace/TestReporter.test.d.ts +16 -0
  67. package/build/__tests__/behavioral/workspace/TestReporter.test.js +227 -0
  68. package/build/__tests__/behavioral/workspace/TestReporter.test.js.map +1 -0
  69. package/build/__tests__/behavioral/workspace/TestRunner.test.d.ts +15 -0
  70. package/build/__tests__/behavioral/workspace/TestRunner.test.js +99 -0
  71. package/build/__tests__/behavioral/workspace/TestRunner.test.js.map +1 -0
  72. package/build/__tests__/behavioral/workspace/Widgets.test.d.ts +13 -0
  73. package/build/__tests__/behavioral/workspace/Widgets.test.js +99 -0
  74. package/build/__tests__/behavioral/workspace/Widgets.test.js.map +1 -0
  75. package/build/__tests__/mock-terminal-kit.d.ts +79 -0
  76. package/build/__tests__/mock-terminal-kit.js +103 -0
  77. package/build/__tests__/mock-terminal-kit.js.map +1 -0
  78. package/build/__tests__/support/AbstractForInstanceTest.d.ts +4 -0
  79. package/build/__tests__/support/AbstractForInstanceTest.js +9 -0
  80. package/build/__tests__/support/AbstractForInstanceTest.js.map +1 -0
  81. package/build/__tests__/support/AbstractLevelOneTest.d.ts +3 -0
  82. package/build/__tests__/support/AbstractLevelOneTest.js +4 -0
  83. package/build/__tests__/support/AbstractLevelOneTest.js.map +1 -0
  84. package/build/__tests__/support/AbstractLevelTwoTest.d.ts +7 -0
  85. package/build/__tests__/support/AbstractLevelTwoTest.js +14 -0
  86. package/build/__tests__/support/AbstractLevelTwoTest.js.map +1 -0
  87. package/build/__tests__/support/AbstractStaticTest.d.ts +7 -0
  88. package/build/__tests__/support/AbstractStaticTest.js +14 -0
  89. package/build/__tests__/support/AbstractStaticTest.js.map +1 -0
  90. package/build/__tests__/support/AbstractTestOnInstanceTest.d.ts +22 -0
  91. package/build/__tests__/support/AbstractTestOnInstanceTest.js +23 -0
  92. package/build/__tests__/support/AbstractTestOnInstanceTest.js.map +1 -0
  93. package/build/__tests__/support/AbstractTestOnInstanceWithHooks.d.ts +26 -0
  94. package/build/__tests__/support/AbstractTestOnInstanceWithHooks.js +59 -0
  95. package/build/__tests__/support/AbstractTestOnInstanceWithHooks.js.map +1 -0
  96. package/build/__tests__/support/jest.setup.d.ts +1 -0
  97. package/build/__tests__/support/jest.setup.js +4 -0
  98. package/build/__tests__/support/jest.setup.js.map +1 -0
  99. package/build/__tests__/support/onTestFileResult.d.ts +244 -0
  100. package/build/__tests__/support/onTestFileResult.js +980 -0
  101. package/build/__tests__/support/onTestFileResult.js.map +1 -0
  102. package/build/impl/AbstractModuleTest.d.ts +18 -4
  103. package/build/impl/AbstractModuleTest.js +47 -9
  104. package/build/impl/AbstractModuleTest.js.map +1 -1
  105. package/build/index.d.ts +4 -4
  106. package/build/index.js +4 -4
  107. package/build/index.js.map +1 -1
  108. package/build/utilities/AssertionError.d.ts +3 -0
  109. package/build/utilities/AssertionError.js +12 -0
  110. package/build/utilities/AssertionError.js.map +1 -0
  111. package/build/utilities/StackCleaner.d.ts +4 -0
  112. package/build/utilities/StackCleaner.js +10 -0
  113. package/build/utilities/StackCleaner.js.map +1 -0
  114. package/build/utilities/TestDecoratorResolver.d.ts +35 -0
  115. package/build/utilities/TestDecoratorResolver.js +93 -0
  116. package/build/utilities/TestDecoratorResolver.js.map +1 -0
  117. package/build/utilities/assert.d.ts +49 -0
  118. package/build/utilities/assert.js +255 -0
  119. package/build/utilities/assert.js.map +1 -0
  120. package/build/utilities/assert.utility.d.ts +28 -0
  121. package/build/utilities/assert.utility.js +185 -0
  122. package/build/utilities/assert.utility.js.map +1 -0
  123. package/build/utilities/decorators.d.ts +9 -0
  124. package/build/utilities/decorators.js +133 -0
  125. package/build/utilities/decorators.js.map +1 -0
  126. package/build/workspace/CommandService.d.ts +49 -0
  127. package/build/workspace/CommandService.js +179 -0
  128. package/build/workspace/CommandService.js.map +1 -0
  129. package/build/workspace/JestJsonParser.d.ts +15 -0
  130. package/build/workspace/JestJsonParser.js +149 -0
  131. package/build/workspace/JestJsonParser.js.map +1 -0
  132. package/build/workspace/TKButtonWidget.d.ts +13 -0
  133. package/build/workspace/TKButtonWidget.js +37 -0
  134. package/build/workspace/TKButtonWidget.js.map +1 -0
  135. package/build/workspace/TestLogItemGenerator.d.ts +15 -0
  136. package/build/workspace/TestLogItemGenerator.js +142 -0
  137. package/build/workspace/TestLogItemGenerator.js.map +1 -0
  138. package/build/workspace/TestReporter.d.ts +103 -0
  139. package/build/workspace/TestReporter.js +677 -0
  140. package/build/workspace/TestReporter.js.map +1 -0
  141. package/build/workspace/TestRunner.d.ts +24 -0
  142. package/build/workspace/TestRunner.js +95 -0
  143. package/build/workspace/TestRunner.js.map +1 -0
  144. package/build/workspace/TkBaseWidget.d.ts +37 -0
  145. package/build/workspace/TkBaseWidget.js +185 -0
  146. package/build/workspace/TkBaseWidget.js.map +1 -0
  147. package/build/workspace/TkInputWidget.d.ts +16 -0
  148. package/build/workspace/TkInputWidget.js +64 -0
  149. package/build/workspace/TkInputWidget.js.map +1 -0
  150. package/build/workspace/TkLayoutCellWidget.d.ts +18 -0
  151. package/build/workspace/TkLayoutCellWidget.js +32 -0
  152. package/build/workspace/TkLayoutCellWidget.js.map +1 -0
  153. package/build/workspace/TkLayoutWidget.d.ts +34 -0
  154. package/build/workspace/TkLayoutWidget.js +130 -0
  155. package/build/workspace/TkLayoutWidget.js.map +1 -0
  156. package/build/workspace/TkMenuBarWidget.d.ts +13 -0
  157. package/build/workspace/TkMenuBarWidget.js +71 -0
  158. package/build/workspace/TkMenuBarWidget.js.map +1 -0
  159. package/build/workspace/TkPopupWidget.d.ts +16 -0
  160. package/build/workspace/TkPopupWidget.js +36 -0
  161. package/build/workspace/TkPopupWidget.js.map +1 -0
  162. package/build/workspace/TkProgressBarWidget.d.ts +10 -0
  163. package/build/workspace/TkProgressBarWidget.js +39 -0
  164. package/build/workspace/TkProgressBarWidget.js.map +1 -0
  165. package/build/workspace/TkTextWidget.d.ts +20 -0
  166. package/build/workspace/TkTextWidget.js +115 -0
  167. package/build/workspace/TkTextWidget.js.map +1 -0
  168. package/build/workspace/TkWindowWidget.d.ts +22 -0
  169. package/build/workspace/TkWindowWidget.js +88 -0
  170. package/build/workspace/TkWindowWidget.js.map +1 -0
  171. package/build/workspace/WidgetFactory.d.ts +6 -0
  172. package/build/workspace/WidgetFactory.js +21 -0
  173. package/build/workspace/WidgetFactory.js.map +1 -0
  174. package/build/workspace/button.types.d.ts +15 -0
  175. package/build/workspace/button.types.js +6 -0
  176. package/build/workspace/button.types.js.map +1 -0
  177. package/build/workspace/duration.utility.d.ts +4 -0
  178. package/build/workspace/duration.utility.js +26 -0
  179. package/build/workspace/duration.utility.js.map +1 -0
  180. package/build/workspace/factory.types.d.ts +89 -0
  181. package/build/workspace/factory.types.js +37 -0
  182. package/build/workspace/factory.types.js.map +1 -0
  183. package/build/workspace/input.types.d.ts +18 -0
  184. package/build/workspace/input.types.js +7 -0
  185. package/build/workspace/input.types.js.map +1 -0
  186. package/build/workspace/keySelectChoices.d.ts +517 -0
  187. package/build/workspace/keySelectChoices.js +2 -0
  188. package/build/workspace/keySelectChoices.js.map +1 -0
  189. package/build/workspace/layout.types.d.ts +33 -0
  190. package/build/workspace/layout.types.js +2 -0
  191. package/build/workspace/layout.types.js.map +1 -0
  192. package/build/workspace/menuBar.types.d.ts +19 -0
  193. package/build/workspace/menuBar.types.js +6 -0
  194. package/build/workspace/menuBar.types.js.map +1 -0
  195. package/build/workspace/popup.types.d.ts +13 -0
  196. package/build/workspace/popup.types.js +6 -0
  197. package/build/workspace/popup.types.js.map +1 -0
  198. package/build/workspace/progressBar.types.d.ts +10 -0
  199. package/build/workspace/progressBar.types.js +2 -0
  200. package/build/workspace/progressBar.types.js.map +1 -0
  201. package/build/workspace/table.types.d.ts +6 -0
  202. package/build/workspace/table.types.js +2 -0
  203. package/build/workspace/table.types.js.map +1 -0
  204. package/build/workspace/termKit.utility.d.ts +12 -0
  205. package/build/workspace/termKit.utility.js +128 -0
  206. package/build/workspace/termKit.utility.js.map +1 -0
  207. package/build/workspace/test.types.d.ts +24 -0
  208. package/build/workspace/test.types.js +2 -0
  209. package/build/workspace/test.types.js.map +1 -0
  210. package/build/workspace/testRunner.cli.d.ts +1 -0
  211. package/build/workspace/testRunner.cli.js +149 -0
  212. package/build/workspace/testRunner.cli.js.map +1 -0
  213. package/build/workspace/text.types.d.ts +20 -0
  214. package/build/workspace/text.types.js +7 -0
  215. package/build/workspace/text.types.js.map +1 -0
  216. package/build/workspace/widget.utilities.d.ts +5 -0
  217. package/build/workspace/widget.utilities.js +20 -0
  218. package/build/workspace/widget.utilities.js.map +1 -0
  219. package/build/workspace/widgets.types.d.ts +66 -0
  220. package/build/workspace/widgets.types.js +2 -0
  221. package/build/workspace/widgets.types.js.map +1 -0
  222. package/build/workspace/window.types.d.ts +18 -0
  223. package/build/workspace/window.types.js +9 -0
  224. package/build/workspace/window.types.js.map +1 -0
  225. package/eslint.config.js +3 -0
  226. package/package.json +30 -37
  227. package/prettier.config.js +3 -0
  228. package/src/.spruce/settings.json +3 -10
  229. package/src/__tests__/MockFetch.ts +100 -0
  230. package/src/__tests__/behavioral/AbstractModuleTest.test.ts +15 -0
  231. package/src/__tests__/behavioral/utilities/AllHooksCalledEvenIfNotDefined.test.ts +31 -0
  232. package/src/__tests__/behavioral/utilities/Assert.test.ts +826 -0
  233. package/src/__tests__/behavioral/utilities/InstanceParentTestCanAccessParentMethods.test.ts +14 -0
  234. package/src/__tests__/behavioral/utilities/MockFetch.test.ts +240 -0
  235. package/src/__tests__/behavioral/utilities/StackCleaner.test.ts +46 -0
  236. package/src/__tests__/behavioral/utilities/StaticParentTestCanAccessParentMethods.test.ts +34 -0
  237. package/src/__tests__/behavioral/utilities/StaticTestInheritsAbstractSpruceTestProperly.test.ts +11 -0
  238. package/src/__tests__/behavioral/utilities/Stringify.test.ts +169 -0
  239. package/src/__tests__/behavioral/utilities/TestDecoratorResolver.test.ts +51 -0
  240. package/src/__tests__/behavioral/utilities/TestOnBasic.test.ts +62 -0
  241. package/src/__tests__/behavioral/utilities/TestOnInstance.test.ts +439 -0
  242. package/src/__tests__/behavioral/utilities/TestOnInstanceExtendsTest.test.ts +237 -0
  243. package/src/__tests__/behavioral/utilities/TestOnInstanceExtendsTestWithHooks.test.ts +85 -0
  244. package/src/__tests__/behavioral/utilities/TestOnInstanceWithParentBeforeAll.test.ts +14 -0
  245. package/src/__tests__/behavioral/utilities/TestOnInstanceWithTwoLevelsOfInheritence.test.ts +16 -0
  246. package/src/__tests__/behavioral/utilities/TestResolver.test.ts +48 -0
  247. package/src/__tests__/behavioral/utilities/TestResolverOnStatic.test.ts +12 -0
  248. package/src/__tests__/behavioral/workspace/JestJsonParser.test.ts +357 -0
  249. package/src/__tests__/behavioral/workspace/TestReporter.test.ts +257 -0
  250. package/src/__tests__/behavioral/workspace/TestRunner.test.ts +87 -0
  251. package/src/__tests__/behavioral/workspace/Widgets.test.ts +90 -0
  252. package/src/__tests__/mock-terminal-kit.ts +115 -0
  253. package/src/__tests__/support/AbstractForInstanceTest.ts +12 -0
  254. package/src/__tests__/support/AbstractLevelOneTest.ts +3 -0
  255. package/src/__tests__/support/AbstractLevelTwoTest.ts +16 -0
  256. package/src/__tests__/support/AbstractStaticTest.ts +16 -0
  257. package/src/__tests__/support/AbstractTestOnInstanceTest.ts +30 -0
  258. package/src/__tests__/support/AbstractTestOnInstanceWithHooks.ts +138 -0
  259. package/src/__tests__/support/jest.setup.ts +2 -0
  260. package/src/__tests__/support/onTestFileResult.ts +1008 -0
  261. package/src/impl/AbstractModuleTest.ts +59 -10
  262. package/src/index.ts +4 -4
  263. package/src/utilities/AssertionError.ts +14 -0
  264. package/src/utilities/StackCleaner.ts +14 -0
  265. package/src/utilities/TestDecoratorResolver.ts +118 -0
  266. package/src/utilities/assert.ts +583 -0
  267. package/src/utilities/assert.utility.ts +295 -0
  268. package/src/utilities/decorators.ts +167 -0
  269. package/src/workspace/CommandService.ts +256 -0
  270. package/src/workspace/JestJsonParser.ts +255 -0
  271. package/src/workspace/TKButtonWidget.ts +54 -0
  272. package/src/workspace/TestLogItemGenerator.ts +184 -0
  273. package/src/workspace/TestReporter.ts +865 -0
  274. package/src/workspace/TestRunner.ts +128 -0
  275. package/src/workspace/TkBaseWidget.ts +249 -0
  276. package/src/workspace/TkInputWidget.ts +83 -0
  277. package/src/workspace/TkLayoutCellWidget.ts +46 -0
  278. package/src/workspace/TkLayoutWidget.ts +181 -0
  279. package/src/workspace/TkMenuBarWidget.ts +95 -0
  280. package/src/workspace/TkPopupWidget.ts +47 -0
  281. package/src/workspace/TkProgressBarWidget.ts +54 -0
  282. package/src/workspace/TkTextWidget.ts +158 -0
  283. package/src/workspace/TkWindowWidget.ts +122 -0
  284. package/src/workspace/WidgetFactory.ts +33 -0
  285. package/src/workspace/button.types.ts +19 -0
  286. package/src/workspace/duration.utility.ts +34 -0
  287. package/src/workspace/factory.types.ts +101 -0
  288. package/src/workspace/input.types.ts +22 -0
  289. package/src/workspace/keySelectChoices.ts +134 -0
  290. package/src/workspace/layout.types.ts +40 -0
  291. package/src/workspace/menuBar.types.ts +24 -0
  292. package/src/workspace/popup.types.ts +17 -0
  293. package/src/workspace/progressBar.types.ts +13 -0
  294. package/src/workspace/table.types.ts +9 -0
  295. package/src/workspace/termKit.utility.ts +130 -0
  296. package/src/workspace/terminal-kit.d.ts +28 -0
  297. package/src/workspace/test.types.ts +34 -0
  298. package/src/workspace/testRunner.cli.ts +159 -0
  299. package/src/workspace/text.types.ts +26 -0
  300. package/src/workspace/widget.utilities.ts +35 -0
  301. package/src/workspace/widgets.types.ts +102 -0
  302. package/src/workspace/window.types.ts +22 -0
  303. package/tsconfig.json +23 -27
  304. package/build/__tests__/AbstractPackageTest.d.ts +0 -4
  305. package/build/__tests__/AbstractPackageTest.js +0 -7
  306. package/build/__tests__/AbstractPackageTest.js.map +0 -1
  307. package/build/__tests__/functions/assertFunction.test.d.ts +0 -5
  308. package/build/__tests__/functions/assertFunction.test.js +0 -23
  309. package/build/__tests__/functions/assertFunction.test.js.map +0 -1
  310. package/build/__tests__/functions/testFunction.test.d.ts +0 -5
  311. package/build/__tests__/functions/testFunction.test.js +0 -23
  312. package/build/__tests__/functions/testFunction.test.js.map +0 -1
  313. package/build/__tests__/impl/AbstractModuleTest.test.js.map +0 -1
  314. package/build/functions/assert.d.ts +0 -3
  315. package/build/functions/assert.js +0 -4
  316. package/build/functions/assert.js.map +0 -1
  317. package/build/functions/test.d.ts +0 -3
  318. package/build/functions/test.js +0 -4
  319. package/build/functions/test.js.map +0 -1
  320. package/eslint.config.mjs +0 -3
  321. package/src/__tests__/AbstractPackageTest.ts +0 -7
  322. package/src/__tests__/functions/assertFunction.test.ts +0 -22
  323. package/src/__tests__/functions/testFunction.test.ts +0 -22
  324. package/src/__tests__/impl/AbstractModuleTest.test.ts +0 -34
  325. package/src/functions/assert.ts +0 -4
  326. package/src/functions/test.ts +0 -4
@@ -0,0 +1,14 @@
1
+ import assert from '../../../utilities/assert.js'
2
+ import test, { suite } from '../../../utilities/decorators.js'
3
+ import AbstractStaticTest from '../../support/AbstractStaticTest.js'
4
+
5
+ @suite()
6
+ export default class InstanceParentTestCanAccessParentMethodsTest extends AbstractStaticTest {
7
+ @test()
8
+ protected async canCreateInstanceParentTestCanAccessParentMethods() {
9
+ assert.isTrue(
10
+ InstanceParentTestCanAccessParentMethodsTest.didCallAnotherStaticMethodInBeforeEach,
11
+ 'beforeAll in parent class not referrenced'
12
+ )
13
+ }
14
+ }
@@ -0,0 +1,240 @@
1
+ import generateId from '@neurodevs/generate-id'
2
+
3
+ import assert from '../../../utilities/assert.js'
4
+ import test, { suite } from '../../../utilities/decorators.js'
5
+ import AbstractModuleTest from '../../../impl/AbstractModuleTest.js'
6
+ import MockFetch, { ExpectedRequest } from '../../MockFetch.js'
7
+
8
+ @suite()
9
+ export default class MockFetchTest extends AbstractModuleTest {
10
+ private mock = new MockFetch()
11
+ private fetch = this.mock.buildFetch()
12
+ private url = generateId()
13
+
14
+ @test()
15
+ protected async throwsIfNotCalled() {
16
+ assert.doesThrow(() => this.assertFetchWasCalled(), 'expected')
17
+ }
18
+
19
+ @test()
20
+ protected async passesIfCalled() {
21
+ await this.callFetch()
22
+ this.assertFetchWasCalled()
23
+ }
24
+
25
+ @test()
26
+ protected async throwsIfUrlDoesNotMatch() {
27
+ await this.callFetch()
28
+ assert.doesThrow(
29
+ () => this.assertFetchWasCalled(generateId()),
30
+ 'Expected fetch() to have been called with URL'
31
+ )
32
+ }
33
+
34
+ @test()
35
+ protected async canAssertMultipleCalls() {
36
+ await this.callFetch()
37
+ const url1 = this.url
38
+
39
+ this.randomizeUrl()
40
+ await this.callFetch()
41
+
42
+ const expected = [url1, this.url]
43
+ this.assertMadeRequests(expected)
44
+ }
45
+
46
+ @test()
47
+ protected async assertMultipleFailsIfSecondUrlDoesNotMatch() {
48
+ await this.callFetch()
49
+ const url1 = this.url
50
+
51
+ this.randomizeUrl()
52
+ await this.callFetch()
53
+
54
+ const expected = [url1, generateId()]
55
+ assert.doesThrow(
56
+ () => this.assertMadeRequests(expected),
57
+ 'Expected fetch() to have been called with URL'
58
+ )
59
+ }
60
+
61
+ @test()
62
+ protected async assertCalledThrowsIfDoesNotMatchSecondUrl() {
63
+ await this.callFetch()
64
+ const url = this.url
65
+ this.randomizeUrl()
66
+ await this.callFetch()
67
+
68
+ assert.doesThrow(
69
+ () => this.assertFetchWasCalled(url),
70
+ 'Expected fetch() to have been called with URL'
71
+ )
72
+ }
73
+
74
+ @test()
75
+ protected async throwsIfInitDoesNotMatch() {
76
+ await this.callFetch({
77
+ method: 'POST',
78
+ })
79
+
80
+ assert.doesThrow(
81
+ () =>
82
+ this.assertFetchWasCalled(this.url, {
83
+ method: 'GET',
84
+ }),
85
+ 'Expected fetch() to have been called with init'
86
+ )
87
+ }
88
+
89
+ @test()
90
+ protected async passesIfMethodMatches() {
91
+ await this.callFetch({
92
+ method: 'POST',
93
+ })
94
+
95
+ this.assertFetchWasCalled(this.url, {
96
+ method: 'POST',
97
+ })
98
+ }
99
+
100
+ @test()
101
+ protected async passesIfHeadersMatch() {
102
+ await this.callFetch({
103
+ headers: {
104
+ 'Content-Type': 'application/json',
105
+ },
106
+ })
107
+
108
+ this.assertFetchWasCalled(this.url, {
109
+ headers: {
110
+ 'Content-Type': 'application/json',
111
+ },
112
+ })
113
+ }
114
+
115
+ @test()
116
+ protected async throwsIfHeadersDoNotMatch() {
117
+ await this.callFetch({
118
+ headers: {
119
+ 'Content-Type': 'application/json',
120
+ },
121
+ })
122
+
123
+ assert.doesThrow(() =>
124
+ this.assertFetchWasCalled(this.url, {
125
+ headers: {
126
+ 'Content-Type': 'text/plain',
127
+ },
128
+ })
129
+ )
130
+ }
131
+
132
+ @test()
133
+ protected async doesNotThrowIfMultipleRequestsMatch() {
134
+ await this.callFetch({
135
+ method: 'POST',
136
+ })
137
+
138
+ await this.callFetch({
139
+ method: 'GET',
140
+ })
141
+
142
+ this.assertMadeRequests([
143
+ { url: this.url, init: { method: 'POST' } },
144
+ { url: this.url, init: { method: 'GET' } },
145
+ ])
146
+ }
147
+
148
+ @test()
149
+ protected async getBackGeneric200Response() {
150
+ const expected = new Response(
151
+ JSON.stringify({
152
+ success: true,
153
+ }),
154
+ { status: 200 }
155
+ )
156
+ await this.assertFetchResponseEquals(expected)
157
+ }
158
+
159
+ @test()
160
+ protected async canSetResponseForAllRequests() {
161
+ const expected = new Response('Hello, World!', {
162
+ status: 404,
163
+ })
164
+
165
+ this.setResponse(expected)
166
+ await this.assertFetchResponseEquals(expected)
167
+ }
168
+
169
+ @test()
170
+ protected async defaultResponseDoesNotThrowWhenGettingJson() {
171
+ const response = await this.callFetch()
172
+ await response.json()
173
+ }
174
+
175
+ @test()
176
+ protected async canSetResponseByUrl() {
177
+ const expected1 = new Response('Response for URL 1', {})
178
+ const expected2 = new Response('Response for URL 2', {})
179
+
180
+ const url1 = generateId()
181
+ const url2 = generateId()
182
+
183
+ this.setResponse(expected1, url1)
184
+ this.setResponse(expected2, url2)
185
+
186
+ this.url = url1
187
+ await this.assertFetchResponseEquals(expected1)
188
+
189
+ this.url = url2
190
+ await this.assertFetchResponseEquals(expected2)
191
+ }
192
+
193
+ @test()
194
+ protected async canSetResponseByInit() {
195
+ const expected1 = new Response('Special POST Response 1', {})
196
+ const expected2 = new Response('Special POST Response 2', {})
197
+
198
+ this.setResponse(expected1, this.url, { method: 'POST' })
199
+ this.setResponse(expected2, this.url, { method: 'GET' })
200
+
201
+ await this.assertFetchResponseEquals(expected1, { method: 'POST' })
202
+ await this.assertFetchResponseEquals(expected2, { method: 'GET' })
203
+ }
204
+
205
+ private setResponse(
206
+ expected: Response,
207
+ url?: string | URL,
208
+ init?: RequestInit
209
+ ) {
210
+ this.mock.setResponse(expected, url, init)
211
+ }
212
+
213
+ private async assertFetchResponseEquals(
214
+ expected: Response,
215
+ init?: RequestInit
216
+ ) {
217
+ const response = await this.callFetch(init)
218
+ assert.isEqualDeep(
219
+ (await response.text()) + ': ' + response.status,
220
+ (await expected.text()) + ': ' + expected.status,
221
+ 'fetch() did not return the expected response.'
222
+ )
223
+ }
224
+
225
+ private assertMadeRequests(expected: ExpectedRequest[]) {
226
+ this.mock.assertMadeRequests(expected)
227
+ }
228
+
229
+ private randomizeUrl() {
230
+ this.url = generateId()
231
+ }
232
+
233
+ private async callFetch(init?: RequestInit) {
234
+ return await this.fetch(this.url, init)
235
+ }
236
+
237
+ private assertFetchWasCalled(url?: string | URL, init?: RequestInit) {
238
+ this.mock.assertWasCalled(url, init)
239
+ }
240
+ }
@@ -0,0 +1,46 @@
1
+ import AbstractModuleTest from '../../../impl/AbstractModuleTest.js'
2
+ import assert from '../../../utilities/assert.js'
3
+ import test from '../../../utilities/decorators.js'
4
+ import StackCleaner from '../../../utilities/StackCleaner.js'
5
+
6
+ export default class ErrorStackTest extends AbstractModuleTest {
7
+ @test(
8
+ 'removes test files',
9
+ `Error: You called will-fail!
10
+ at Object.willFail (~/node-tdd/src/assert.ts:53:17)
11
+ at Function.canRemoveTestFiles (~/node-tdd/src/__tests__/ErrorStack.test.ts:8:10)
12
+ at Object.<anonymous> (~/node-tdd/src/decorators.ts:36:11)
13
+ at Object.asyncJestTest (~/node-tdd/node_modules/jest-jasmine2/build/jasmineAsyncInstall.js:100:37)
14
+ at ~/node-tdd/node_modules/jest-jasmine2/build/queueRunner.js:45:12
15
+ at new Promise (<anonymous>)
16
+ at mapper (~/node-tdd/node_modules/jest-jasmine2/build/queueRunner.js:28:19)
17
+ at ~/node-tdd/node_modules/jest-jasmine2/build/queueRunner.js:75:41
18
+ at processTicksAndRejections (internal/process/task_queues.js:97:5)`,
19
+ `Error: You called will-fail!
20
+ at Function.canRemoveTestFiles (~/node-tdd/src/__tests__/ErrorStack.test.ts:8:10)
21
+ at new Promise (<anonymous>)`
22
+ )
23
+ @test(
24
+ 'drops babel crap',
25
+ `TypeError: Cannot read property 'map' of undefined
26
+ at Object (~/example/src/databases/mongo.utilities.ts:21:17)
27
+ at Array.forEach (<anonymous>)
28
+ at mapNestedIdValues (~/example/src/databases/mongo.utilities.ts:20:2)
29
+ at Object.mongoUtil [as mapQuery] (~/example/src/databases/mongo.utilities.ts:11:27)
30
+ at MongoDatabase.toMongo…
31
+ at Generator.next (~/example/node_modules/regenerator-runtime/runtime.js:118:21)
32
+ at asyncGeneratorStep (~/example/node_modules/@babel/runtime/helpers/asyncToGenerator.js:3:24)
33
+ at _next (~/example/node_modules/@babel/runtime/helpers/asyncToGenerator.js:25:9)
34
+ at processTicksAndRejections (internal/process/task_queues.js:97:5)`,
35
+ `TypeError: Cannot read property 'map' of undefined
36
+ at Object (~/example/src/databases/mongo.utilities.ts:21:17)
37
+ at Array.forEach (<anonymous>)
38
+ at mapNestedIdValues (~/example/src/databases/mongo.utilities.ts:20:2)
39
+ at Object.mongoUtil [as mapQuery] (~/example/src/databases/mongo.utilities.ts:11:27)
40
+ at MongoDatabase.toMongo…`
41
+ )
42
+ protected static async removesExpected(stack: string, expected: string) {
43
+ const cleaned = StackCleaner.clean(stack)
44
+ assert.isEqual(cleaned, expected)
45
+ }
46
+ }
@@ -0,0 +1,34 @@
1
+ import assert from '../../../utilities/assert.js'
2
+ import test from '../../../utilities/decorators.js'
3
+ import AbstractStaticTest from '../../support/AbstractStaticTest.js'
4
+
5
+ export default class StaticParentTestCanAccessParentMethodsTest extends AbstractStaticTest {
6
+ protected static didCallFirstTest = false
7
+
8
+ protected static async afterAll(): Promise<void> {
9
+ await super.afterAll()
10
+
11
+ assert.isEqual(this, StaticParentTestCanAccessParentMethodsTest)
12
+
13
+ assert.isTrue(
14
+ this.didCallAnotherStaticMethodInBeforeEach,
15
+ 'beforeAll in parent class not referrenced'
16
+ )
17
+
18
+ assert.isTrue(this.didCallFirstTest, 'First test was not called')
19
+ }
20
+
21
+ @test()
22
+ protected static async didCallBeforeAllScopedCorrectly() {
23
+ this.didCallFirstTest = true
24
+ assert.isTrue(
25
+ this.didCallAnotherStaticMethodInBeforeEach,
26
+ 'beforeAll in parent class not referrenced'
27
+ )
28
+ }
29
+
30
+ @test()
31
+ protected static async shouldCallFirstTest() {
32
+ assert.isTrue(this.didCallFirstTest, 'First test was not called')
33
+ }
34
+ }
@@ -0,0 +1,11 @@
1
+ import AbstractModuleTest from '../../../impl/AbstractModuleTest.js'
2
+ import assert from '../../../utilities/assert.js'
3
+ import test from '../../../utilities/decorators.js'
4
+
5
+ export default class StaticTestInheritsAbstractModuleTestProperlyTest extends AbstractModuleTest {
6
+ @test('checking if cwd is set')
7
+ protected static canCreateStaticTestInheritsAbstractModuleTestProperly() {
8
+ assert.isEqual(this.cwd, process.cwd())
9
+ this.resolvePath('hello')
10
+ }
11
+ }
@@ -0,0 +1,169 @@
1
+ import chalk from 'chalk'
2
+
3
+ import assert from '../../../utilities/assert.js'
4
+ import test from '../../../utilities/decorators.js'
5
+ import assertUtil, {
6
+ CIRCULAR_PLACEHOLDER,
7
+ FUNCTION_PLACEHOLDER,
8
+ NULL_PLACEHOLDER,
9
+ UNDEFINED_PLACEHOLDER,
10
+ } from '../../../utilities/assert.utility.js'
11
+
12
+ const teammate = {
13
+ firstName: 'tay',
14
+ }
15
+
16
+ const team: Record<string, any> = {
17
+ teammate: { ...teammate },
18
+ }
19
+
20
+ team.teammate.team = team
21
+
22
+ const team2 = {
23
+ teammate,
24
+ teammate2: teammate,
25
+ }
26
+
27
+ const team3 = {
28
+ teammate: {
29
+ ...teammate,
30
+ age: 100,
31
+ },
32
+ coach: {
33
+ name: {
34
+ firstName: 'tay',
35
+ age: 100,
36
+ },
37
+ },
38
+ }
39
+
40
+ export default class StringifyTest {
41
+ @test('placeholdering simple object', { test: true }, { test: true })
42
+ @test(
43
+ 'placeholdering object with null',
44
+ { test: null },
45
+ { test: NULL_PLACEHOLDER }
46
+ )
47
+ @test(
48
+ 'placeholdering object with function',
49
+ { test: () => {} },
50
+ { test: FUNCTION_PLACEHOLDER }
51
+ )
52
+ @test('placeholdering circular object', team, {
53
+ teammate: {
54
+ firstName: 'tay',
55
+ team: CIRCULAR_PLACEHOLDER,
56
+ },
57
+ })
58
+ @test('placeholdering same object on same level', team2, {
59
+ teammate: {
60
+ firstName: 'tay',
61
+ },
62
+ teammate2: {
63
+ firstName: 'tay',
64
+ },
65
+ })
66
+ @test(
67
+ 'placeholdering objects with same values at different levels',
68
+ team3,
69
+ {
70
+ teammate: {
71
+ firstName: 'tay',
72
+ age: 100,
73
+ },
74
+ coach: {
75
+ name: {
76
+ firstName: 'tay',
77
+ age: 100,
78
+ },
79
+ },
80
+ }
81
+ )
82
+ protected static dropInPlaceholders(obj: any, expected: any) {
83
+ const placholder = assertUtil.dropInPlaceholders(obj)
84
+ assert.isEqualDeep(placholder, expected)
85
+ }
86
+
87
+ @test(
88
+ 'one level deep (undefined)',
89
+ {
90
+ hello: 'world',
91
+ undefined,
92
+ },
93
+ `{
94
+ "hello": "world",
95
+ "undefined": "${UNDEFINED_PLACEHOLDER}"
96
+ }`
97
+ )
98
+ @test(
99
+ 'one level deep (null)',
100
+ {
101
+ hello: 'world',
102
+ null: null,
103
+ },
104
+ `{
105
+ "hello": "world",
106
+ "null": "${NULL_PLACEHOLDER}"
107
+ }`
108
+ )
109
+ @test(
110
+ 'two levels deep',
111
+ {
112
+ hello: 'world',
113
+ undefinedDeep: {
114
+ undefined,
115
+ },
116
+ },
117
+ `{
118
+ "hello": "world",
119
+ "undefinedDeep": {
120
+ "undefined": "${UNDEFINED_PLACEHOLDER}"
121
+ }
122
+ }`
123
+ )
124
+ @test(
125
+ 'three levels deep',
126
+ {
127
+ hello: 'world',
128
+ undefinedDeep: {
129
+ undefinedDeepAgain: {
130
+ undefined,
131
+ },
132
+ },
133
+ },
134
+ `{
135
+ "hello": "world",
136
+ "undefinedDeep": {
137
+ "undefinedDeepAgain": {
138
+ "undefined": "${UNDEFINED_PLACEHOLDER}"
139
+ }
140
+ }
141
+ }`
142
+ )
143
+ @test(
144
+ 'prints a function nicely',
145
+ { hello: () => {} },
146
+ `{
147
+ "hello": "${FUNCTION_PLACEHOLDER}"
148
+ }`
149
+ )
150
+ protected static printsPlaceholderFields(
151
+ obj: Record<string, any>,
152
+ expected: string
153
+ ) {
154
+ const stringified = assertUtil.stringify(obj)
155
+
156
+ assert.isEqual(
157
+ stringified,
158
+ chalk.bold(assertUtil.replacePlaceholders(expected))
159
+ )
160
+ }
161
+
162
+ @test.skip('array looks good', ['hello', 'world'])
163
+ @test.skip('objects looks good', { hello: 'world' })
164
+ protected static canRenderWithoutStrippingCharactorsInTestReporter(
165
+ obj: any
166
+ ) {
167
+ process.stderr.write(assertUtil.stringify(obj))
168
+ }
169
+ }
@@ -0,0 +1,51 @@
1
+ import assert from '../../../utilities/assert.js'
2
+ import test, { suite } from '../../../utilities/decorators.js'
3
+ import AbstractModuleTest from '../../../impl/AbstractModuleTest.js'
4
+
5
+ import TestDecoratorResolver from '../../../utilities/TestDecoratorResolver.js'
6
+
7
+ @suite()
8
+ export default class TestDecoratorResolverTest extends AbstractModuleTest {
9
+ protected static counter = 4
10
+
11
+ protected static async beforeAll(): Promise<void> {
12
+ await super.beforeAll()
13
+
14
+ assert.isEqual(
15
+ this.counter,
16
+ 4,
17
+ 'beforeAll did not access correct static property'
18
+ )
19
+ }
20
+
21
+ protected static async afterAll(): Promise<void> {
22
+ await super.afterAll()
23
+
24
+ assert.isEqual(
25
+ this.counter,
26
+ 10,
27
+ 'afterAll did not access correct static property'
28
+ )
29
+ }
30
+
31
+ @test()
32
+ protected async canCreateTestDecoratorResolver() {
33
+ TestDecoratorResolverTest.counter = 10
34
+
35
+ const activeTest = TestDecoratorResolver.getActiveTest()
36
+
37
+ assert.isInstanceOf(
38
+ activeTest,
39
+ TestDecoratorResolverTest,
40
+ 'getActive test is not this on instance test'
41
+ )
42
+
43
+ const activeTest2 = TestDecoratorResolver.getActiveTest()
44
+
45
+ assert.isEqual(
46
+ activeTest,
47
+ activeTest2,
48
+ 'getActiveTest called a second time did not return same instance'
49
+ )
50
+ }
51
+ }
@@ -0,0 +1,62 @@
1
+ import AbstractModuleTest from '../../../impl/AbstractModuleTest.js'
2
+ import test from '../../../utilities/decorators.js'
3
+ import assert from '../../../utilities/assert.js'
4
+
5
+ let beforeAllCount = 0
6
+ let beforeEachCount = 0
7
+ let afterEachCount = 0
8
+
9
+ export default class TestOnBasic extends AbstractModuleTest {
10
+ protected static async beforeAll() {
11
+ await super.beforeAll()
12
+ beforeAllCount += 1
13
+ }
14
+
15
+ protected static async beforeEach() {
16
+ await super.beforeEach()
17
+ beforeEachCount += 1
18
+ }
19
+
20
+ protected static async afterEach() {
21
+ await super.afterEach()
22
+ afterEachCount += 1
23
+ }
24
+
25
+ @test()
26
+ protected static async calledBeforeAll() {
27
+ assert.isEqual(beforeAllCount, 1)
28
+ }
29
+
30
+ @test()
31
+ protected static async calledBeforeAndAfterEach() {
32
+ assert.isEqual(beforeEachCount, 2)
33
+ assert.isEqual(afterEachCount, 1)
34
+ }
35
+
36
+ @test()
37
+ protected static async basicPassingTest() {
38
+ assert.isTrue(true)
39
+ assert.isFalse(false)
40
+ assert.isEqual(5, 5, `Thing's don't equal`)
41
+ }
42
+
43
+ @test('can pass variables to test handler from decorator', 'hello', 'world')
44
+ protected static async canAccessVarsFromDecorator(
45
+ hello: string,
46
+ world: string
47
+ ) {
48
+ assert.isEqual(hello, 'hello')
49
+ assert.isEqual(world, 'world')
50
+ }
51
+
52
+ @test()
53
+ protected static async asyncWaits() {
54
+ const results = await this.wait(10)
55
+ assert.isTruthy(results)
56
+ }
57
+
58
+ @test.todo('can create a TODO test')
59
+ protected static async todo() {
60
+ assert.fail('This test should not run')
61
+ }
62
+ }