@sprucelabs/spruce-cli 17.1.55 → 18.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (150) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/build/__tests__/behavioral/EnablingAndDisablingCache.test.js +1 -1
  3. package/build/__tests__/behavioral/EnablingAndDisablingCache.test.js.map +1 -1
  4. package/build/__tests__/behavioral/RememberingUpgradeSelections.test.js +1 -1
  5. package/build/__tests__/behavioral/RememberingUpgradeSelections.test.js.map +1 -1
  6. package/build/__tests__/behavioral/SettingUpSchemasForModuleDistribution.test.js +4 -4
  7. package/build/__tests__/behavioral/SettingUpSchemasForModuleDistribution.test.js.map +1 -1
  8. package/build/__tests__/behavioral/WatchingSkillViews.test.js +3 -3
  9. package/build/__tests__/behavioral/WatchingSkillViews.test.js.map +1 -1
  10. package/build/__tests__/behavioral/errors/SettingUpErrors.test.js +1 -1
  11. package/build/__tests__/behavioral/errors/SettingUpErrors.test.js.map +1 -1
  12. package/build/__tests__/behavioral/events/CreatingAListener.test.d.ts +2 -0
  13. package/build/__tests__/behavioral/events/CreatingAListener.test.js +118 -59
  14. package/build/__tests__/behavioral/events/CreatingAListener.test.js.map +1 -1
  15. package/build/__tests__/behavioral/events/EverythingInstalledInstaller.d.ts +17 -0
  16. package/build/__tests__/behavioral/events/EverythingInstalledInstaller.js +137 -0
  17. package/build/__tests__/behavioral/events/EverythingInstalledInstaller.js.map +1 -0
  18. package/build/__tests__/behavioral/onboard/StartingOnboarding.test.js +46 -45
  19. package/build/__tests__/behavioral/onboard/StartingOnboarding.test.js.map +1 -1
  20. package/build/__tests__/behavioral/tests/CreatingATest.test.js +1 -1
  21. package/build/__tests__/behavioral/tests/CreatingATest.test.js.map +1 -1
  22. package/build/__tests__/behavioral/tests/SelectingAnAbstractTestClass.test.js +4 -4
  23. package/build/__tests__/behavioral/tests/SelectingAnAbstractTestClass.test.js.map +1 -1
  24. package/build/__tests__/behavioral/upgrading/UpdatingDependencies2.test.js +2 -2
  25. package/build/__tests__/behavioral/upgrading/UpdatingDependencies2.test.js.map +1 -1
  26. package/build/__tests__/behavioral/upgrading/UpgradingANodeModule.test.js +2 -2
  27. package/build/__tests__/behavioral/upgrading/UpgradingANodeModule.test.js.map +1 -1
  28. package/build/__tests__/behavioral/upgrading/UpgradingASkill5.test.js +2 -2
  29. package/build/__tests__/behavioral/upgrading/UpgradingASkill5.test.js.map +1 -1
  30. package/build/__tests__/behavioral/upgrading/UpgradingWithListeners.test.js +2 -2
  31. package/build/__tests__/behavioral/upgrading/UpgradingWithListeners.test.js.map +1 -1
  32. package/build/__tests__/behavioral/views/CreatingASkillView.test.js +1 -1
  33. package/build/__tests__/behavioral/views/CreatingASkillView.test.js.map +1 -1
  34. package/build/__tests__/behavioral/views/CreatingATheme.test.js +1 -1
  35. package/build/__tests__/behavioral/views/CreatingATheme.test.js.map +1 -1
  36. package/build/__tests__/behavioral/watchers/WatchingForChanges.test.d.ts +3 -3
  37. package/build/__tests__/behavioral/watchers/WatchingForChanges.test.js +153 -156
  38. package/build/__tests__/behavioral/watchers/WatchingForChanges.test.js.map +1 -1
  39. package/build/__tests__/implementation/ActionExecuter.test.js +2 -2
  40. package/build/__tests__/implementation/ActionExecuter.test.js.map +1 -1
  41. package/build/__tests__/implementation/ActionExecuter2.test.js +1 -1
  42. package/build/__tests__/implementation/ActionExecuter2.test.js.map +1 -1
  43. package/build/__tests__/implementation/ActionExecuter4.test.js +1 -1
  44. package/build/__tests__/implementation/ActionExecuter4.test.js.map +1 -1
  45. package/build/__tests__/implementation/FeatureInstaller.test.js +8 -4
  46. package/build/__tests__/implementation/FeatureInstaller.test.js.map +1 -1
  47. package/build/__tests__/implementation/GlobalEmitter.d.ts +1 -1
  48. package/build/__tests__/implementation/GlobalEmitter.js +9 -10
  49. package/build/__tests__/implementation/GlobalEmitter.js.map +1 -1
  50. package/build/__tests__/implementation/SettingUpANodeModule.test.js +1 -1
  51. package/build/__tests__/implementation/SettingUpANodeModule.test.js.map +1 -1
  52. package/build/__tests__/implementation/SkillStore.test.d.ts +3 -1
  53. package/build/__tests__/implementation/SkillStore.test.js +67 -50
  54. package/build/__tests__/implementation/SkillStore.test.js.map +1 -1
  55. package/build/__tests__/implementation/StoreFeature.test.js +1 -1
  56. package/build/__tests__/implementation/StoreFeature.test.js.map +1 -1
  57. package/build/cli.js +3 -3
  58. package/build/cli.js.map +1 -1
  59. package/build/features/AbstractAction.d.ts +2 -2
  60. package/build/features/AbstractAction.js.map +1 -1
  61. package/build/features/AbstractFeature.d.ts +22 -22
  62. package/build/features/AbstractFeature.js.map +1 -1
  63. package/build/features/ActionExecuter.d.ts +8 -8
  64. package/build/features/ActionExecuter.js.map +1 -1
  65. package/build/features/FeatureInstaller.d.ts +15 -2
  66. package/build/features/FeatureInstaller.js +36 -36
  67. package/build/features/FeatureInstaller.js.map +1 -1
  68. package/build/features/FeatureInstallerFactory.d.ts +12 -10
  69. package/build/features/FeatureInstallerFactory.js +2 -2
  70. package/build/features/FeatureInstallerFactory.js.map +1 -1
  71. package/build/features/OverrideActionDecorator.js +4 -5
  72. package/build/features/OverrideActionDecorator.js.map +1 -1
  73. package/build/features/event/actions/ListenAction.js.map +1 -1
  74. package/build/features/event/actions/SetRemoteAction.d.ts +1 -0
  75. package/build/features/event/actions/SetRemoteAction.js +2 -1
  76. package/build/features/event/actions/SetRemoteAction.js.map +1 -1
  77. package/build/features/event/actions/SyncListenersAction.js.map +1 -1
  78. package/build/features/node/NodeFeature.js.map +1 -1
  79. package/build/features/skill/SkillFeature.js.map +1 -1
  80. package/build/features/skill/stores/SkillStore.d.ts +4 -1
  81. package/build/features/skill/stores/SkillStore.js +127 -100
  82. package/build/features/skill/stores/SkillStore.js.map +1 -1
  83. package/build/features/watch/WatchFeature.js +1 -1
  84. package/build/features/watch/WatchFeature.js.map +1 -1
  85. package/build/interfaces/SpyInterface.d.ts +2 -0
  86. package/build/interfaces/SpyInterface.js +16 -4
  87. package/build/interfaces/SpyInterface.js.map +1 -1
  88. package/build/stores/AbstractStore.d.ts +9 -7
  89. package/build/stores/AbstractStore.js.map +1 -1
  90. package/build/stores/StoreFactory.d.ts +19 -13
  91. package/build/stores/StoreFactory.js +15 -13
  92. package/build/stores/StoreFactory.js.map +1 -1
  93. package/build/tests/AbstractCliTest.d.ts +9 -6
  94. package/build/tests/AbstractCliTest.js +53 -45
  95. package/build/tests/AbstractCliTest.js.map +1 -1
  96. package/build/tests/AbstractSchemaTest.js +18 -20
  97. package/build/tests/AbstractSchemaTest.js.map +1 -1
  98. package/build/utilities/action.utility.js +3 -1
  99. package/build/utilities/action.utility.js.map +1 -1
  100. package/node_modules/@typescript-eslint/parser/package.json +5 -5
  101. package/node_modules/@typescript-eslint/scope-manager/package.json +5 -5
  102. package/node_modules/@typescript-eslint/types/package.json +2 -2
  103. package/node_modules/@typescript-eslint/typescript-estree/package.json +5 -5
  104. package/node_modules/@typescript-eslint/visitor-keys/package.json +3 -3
  105. package/package.json +28 -86
  106. package/src/__tests__/behavioral/EnablingAndDisablingCache.test.ts +1 -1
  107. package/src/__tests__/behavioral/RememberingUpgradeSelections.test.ts +1 -1
  108. package/src/__tests__/behavioral/SettingUpSchemasForModuleDistribution.test.ts +4 -4
  109. package/src/__tests__/behavioral/WatchingSkillViews.test.ts +3 -3
  110. package/src/__tests__/behavioral/errors/SettingUpErrors.test.ts +1 -1
  111. package/src/__tests__/behavioral/events/CreatingAListener.test.ts +41 -14
  112. package/src/__tests__/behavioral/events/EverythingInstalledInstaller.ts +46 -0
  113. package/src/__tests__/behavioral/onboard/StartingOnboarding.test.ts +10 -5
  114. package/src/__tests__/behavioral/tests/CreatingATest.test.ts +1 -1
  115. package/src/__tests__/behavioral/tests/SelectingAnAbstractTestClass.test.ts +4 -4
  116. package/src/__tests__/behavioral/upgrading/UpdatingDependencies2.test.ts +2 -2
  117. package/src/__tests__/behavioral/upgrading/UpgradingANodeModule.test.ts +2 -2
  118. package/src/__tests__/behavioral/upgrading/UpgradingASkill5.test.ts +2 -2
  119. package/src/__tests__/behavioral/upgrading/UpgradingWithListeners.test.ts +2 -2
  120. package/src/__tests__/behavioral/views/CreatingASkillView.test.ts +1 -1
  121. package/src/__tests__/behavioral/views/CreatingATheme.test.ts +1 -1
  122. package/src/__tests__/behavioral/watchers/WatchingForChanges.test.ts +35 -35
  123. package/src/__tests__/implementation/ActionExecuter.test.ts +2 -2
  124. package/src/__tests__/implementation/ActionExecuter2.test.ts +1 -1
  125. package/src/__tests__/implementation/ActionExecuter4.test.ts +1 -1
  126. package/src/__tests__/implementation/FeatureInstaller.test.ts +8 -1
  127. package/src/__tests__/implementation/GlobalEmitter.ts +2 -4
  128. package/src/__tests__/implementation/SettingUpANodeModule.test.ts +1 -1
  129. package/src/__tests__/implementation/SkillStore.test.ts +23 -24
  130. package/src/__tests__/implementation/StoreFeature.test.ts +1 -1
  131. package/src/cli.ts +7 -3
  132. package/src/features/AbstractAction.ts +3 -3
  133. package/src/features/AbstractFeature.ts +26 -26
  134. package/src/features/ActionExecuter.ts +9 -9
  135. package/src/features/FeatureInstaller.ts +32 -12
  136. package/src/features/FeatureInstallerFactory.ts +17 -13
  137. package/src/features/OverrideActionDecorator.ts +2 -5
  138. package/src/features/event/actions/ListenAction.ts +1 -0
  139. package/src/features/event/actions/SetRemoteAction.ts +2 -1
  140. package/src/features/event/actions/SyncListenersAction.ts +0 -1
  141. package/src/features/node/NodeFeature.ts +3 -1
  142. package/src/features/skill/SkillFeature.ts +3 -3
  143. package/src/features/skill/stores/SkillStore.ts +18 -11
  144. package/src/features/watch/WatchFeature.ts +1 -1
  145. package/src/interfaces/SpyInterface.ts +10 -0
  146. package/src/stores/AbstractStore.ts +14 -8
  147. package/src/stores/StoreFactory.ts +56 -44
  148. package/src/tests/AbstractCliTest.ts +53 -45
  149. package/src/tests/AbstractSchemaTest.ts +1 -3
  150. package/src/utilities/action.utility.ts +3 -1
@@ -1 +1 @@
1
- {"version":3,"file":"WatchingForChanges.test.js","names":["WatchingForChangesTest","test","installWatch","assertIsFeatureInstalled","cli","getFeature","isWatching","assert","isFalse","feature","startWatching","isTrue","stopWatching","path","shouldFire","fireCount","on","diskUtil","writeFile","resolvePath","isEqual","changeCount","payloadChanges","payload","changes","createDir","cwd","expectedChanges","idx","filename","push","schemaId","version","CORE_SCHEMA_VERSION","constValue","values","action","name","length","expected","doesInclude","wait","delay","sourceDir","runner","e","watchRunStop","newDirDest","deleteDir","newFile","deleteFile","fixture","FeatureFixture","installFeatures","code","AbstractCliTest"],"sources":["../../../../src/__tests__/behavioral/watchers/WatchingForChanges.test.ts"],"sourcesContent":["import { CORE_SCHEMA_VERSION, diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test-utils'\nimport WatchFeature from '../../../features/watch/WatchFeature'\nimport AbstractCliTest from '../../../tests/AbstractCliTest'\nimport { GeneratedFileOrDir } from '../../../types/cli.types'\n\nexport default class WatchingForChangesTest extends AbstractCliTest {\n\t@test()\n\tprotected static async installsWatchers() {\n\t\tawait this.installWatch()\n\t\tawait this.assertIsFeatureInstalled('watch')\n\t}\n\n\t@test()\n\tprotected static async notWatchingAtTheStart() {\n\t\tconst cli = await this.installWatch()\n\t\tconst isWatching = await cli.getFeature('watch').isWatching()\n\t\tassert.isFalse(isWatching)\n\t}\n\n\t@test()\n\tprotected static async canStartAndStopWatch() {\n\t\tconst cli = await this.installWatch()\n\t\tconst feature = cli.getFeature('watch')\n\n\t\tvoid feature.startWatching()\n\n\t\tlet isWatching = await feature.isWatching()\n\t\tassert.isTrue(isWatching)\n\n\t\tawait feature.stopWatching()\n\n\t\tisWatching = await feature.isWatching()\n\t\tassert.isFalse(isWatching)\n\t}\n\n\t@test('does not watch src', 'src', false)\n\t@test('does watch build', 'build', true)\n\tprotected static async watchesInCorrectDir(\n\t\tpath: string,\n\t\tshouldFire: boolean\n\t) {\n\t\tconst cli = await this.installWatch()\n\t\tconst feature = cli.getFeature('watch')\n\n\t\tawait this.startWatching(feature)\n\n\t\tlet fireCount = 0\n\n\t\tvoid cli.on('watcher.did-detect-change', () => {\n\t\t\tfireCount++\n\t\t})\n\n\t\tdiskUtil.writeFile(\n\t\t\tthis.resolvePath(path, 'test.ts'),\n\t\t\t'console.log(\"hello world\")'\n\t\t)\n\n\t\tawait this.stopWatching(feature)\n\n\t\tassert.isEqual(fireCount, shouldFire ? 1 : 0)\n\t}\n\n\t@test('fires once with one change', 1)\n\t@test('fires once with two changes', 2)\n\t@test('fires once with three changes', 3)\n\tprotected static async watcherFiresEventWhenASrcFileChanges(\n\t\tchangeCount: number\n\t) {\n\t\tlet fireCount = 0\n\n\t\tconst cli = await this.installWatch()\n\t\tconst feature = cli.getFeature('watch')\n\t\tlet payloadChanges: any = {}\n\n\t\tvoid cli.on('watcher.did-detect-change', (payload) => {\n\t\t\tfireCount++\n\t\t\tpayloadChanges = payload.changes\n\t\t})\n\n\t\tdiskUtil.createDir(this.cwd)\n\n\t\tawait this.startWatching(feature)\n\n\t\tconst expectedChanges: any[] = []\n\t\tfor (let idx = 0; idx < changeCount; idx++) {\n\t\t\tconst filename = `index-${idx}.js`\n\t\t\tdiskUtil.writeFile(\n\t\t\t\tthis.resolvePath('build', filename),\n\t\t\t\t'console.log(\"hello world\")'\n\t\t\t)\n\t\t\texpectedChanges.push({\n\t\t\t\tschemaId: 'generatedFile',\n\t\t\t\tversion: CORE_SCHEMA_VERSION.constValue,\n\t\t\t\tvalues: {\n\t\t\t\t\taction: 'generated',\n\t\t\t\t\tpath: this.resolvePath('build', filename),\n\t\t\t\t\tname: filename,\n\t\t\t\t},\n\t\t\t})\n\t\t}\n\n\t\tawait this.stopWatching(feature)\n\n\t\tassert.isEqual(fireCount, 1)\n\t\tassert.isTrue(payloadChanges.length >= changeCount)\n\n\t\tfor (const expected of expectedChanges) {\n\t\t\tassert.doesInclude(payloadChanges, expected)\n\t\t}\n\t}\n\n\tprivate static async stopWatching(feature: WatchFeature) {\n\t\tawait this.wait(3000)\n\t\tawait feature.stopWatching()\n\t\tawait this.wait(500)\n\t}\n\n\tprivate static async startWatching(feature: WatchFeature) {\n\t\tvoid feature.startWatching({ delay: 2000, sourceDir: '.' })\n\t\tawait this.wait(500)\n\t}\n\n\tprotected static async watchRunStop(\n\t\trunner: () => Promise<GeneratedFileOrDir[]>\n\t) {\n\t\tconst cli = await this.installWatch()\n\t\tconst feature = cli.getFeature('watch')\n\n\t\tlet payloadChanges: any = {}\n\t\tvoid cli.on('watcher.did-detect-change', (payload) => {\n\t\t\tpayloadChanges = payload.changes\n\t\t})\n\n\t\tawait this.startWatching(feature)\n\n\t\tconst expected: GeneratedFileOrDir[] = await runner()\n\n\t\tawait this.stopWatching(feature)\n\n\t\tfor (const e of expected) {\n\t\t\tassert.doesInclude(payloadChanges, e)\n\t\t}\n\t}\n\n\t@test()\n\tprotected static async canTrackAddingDir() {\n\t\tawait this.watchRunStop(async () => {\n\t\t\tconst newDirDest = this.resolvePath('build', 'new_dir')\n\t\t\tdiskUtil.createDir(newDirDest)\n\n\t\t\tconst expected: GeneratedFileOrDir[] = [\n\t\t\t\t{\n\t\t\t\t\tschemaId: 'generatedDir',\n\t\t\t\t\tversion: 'v2020_07_22',\n\t\t\t\t\tvalues: {\n\t\t\t\t\t\taction: 'generated',\n\t\t\t\t\t\tname: 'new_dir',\n\t\t\t\t\t\tpath: this.resolvePath('build', 'new_dir'),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t]\n\t\t\treturn expected\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async canTrackDeletingDir() {\n\t\tconst newDirDest = this.resolvePath('build', 'new_dir')\n\t\tdiskUtil.createDir(newDirDest)\n\n\t\tawait this.watchRunStop(async () => {\n\t\t\tdiskUtil.deleteDir(newDirDest)\n\n\t\t\tconst expected: GeneratedFileOrDir[] = [\n\t\t\t\t{\n\t\t\t\t\tschemaId: 'generatedDir',\n\t\t\t\t\tversion: 'v2020_07_22',\n\t\t\t\t\tvalues: {\n\t\t\t\t\t\taction: 'deleted',\n\t\t\t\t\t\tname: 'new_dir',\n\t\t\t\t\t\tpath: this.resolvePath('build', 'new_dir'),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t]\n\n\t\t\treturn expected\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async canTrackDeletingFile() {\n\t\tconst newFile = this.resolvePath('build', 'test.js')\n\t\tdiskUtil.writeFile(newFile, 'test')\n\n\t\tawait this.watchRunStop(async () => {\n\t\t\tdiskUtil.deleteFile(newFile)\n\n\t\t\tconst expected: GeneratedFileOrDir[] = [\n\t\t\t\t{\n\t\t\t\t\tschemaId: 'generatedFile',\n\t\t\t\t\tversion: 'v2020_07_22',\n\t\t\t\t\tvalues: {\n\t\t\t\t\t\taction: 'deleted',\n\t\t\t\t\t\tname: 'test.js',\n\t\t\t\t\t\tpath: this.resolvePath('build', 'test.js'),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t]\n\t\t\treturn expected\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async canTrackDeletingFileInDirectory() {\n\t\tconst newDirDest = this.resolvePath('build', 'new_dir')\n\t\tdiskUtil.createDir(newDirDest)\n\n\t\tconst newFile = this.resolvePath('build', 'new_dir', 'test.js')\n\t\tdiskUtil.writeFile(newFile, 'test')\n\n\t\tawait this.watchRunStop(async () => {\n\t\t\tdiskUtil.deleteFile(newFile)\n\n\t\t\tconst expected: GeneratedFileOrDir[] = [\n\t\t\t\t{\n\t\t\t\t\tschemaId: 'generatedFile',\n\t\t\t\t\tversion: 'v2020_07_22',\n\t\t\t\t\tvalues: {\n\t\t\t\t\t\taction: 'deleted',\n\t\t\t\t\t\tname: 'test.js',\n\t\t\t\t\t\tpath: this.resolvePath('build', 'new_dir', 'test.js'),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t]\n\n\t\t\treturn expected\n\t\t})\n\t}\n\n\tprivate static async installWatch() {\n\t\tconst fixture = this.FeatureFixture()\n\t\tconst cli = await fixture.installFeatures([{ code: 'watch' }])\n\t\treturn cli\n\t}\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"WatchingForChanges.test.js","names":["WatchingForChangesTest","test","installWatch","assertIsFeatureInstalled","cli","getFeature","isWatching","assert","isFalse","feature","startWatching","isTrue","stopWatching","path","shouldFire","fireCount","on","diskUtil","writeFile","resolvePath","isEqual","changeCount","payloadChanges","payload","changes","createDir","cwd","expectedChanges","idx","filename","push","schemaId","version","CORE_SCHEMA_VERSION","constValue","values","action","name","length","expected","doesInclude","watchRunStop","newDirDest","deleteDir","newFile","deleteFile","wait","delay","sourceDir","runner","e","fixture","FeatureFixture","installFeatures","code","AbstractCliTest"],"sources":["../../../../src/__tests__/behavioral/watchers/WatchingForChanges.test.ts"],"sourcesContent":["import { CORE_SCHEMA_VERSION, diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test-utils'\nimport WatchFeature from '../../../features/watch/WatchFeature'\nimport AbstractCliTest from '../../../tests/AbstractCliTest'\nimport { GeneratedFileOrDir } from '../../../types/cli.types'\n\nexport default class WatchingForChangesTest extends AbstractCliTest {\n\t@test()\n\tprotected static async installsWatchers() {\n\t\tawait this.installWatch()\n\t\tawait this.assertIsFeatureInstalled('watch')\n\t}\n\n\t@test()\n\tprotected static async notWatchingAtTheStart() {\n\t\tconst cli = await this.installWatch()\n\t\tconst isWatching = await cli.getFeature('watch').isWatching()\n\t\tassert.isFalse(isWatching)\n\t}\n\n\t@test()\n\tprotected static async canStartAndStopWatch() {\n\t\tconst cli = await this.installWatch()\n\t\tconst feature = cli.getFeature('watch')\n\n\t\tvoid feature.startWatching()\n\n\t\tlet isWatching = await feature.isWatching()\n\t\tassert.isTrue(isWatching)\n\n\t\tawait feature.stopWatching()\n\n\t\tisWatching = await feature.isWatching()\n\t\tassert.isFalse(isWatching)\n\t}\n\n\t@test('does not watch src', 'src', false)\n\t@test('does watch build', 'build', true)\n\tprotected static async watchesInCorrectDir(\n\t\tpath: string,\n\t\tshouldFire: boolean\n\t) {\n\t\tconst cli = await this.installWatch()\n\n\t\tconst feature = cli.getFeature('watch')\n\n\t\tlet fireCount = 0\n\n\t\tvoid cli.on('watcher.did-detect-change', () => {\n\t\t\tfireCount++\n\t\t})\n\n\t\tawait this.startWatching(feature)\n\n\t\tdiskUtil.writeFile(\n\t\t\tthis.resolvePath(path, 'test.ts'),\n\t\t\t'console.log(\"hello world\")'\n\t\t)\n\n\t\tawait this.stopWatching(feature)\n\n\t\tassert.isEqual(fireCount, shouldFire ? 1 : 0)\n\t}\n\n\t@test('fires once with one change', 1)\n\t@test('fires once with two changes', 2)\n\t@test('fires once with three changes', 3)\n\tprotected static async watcherFiresEventWhenASrcFileChanges(\n\t\tchangeCount: number\n\t) {\n\t\tlet fireCount = 0\n\n\t\tconst cli = await this.installWatch()\n\t\tconst feature = cli.getFeature('watch')\n\t\tlet payloadChanges: any = {}\n\n\t\tvoid cli.on('watcher.did-detect-change', (payload) => {\n\t\t\tfireCount++\n\t\t\tpayloadChanges = payload.changes\n\t\t})\n\n\t\tdiskUtil.createDir(this.cwd)\n\n\t\tawait this.startWatching(feature)\n\n\t\tconst expectedChanges: any[] = []\n\t\tfor (let idx = 0; idx < changeCount; idx++) {\n\t\t\tconst filename = `index-${idx}.js`\n\t\t\tdiskUtil.writeFile(\n\t\t\t\tthis.resolvePath('build', filename),\n\t\t\t\t'console.log(\"hello world\")'\n\t\t\t)\n\t\t\texpectedChanges.push({\n\t\t\t\tschemaId: 'generatedFile',\n\t\t\t\tversion: CORE_SCHEMA_VERSION.constValue,\n\t\t\t\tvalues: {\n\t\t\t\t\taction: 'generated',\n\t\t\t\t\tpath: this.resolvePath('build', filename),\n\t\t\t\t\tname: filename,\n\t\t\t\t},\n\t\t\t})\n\t\t}\n\n\t\tawait this.stopWatching(feature)\n\n\t\tassert.isEqual(fireCount, 1)\n\t\tassert.isTrue(payloadChanges.length >= changeCount)\n\n\t\tfor (const expected of expectedChanges) {\n\t\t\tassert.doesInclude(payloadChanges, expected)\n\t\t}\n\t}\n\n\t@test()\n\tprotected static async canTrackAddingDir() {\n\t\tawait this.watchRunStop(async () => {\n\t\t\tconst newDirDest = this.resolvePath('build', 'new_dir')\n\t\t\tdiskUtil.createDir(newDirDest)\n\n\t\t\tconst expected: GeneratedFileOrDir[] = [\n\t\t\t\t{\n\t\t\t\t\tschemaId: 'generatedDir',\n\t\t\t\t\tversion: 'v2020_07_22',\n\t\t\t\t\tvalues: {\n\t\t\t\t\t\taction: 'generated',\n\t\t\t\t\t\tname: 'new_dir',\n\t\t\t\t\t\tpath: this.resolvePath('build', 'new_dir'),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t]\n\t\t\treturn expected\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async canTrackDeletingDir() {\n\t\tconst newDirDest = this.resolvePath('build', 'new_dir')\n\t\tdiskUtil.createDir(newDirDest)\n\n\t\tawait this.watchRunStop(async () => {\n\t\t\tdiskUtil.deleteDir(newDirDest)\n\n\t\t\tconst expected: GeneratedFileOrDir[] = [\n\t\t\t\t{\n\t\t\t\t\tschemaId: 'generatedDir',\n\t\t\t\t\tversion: 'v2020_07_22',\n\t\t\t\t\tvalues: {\n\t\t\t\t\t\taction: 'deleted',\n\t\t\t\t\t\tname: 'new_dir',\n\t\t\t\t\t\tpath: this.resolvePath('build', 'new_dir'),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t]\n\n\t\t\treturn expected\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async canTrackDeletingFile() {\n\t\tconst newFile = this.resolvePath('build', 'test.js')\n\t\tdiskUtil.writeFile(newFile, 'test')\n\n\t\tawait this.watchRunStop(async () => {\n\t\t\tdiskUtil.deleteFile(newFile)\n\n\t\t\tconst expected: GeneratedFileOrDir[] = [\n\t\t\t\t{\n\t\t\t\t\tschemaId: 'generatedFile',\n\t\t\t\t\tversion: 'v2020_07_22',\n\t\t\t\t\tvalues: {\n\t\t\t\t\t\taction: 'deleted',\n\t\t\t\t\t\tname: 'test.js',\n\t\t\t\t\t\tpath: this.resolvePath('build', 'test.js'),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t]\n\t\t\treturn expected\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async canTrackDeletingFileInDirectory() {\n\t\tconst newDirDest = this.resolvePath('build', 'new_dir')\n\t\tdiskUtil.createDir(newDirDest)\n\n\t\tconst newFile = this.resolvePath('build', 'new_dir', 'test.js')\n\t\tdiskUtil.writeFile(newFile, 'test')\n\n\t\tawait this.watchRunStop(async () => {\n\t\t\tdiskUtil.deleteFile(newFile)\n\n\t\t\tconst expected: GeneratedFileOrDir[] = [\n\t\t\t\t{\n\t\t\t\t\tschemaId: 'generatedFile',\n\t\t\t\t\tversion: 'v2020_07_22',\n\t\t\t\t\tvalues: {\n\t\t\t\t\t\taction: 'deleted',\n\t\t\t\t\t\tname: 'test.js',\n\t\t\t\t\t\tpath: this.resolvePath('build', 'new_dir', 'test.js'),\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t]\n\n\t\t\treturn expected\n\t\t})\n\t}\n\n\tprivate static async stopWatching(feature: WatchFeature) {\n\t\tawait this.wait(3000)\n\t\tawait feature.stopWatching()\n\t}\n\n\tprivate static async startWatching(feature: WatchFeature) {\n\t\tvoid feature.startWatching({ delay: 200, sourceDir: '.' })\n\t\tawait this.wait(1000)\n\t}\n\n\tprotected static async watchRunStop(\n\t\trunner: () => Promise<GeneratedFileOrDir[]>\n\t) {\n\t\tconst cli = await this.installWatch()\n\t\tconst feature = cli.getFeature('watch')\n\n\t\tlet payloadChanges: any = {}\n\t\tvoid cli.on('watcher.did-detect-change', (payload) => {\n\t\t\tpayloadChanges = payload.changes\n\t\t})\n\n\t\tawait this.startWatching(feature)\n\n\t\tconst expected: GeneratedFileOrDir[] = await runner()\n\n\t\tawait this.stopWatching(feature)\n\n\t\tfor (const e of expected) {\n\t\t\tassert.doesInclude(payloadChanges, e)\n\t\t}\n\t}\n\n\tprivate static async installWatch() {\n\t\tconst fixture = this.FeatureFixture()\n\t\tconst cli = await fixture.installFeatures([{ code: 'watch' }])\n\t\treturn cli\n\t}\n}\n"],"mappings":"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"}
@@ -68,7 +68,7 @@ var FeatureCommandExecuterTest = (_dec = (0, _testUtils.test)(), _dec2 = (0, _te
68
68
  _context.next = 20;
69
69
  return this.wait(100);
70
70
  case 20:
71
- installer = this.getFeatureInstaller();
71
+ installer = this.featureInstaller;
72
72
  _context.next = 23;
73
73
  return installer.isInstalled('schema');
74
74
  case 23:
@@ -174,7 +174,7 @@ var FeatureCommandExecuterTest = (_dec = (0, _testUtils.test)(), _dec2 = (0, _te
174
174
  }
175
175
  });
176
176
  case 26:
177
- installer = this.getFeatureInstaller();
177
+ installer = this.featureInstaller;
178
178
  _context2.next = 29;
179
179
  return installer.isInstalled('schema');
180
180
  case 29:
@@ -1 +1 @@
1
- {"version":3,"file":"ActionExecuter.test.js","names":["FeatureCommandExecuterTest","test","executer","Action","shouldAutoHandleDependencies","promise","execute","waitForInput","ui","sendInput","wait","installer","getFeatureInstaller","isInstalled","assert","isFalse","assertHealthySkillNamed","skill","status","schema","schemas","generateExpectedHealthSchemas","Object","values","coreSchemas","id","name","namespace","version","versionUtil","generateVersion","constValue","isTrue","error","errorSchemas","AbstractSchemaTest"],"sources":["../../../src/__tests__/implementation/ActionExecuter.test.ts"],"sourcesContent":["import { versionUtil } from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test-utils'\nimport { coreSchemas } from '../../features/schema/stores/SchemaStore'\nimport AbstractSchemaTest from '../../tests/AbstractSchemaTest'\n\nexport default class FeatureCommandExecuterTest extends AbstractSchemaTest {\n\t@test()\n\tprotected static async shouldInstallDependentFeatures() {\n\t\tconst executer = this.Action('schema', 'create', {\n\t\t\tshouldAutoHandleDependencies: true,\n\t\t})\n\t\tconst promise = executer.execute({})\n\n\t\tawait this.waitForInput()\n\n\t\tawait this.ui.sendInput('yes')\n\n\t\tawait this.ui.sendInput('Skill with 1 dependency')\n\n\t\tawait this.ui.sendInput('A skill that is so good')\n\n\t\tawait this.waitForInput()\n\n\t\tawait this.ui.sendInput('\\n')\n\n\t\tawait this.ui.sendInput('Restaurant')\n\n\t\tawait this.ui.sendInput('\\n')\n\n\t\tawait this.wait(100)\n\n\t\tconst installer = this.getFeatureInstaller()\n\t\tlet isInstalled = await installer.isInstalled('schema')\n\n\t\tassert.isFalse(isInstalled)\n\n\t\tawait promise\n\n\t\tawait this.assertHealthySkillNamed('skill-with-1-dependency', {\n\t\t\tskill: { status: 'passed' },\n\t\t\tschema: {\n\t\t\t\tstatus: 'passed',\n\t\t\t\tschemas: this.generateExpectedHealthSchemas([\n\t\t\t\t\t...Object.values(coreSchemas),\n\t\t\t\t\t{\n\t\t\t\t\t\tid: 'restaurant',\n\t\t\t\t\t\tname: 'Restaurant',\n\t\t\t\t\t\tnamespace: 'SkillWith1Dependency',\n\t\t\t\t\t\tversion: versionUtil.generateVersion().constValue,\n\t\t\t\t\t},\n\t\t\t\t]),\n\t\t\t},\n\t\t})\n\n\t\tisInstalled = await installer.isInstalled('schema')\n\n\t\tassert.isTrue(isInstalled)\n\t}\n\n\t@test()\n\tprotected static async shouldInstallTwoDependentFeatures() {\n\t\tconst executer = this.Action('error', 'create', {\n\t\t\tshouldAutoHandleDependencies: true,\n\t\t})\n\t\tconst promise = executer.execute({})\n\n\t\tawait this.waitForInput()\n\n\t\tawait this.ui.sendInput('yes')\n\n\t\tawait this.ui.sendInput('My skill with 2 dependent features')\n\n\t\tawait this.ui.sendInput('A skill that is so good')\n\n\t\tawait this.waitForInput()\n\n\t\tawait this.ui.sendInput('\\n')\n\n\t\tawait this.waitForInput()\n\n\t\tawait this.ui.sendInput('\\n')\n\n\t\tawait this.ui.sendInput('Test error')\n\n\t\tawait this.ui.sendInput('\\n')\n\n\t\tawait promise\n\n\t\tawait this.assertHealthySkillNamed('my-skill-with-2-dependent-features', {\n\t\t\tskill: { status: 'passed' },\n\t\t\tschema: {\n\t\t\t\tstatus: 'passed',\n\t\t\t\tschemas: [],\n\t\t\t},\n\t\t\terror: {\n\t\t\t\terrorSchemas: [{ name: 'Test error', id: 'testError' }],\n\t\t\t\tstatus: 'passed',\n\t\t\t},\n\t\t})\n\n\t\tconst installer = this.getFeatureInstaller()\n\t\tconst isInstalled = await installer.isInstalled('schema')\n\n\t\tassert.isTrue(isInstalled)\n\t}\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"ActionExecuter.test.js","names":["FeatureCommandExecuterTest","test","executer","Action","shouldAutoHandleDependencies","promise","execute","waitForInput","ui","sendInput","wait","installer","featureInstaller","isInstalled","assert","isFalse","assertHealthySkillNamed","skill","status","schema","schemas","generateExpectedHealthSchemas","Object","values","coreSchemas","id","name","namespace","version","versionUtil","generateVersion","constValue","isTrue","error","errorSchemas","AbstractSchemaTest"],"sources":["../../../src/__tests__/implementation/ActionExecuter.test.ts"],"sourcesContent":["import { versionUtil } from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test-utils'\nimport { coreSchemas } from '../../features/schema/stores/SchemaStore'\nimport AbstractSchemaTest from '../../tests/AbstractSchemaTest'\n\nexport default class FeatureCommandExecuterTest extends AbstractSchemaTest {\n\t@test()\n\tprotected static async shouldInstallDependentFeatures() {\n\t\tconst executer = this.Action('schema', 'create', {\n\t\t\tshouldAutoHandleDependencies: true,\n\t\t})\n\t\tconst promise = executer.execute({})\n\n\t\tawait this.waitForInput()\n\n\t\tawait this.ui.sendInput('yes')\n\n\t\tawait this.ui.sendInput('Skill with 1 dependency')\n\n\t\tawait this.ui.sendInput('A skill that is so good')\n\n\t\tawait this.waitForInput()\n\n\t\tawait this.ui.sendInput('\\n')\n\n\t\tawait this.ui.sendInput('Restaurant')\n\n\t\tawait this.ui.sendInput('\\n')\n\n\t\tawait this.wait(100)\n\n\t\tconst installer = this.featureInstaller\n\t\tlet isInstalled = await installer.isInstalled('schema')\n\n\t\tassert.isFalse(isInstalled)\n\n\t\tawait promise\n\n\t\tawait this.assertHealthySkillNamed('skill-with-1-dependency', {\n\t\t\tskill: { status: 'passed' },\n\t\t\tschema: {\n\t\t\t\tstatus: 'passed',\n\t\t\t\tschemas: this.generateExpectedHealthSchemas([\n\t\t\t\t\t...Object.values(coreSchemas),\n\t\t\t\t\t{\n\t\t\t\t\t\tid: 'restaurant',\n\t\t\t\t\t\tname: 'Restaurant',\n\t\t\t\t\t\tnamespace: 'SkillWith1Dependency',\n\t\t\t\t\t\tversion: versionUtil.generateVersion().constValue,\n\t\t\t\t\t},\n\t\t\t\t]),\n\t\t\t},\n\t\t})\n\n\t\tisInstalled = await installer.isInstalled('schema')\n\n\t\tassert.isTrue(isInstalled)\n\t}\n\n\t@test()\n\tprotected static async shouldInstallTwoDependentFeatures() {\n\t\tconst executer = this.Action('error', 'create', {\n\t\t\tshouldAutoHandleDependencies: true,\n\t\t})\n\t\tconst promise = executer.execute({})\n\n\t\tawait this.waitForInput()\n\n\t\tawait this.ui.sendInput('yes')\n\n\t\tawait this.ui.sendInput('My skill with 2 dependent features')\n\n\t\tawait this.ui.sendInput('A skill that is so good')\n\n\t\tawait this.waitForInput()\n\n\t\tawait this.ui.sendInput('\\n')\n\n\t\tawait this.waitForInput()\n\n\t\tawait this.ui.sendInput('\\n')\n\n\t\tawait this.ui.sendInput('Test error')\n\n\t\tawait this.ui.sendInput('\\n')\n\n\t\tawait promise\n\n\t\tawait this.assertHealthySkillNamed('my-skill-with-2-dependent-features', {\n\t\t\tskill: { status: 'passed' },\n\t\t\tschema: {\n\t\t\t\tstatus: 'passed',\n\t\t\t\tschemas: [],\n\t\t\t},\n\t\t\terror: {\n\t\t\t\terrorSchemas: [{ name: 'Test error', id: 'testError' }],\n\t\t\t\tstatus: 'passed',\n\t\t\t},\n\t\t})\n\n\t\tconst installer = this.featureInstaller\n\t\tconst isInstalled = await installer.isInstalled('schema')\n\n\t\tassert.isTrue(isInstalled)\n\t}\n}\n"],"mappings":"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"}
@@ -84,7 +84,7 @@ var FeatureCommandExecuterContTest = (_dec = (0, _testUtils.test)(), _dec2 = (0,
84
84
  didEventCommand = '';
85
85
  willExecuteHitCount = 0;
86
86
  didExecuteHitCount = 0;
87
- emitter = this.getEmitter();
87
+ emitter = this.emitter;
88
88
  void emitter.on('feature.will-execute', function (payload) {
89
89
  emittedWillEvent = true;
90
90
  willExecuteHitCount++;
@@ -1 +1 @@
1
- {"version":3,"file":"ActionExecuter2.test.js","names":["FeatureCommandExecuterContTest","test","startBuildingNewErrorUntilOptionalDependencies","actionPromise","promise","finishBuildingUpToNamingNewError","results","assert","isTruthy","files","isFalsy","errors","pluginsDir","resolveHashSprucePath","isFalse","diskUtil","doesDirExist","testUtil","assertFileByNameInGeneratedFiles","setupMockCommands","executer","Action","shouldAutoHandleDependencies","emittedWillEvent","willEventCommand","emittedDidEvent","didEventCommand","willExecuteHitCount","didExecuteHitCount","emitter","getEmitter","on","payload","featuresUtil","generateCommand","featureCode","actionCode","meta","taco","isEqual","execute","waitForInput","ui","sendInput","doesNotInclude","getLastInvocation","command","options","type","secondTimeResults","name","description","packagesInstalled","isAbove","length","reset","lastQuestion","doesInclude","label","FeatureFixture","installCachedFeatures","version","versionUtil","generateVersion","dirValue","skillFeatureAnswer","message","invocations","choices","value","CommandService","fakeCommand","RegExp","code","AbstractSchemaTest"],"sources":["../../../src/__tests__/implementation/ActionExecuter2.test.ts"],"sourcesContent":["import { diskUtil, versionUtil } from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test-utils'\nimport featuresUtil from '../../features/feature.utilities'\nimport {\n\tFeatureActionResponse,\n\tFeatureInstallResponse,\n} from '../../features/features.types'\nimport CommandService from '../../services/CommandService'\nimport AbstractSchemaTest from '../../tests/AbstractSchemaTest'\nimport testUtil from '../../tests/utilities/test.utility'\n\nexport default class FeatureCommandExecuterContTest extends AbstractSchemaTest {\n\t@test()\n\tprotected static async canSkipOptionalDependencies() {\n\t\tconst { promise: actionPromise } =\n\t\t\tawait this.startBuildingNewErrorUntilOptionalDependencies('skip')\n\n\t\tconst results = await this.finishBuildingUpToNamingNewError(actionPromise)\n\n\t\tassert.isTruthy(results.files)\n\t\tassert.isFalsy(results.errors)\n\n\t\tconst pluginsDir = this.resolveHashSprucePath('features')\n\t\tassert.isFalse(diskUtil.doesDirExist(pluginsDir))\n\n\t\ttestUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'myNewError.schema.ts',\n\t\t\tresults.files\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async shouldEmitExecutionEvents() {\n\t\tthis.setupMockCommands()\n\n\t\tconst executer = this.Action('skill', 'create', {\n\t\t\tshouldAutoHandleDependencies: true,\n\t\t})\n\n\t\tlet emittedWillEvent = false\n\t\tlet willEventCommand = ''\n\t\tlet emittedDidEvent = false\n\t\tlet didEventCommand = ''\n\t\tlet willExecuteHitCount = 0\n\t\tlet didExecuteHitCount = 0\n\n\t\tconst emitter = this.getEmitter()\n\n\t\tvoid emitter.on('feature.will-execute', (payload) => {\n\t\t\temittedWillEvent = true\n\t\t\twillExecuteHitCount++\n\n\t\t\twillEventCommand = featuresUtil.generateCommand(\n\t\t\t\tpayload.featureCode,\n\t\t\t\tpayload.actionCode\n\t\t\t)\n\t\t\treturn {}\n\t\t})\n\n\t\tvoid emitter.on('feature.did-execute', (payload) => {\n\t\t\temittedDidEvent = true\n\t\t\tdidExecuteHitCount++\n\t\t\tdidEventCommand = featuresUtil.generateCommand(\n\t\t\t\tpayload.featureCode,\n\t\t\t\tpayload.actionCode\n\t\t\t)\n\n\t\t\treturn {\n\t\t\t\tmeta: {\n\t\t\t\t\ttaco: 'bell',\n\t\t\t\t},\n\t\t\t}\n\t\t})\n\n\t\tassert.isFalse(emittedWillEvent)\n\t\tassert.isFalse(emittedDidEvent)\n\t\tassert.isEqual(willExecuteHitCount, 0)\n\t\tassert.isEqual(didExecuteHitCount, 0)\n\n\t\tconst promise = executer.execute({})\n\n\t\tawait this.waitForInput()\n\n\t\tawait this.ui.sendInput('My new skill')\n\t\tawait this.ui.sendInput('So great!')\n\n\t\tconst results = await promise\n\n\t\tassert.isEqual(results.meta?.taco, 'bell')\n\t\tassert.isEqual(willEventCommand, 'create.skill')\n\t\tassert.isEqual(didEventCommand, 'create.skill')\n\t\tassert.isEqual(willExecuteHitCount, 1)\n\t\tassert.isEqual(didExecuteHitCount, 1)\n\t}\n\n\t@test()\n\tprotected static async canPermanentlySkipOptionalDependencies() {\n\t\tconst { promise: actionPromise } =\n\t\t\tawait this.startBuildingNewErrorUntilOptionalDependencies('alwaysSkip')\n\n\t\tawait this.finishBuildingUpToNamingNewError(actionPromise)\n\n\t\tconst executer = this.Action('error', 'create', {\n\t\t\tshouldAutoHandleDependencies: true,\n\t\t})\n\t\tconst promise = executer.execute({})\n\n\t\tawait this.waitForInput()\n\n\t\tassert.doesNotInclude(this.ui.getLastInvocation(), {\n\t\t\tcommand: 'prompt',\n\t\t\toptions: {\n\t\t\t\ttype: 'select',\n\t\t\t},\n\t\t})\n\n\t\tawait this.ui.sendInput('My second error')\n\t\tawait this.ui.sendInput('')\n\n\t\tconst secondTimeResults = await promise\n\n\t\tassert.isTruthy(secondTimeResults.files)\n\n\t\ttestUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'myNewError.schema.ts',\n\t\t\tsecondTimeResults.files\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async shouldReturnProperSummary() {\n\t\tthis.setupMockCommands()\n\n\t\tconst executer = this.Action('skill', 'create', {\n\t\t\tshouldAutoHandleDependencies: true,\n\t\t})\n\t\tconst results = await executer.execute({\n\t\t\tname: 'install summary test skill',\n\t\t\tdescription: 'go team!',\n\t\t})\n\n\t\tassert.isTruthy(results.files)\n\t\tassert.isTruthy(results.packagesInstalled)\n\n\t\tassert.isAbove(results.files.length, 0)\n\t\tassert.isAbove(results.packagesInstalled.length, 0)\n\t}\n\n\t@test()\n\tprotected static async shouldAskInstallDependentFeatures() {\n\t\tthis.setupMockCommands()\n\n\t\tconst executer = this.Action('schema', 'create', {\n\t\t\tshouldAutoHandleDependencies: true,\n\t\t})\n\t\tvoid executer.execute({})\n\n\t\tawait this.waitForInput()\n\n\t\tthis.ui.reset()\n\t\tconst lastQuestion = this.ui.getLastInvocation()\n\n\t\tassert.isEqual(lastQuestion.command, 'prompt')\n\t\tassert.doesInclude(\n\t\t\tlastQuestion.options.label,\n\t\t\t/install the skill feature/gi\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async shouldAddListenerWithoutBreakingOnSkill() {\n\t\tthis.setupMockCommands()\n\n\t\tawait this.FeatureFixture().installCachedFeatures('schemas')\n\n\t\tconst executer = this.Action('event', 'listen', {\n\t\t\tshouldAutoHandleDependencies: true,\n\t\t})\n\t\tconst promise = executer.execute({})\n\n\t\tawait this.waitForInput()\n\n\t\tawait this.ui.sendInput('skill')\n\t\tawait this.ui.sendInput('will-boot')\n\n\t\tconst results = await promise\n\n\t\tconst version = versionUtil.generateVersion().dirValue\n\t\ttestUtil.assertFileByNameInGeneratedFiles(\n\t\t\t`will-boot.${version}.listener.ts`,\n\t\t\tresults.files\n\t\t)\n\t}\n\n\tprivate static async finishBuildingUpToNamingNewError(\n\t\tactionPromise: Promise<FeatureInstallResponse & FeatureActionResponse>\n\t) {\n\t\tawait this.ui.sendInput('')\n\n\t\tawait this.waitForInput()\n\n\t\tawait this.ui.sendInput('')\n\n\t\tawait this.waitForInput()\n\n\t\tawait this.ui.sendInput('My new error')\n\t\tawait this.ui.sendInput('')\n\n\t\tconst results = await actionPromise\n\t\treturn results\n\t}\n\n\tprivate static async startBuildingNewErrorUntilOptionalDependencies(\n\t\tskillFeatureAnswer: 'skip' | 'yes' | 'alwaysSkip'\n\t) {\n\t\tconst executer = this.Action('error', 'create', {\n\t\t\tshouldAutoHandleDependencies: true,\n\t\t})\n\t\tconst promise = executer.execute({})\n\n\t\tawait this.waitForInput()\n\n\t\tconst message =\n\t\t\tthis.ui.invocations[this.ui.invocations.length - 2].options.message\n\t\tassert.isTruthy(message)\n\n\t\tassert.doesInclude(message, /2 required/gi)\n\t\tassert.doesInclude(message, /1 optional/gi)\n\n\t\tassert.doesInclude(this.ui.getLastInvocation(), {\n\t\t\tcommand: 'prompt',\n\t\t\toptions: {\n\t\t\t\ttype: 'select',\n\t\t\t\toptions: {\n\t\t\t\t\tchoices: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvalue: 'yes',\n\t\t\t\t\t\t\tlabel: 'Yes',\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvalue: 'skip',\n\t\t\t\t\t\t\tlabel: 'Skip',\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvalue: 'alwaysSkip',\n\t\t\t\t\t\t\tlabel: 'Always skip',\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\n\t\tawait this.ui.sendInput(skillFeatureAnswer)\n\n\t\tawait this.ui.sendInput('y')\n\n\t\tawait this.waitForInput()\n\n\t\tawait this.ui.sendInput('My new module')\n\t\tawait this.ui.sendInput('it is for testing')\n\n\t\tawait this.waitForInput()\n\n\t\treturn { promise }\n\t}\n\n\tprivate static setupMockCommands() {\n\t\tCommandService.fakeCommand(new RegExp(/npm.*?install .*?/gis), {\n\t\t\tcode: 0,\n\t\t})\n\t}\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"ActionExecuter2.test.js","names":["FeatureCommandExecuterContTest","test","startBuildingNewErrorUntilOptionalDependencies","actionPromise","promise","finishBuildingUpToNamingNewError","results","assert","isTruthy","files","isFalsy","errors","pluginsDir","resolveHashSprucePath","isFalse","diskUtil","doesDirExist","testUtil","assertFileByNameInGeneratedFiles","setupMockCommands","executer","Action","shouldAutoHandleDependencies","emittedWillEvent","willEventCommand","emittedDidEvent","didEventCommand","willExecuteHitCount","didExecuteHitCount","emitter","on","payload","featuresUtil","generateCommand","featureCode","actionCode","meta","taco","isEqual","execute","waitForInput","ui","sendInput","doesNotInclude","getLastInvocation","command","options","type","secondTimeResults","name","description","packagesInstalled","isAbove","length","reset","lastQuestion","doesInclude","label","FeatureFixture","installCachedFeatures","version","versionUtil","generateVersion","dirValue","skillFeatureAnswer","message","invocations","choices","value","CommandService","fakeCommand","RegExp","code","AbstractSchemaTest"],"sources":["../../../src/__tests__/implementation/ActionExecuter2.test.ts"],"sourcesContent":["import { diskUtil, versionUtil } from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test-utils'\nimport featuresUtil from '../../features/feature.utilities'\nimport {\n\tFeatureActionResponse,\n\tFeatureInstallResponse,\n} from '../../features/features.types'\nimport CommandService from '../../services/CommandService'\nimport AbstractSchemaTest from '../../tests/AbstractSchemaTest'\nimport testUtil from '../../tests/utilities/test.utility'\n\nexport default class FeatureCommandExecuterContTest extends AbstractSchemaTest {\n\t@test()\n\tprotected static async canSkipOptionalDependencies() {\n\t\tconst { promise: actionPromise } =\n\t\t\tawait this.startBuildingNewErrorUntilOptionalDependencies('skip')\n\n\t\tconst results = await this.finishBuildingUpToNamingNewError(actionPromise)\n\n\t\tassert.isTruthy(results.files)\n\t\tassert.isFalsy(results.errors)\n\n\t\tconst pluginsDir = this.resolveHashSprucePath('features')\n\t\tassert.isFalse(diskUtil.doesDirExist(pluginsDir))\n\n\t\ttestUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'myNewError.schema.ts',\n\t\t\tresults.files\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async shouldEmitExecutionEvents() {\n\t\tthis.setupMockCommands()\n\n\t\tconst executer = this.Action('skill', 'create', {\n\t\t\tshouldAutoHandleDependencies: true,\n\t\t})\n\n\t\tlet emittedWillEvent = false\n\t\tlet willEventCommand = ''\n\t\tlet emittedDidEvent = false\n\t\tlet didEventCommand = ''\n\t\tlet willExecuteHitCount = 0\n\t\tlet didExecuteHitCount = 0\n\n\t\tconst emitter = this.emitter\n\n\t\tvoid emitter.on('feature.will-execute', (payload) => {\n\t\t\temittedWillEvent = true\n\t\t\twillExecuteHitCount++\n\n\t\t\twillEventCommand = featuresUtil.generateCommand(\n\t\t\t\tpayload.featureCode,\n\t\t\t\tpayload.actionCode\n\t\t\t)\n\t\t\treturn {}\n\t\t})\n\n\t\tvoid emitter.on('feature.did-execute', (payload) => {\n\t\t\temittedDidEvent = true\n\t\t\tdidExecuteHitCount++\n\t\t\tdidEventCommand = featuresUtil.generateCommand(\n\t\t\t\tpayload.featureCode,\n\t\t\t\tpayload.actionCode\n\t\t\t)\n\n\t\t\treturn {\n\t\t\t\tmeta: {\n\t\t\t\t\ttaco: 'bell',\n\t\t\t\t},\n\t\t\t}\n\t\t})\n\n\t\tassert.isFalse(emittedWillEvent)\n\t\tassert.isFalse(emittedDidEvent)\n\t\tassert.isEqual(willExecuteHitCount, 0)\n\t\tassert.isEqual(didExecuteHitCount, 0)\n\n\t\tconst promise = executer.execute({})\n\n\t\tawait this.waitForInput()\n\n\t\tawait this.ui.sendInput('My new skill')\n\t\tawait this.ui.sendInput('So great!')\n\n\t\tconst results = await promise\n\n\t\tassert.isEqual(results.meta?.taco, 'bell')\n\t\tassert.isEqual(willEventCommand, 'create.skill')\n\t\tassert.isEqual(didEventCommand, 'create.skill')\n\t\tassert.isEqual(willExecuteHitCount, 1)\n\t\tassert.isEqual(didExecuteHitCount, 1)\n\t}\n\n\t@test()\n\tprotected static async canPermanentlySkipOptionalDependencies() {\n\t\tconst { promise: actionPromise } =\n\t\t\tawait this.startBuildingNewErrorUntilOptionalDependencies('alwaysSkip')\n\n\t\tawait this.finishBuildingUpToNamingNewError(actionPromise)\n\n\t\tconst executer = this.Action('error', 'create', {\n\t\t\tshouldAutoHandleDependencies: true,\n\t\t})\n\t\tconst promise = executer.execute({})\n\n\t\tawait this.waitForInput()\n\n\t\tassert.doesNotInclude(this.ui.getLastInvocation(), {\n\t\t\tcommand: 'prompt',\n\t\t\toptions: {\n\t\t\t\ttype: 'select',\n\t\t\t},\n\t\t})\n\n\t\tawait this.ui.sendInput('My second error')\n\t\tawait this.ui.sendInput('')\n\n\t\tconst secondTimeResults = await promise\n\n\t\tassert.isTruthy(secondTimeResults.files)\n\n\t\ttestUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'myNewError.schema.ts',\n\t\t\tsecondTimeResults.files\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async shouldReturnProperSummary() {\n\t\tthis.setupMockCommands()\n\n\t\tconst executer = this.Action('skill', 'create', {\n\t\t\tshouldAutoHandleDependencies: true,\n\t\t})\n\t\tconst results = await executer.execute({\n\t\t\tname: 'install summary test skill',\n\t\t\tdescription: 'go team!',\n\t\t})\n\n\t\tassert.isTruthy(results.files)\n\t\tassert.isTruthy(results.packagesInstalled)\n\n\t\tassert.isAbove(results.files.length, 0)\n\t\tassert.isAbove(results.packagesInstalled.length, 0)\n\t}\n\n\t@test()\n\tprotected static async shouldAskInstallDependentFeatures() {\n\t\tthis.setupMockCommands()\n\n\t\tconst executer = this.Action('schema', 'create', {\n\t\t\tshouldAutoHandleDependencies: true,\n\t\t})\n\t\tvoid executer.execute({})\n\n\t\tawait this.waitForInput()\n\n\t\tthis.ui.reset()\n\t\tconst lastQuestion = this.ui.getLastInvocation()\n\n\t\tassert.isEqual(lastQuestion.command, 'prompt')\n\t\tassert.doesInclude(\n\t\t\tlastQuestion.options.label,\n\t\t\t/install the skill feature/gi\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async shouldAddListenerWithoutBreakingOnSkill() {\n\t\tthis.setupMockCommands()\n\n\t\tawait this.FeatureFixture().installCachedFeatures('schemas')\n\n\t\tconst executer = this.Action('event', 'listen', {\n\t\t\tshouldAutoHandleDependencies: true,\n\t\t})\n\t\tconst promise = executer.execute({})\n\n\t\tawait this.waitForInput()\n\n\t\tawait this.ui.sendInput('skill')\n\t\tawait this.ui.sendInput('will-boot')\n\n\t\tconst results = await promise\n\n\t\tconst version = versionUtil.generateVersion().dirValue\n\t\ttestUtil.assertFileByNameInGeneratedFiles(\n\t\t\t`will-boot.${version}.listener.ts`,\n\t\t\tresults.files\n\t\t)\n\t}\n\n\tprivate static async finishBuildingUpToNamingNewError(\n\t\tactionPromise: Promise<FeatureInstallResponse & FeatureActionResponse>\n\t) {\n\t\tawait this.ui.sendInput('')\n\n\t\tawait this.waitForInput()\n\n\t\tawait this.ui.sendInput('')\n\n\t\tawait this.waitForInput()\n\n\t\tawait this.ui.sendInput('My new error')\n\t\tawait this.ui.sendInput('')\n\n\t\tconst results = await actionPromise\n\t\treturn results\n\t}\n\n\tprivate static async startBuildingNewErrorUntilOptionalDependencies(\n\t\tskillFeatureAnswer: 'skip' | 'yes' | 'alwaysSkip'\n\t) {\n\t\tconst executer = this.Action('error', 'create', {\n\t\t\tshouldAutoHandleDependencies: true,\n\t\t})\n\t\tconst promise = executer.execute({})\n\n\t\tawait this.waitForInput()\n\n\t\tconst message =\n\t\t\tthis.ui.invocations[this.ui.invocations.length - 2].options.message\n\t\tassert.isTruthy(message)\n\n\t\tassert.doesInclude(message, /2 required/gi)\n\t\tassert.doesInclude(message, /1 optional/gi)\n\n\t\tassert.doesInclude(this.ui.getLastInvocation(), {\n\t\t\tcommand: 'prompt',\n\t\t\toptions: {\n\t\t\t\ttype: 'select',\n\t\t\t\toptions: {\n\t\t\t\t\tchoices: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvalue: 'yes',\n\t\t\t\t\t\t\tlabel: 'Yes',\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvalue: 'skip',\n\t\t\t\t\t\t\tlabel: 'Skip',\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvalue: 'alwaysSkip',\n\t\t\t\t\t\t\tlabel: 'Always skip',\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\n\t\tawait this.ui.sendInput(skillFeatureAnswer)\n\n\t\tawait this.ui.sendInput('y')\n\n\t\tawait this.waitForInput()\n\n\t\tawait this.ui.sendInput('My new module')\n\t\tawait this.ui.sendInput('it is for testing')\n\n\t\tawait this.waitForInput()\n\n\t\treturn { promise }\n\t}\n\n\tprivate static setupMockCommands() {\n\t\tCommandService.fakeCommand(new RegExp(/npm.*?install .*?/gis), {\n\t\t\tcode: 0,\n\t\t})\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;AAAA;AACA;AACA;AAKA;AACA;AACA;AAAyD;AAAA;AAAA;AAAA,IAEpCA,8BAA8B,WACjD,IAAAC,eAAI,GAAE,UAmBN,IAAAA,eAAI,GAAE,UAgEN,IAAAA,eAAI,GAAE,UAkCN,IAAAA,eAAI,GAAE,UAmBN,IAAAA,eAAI,GAAE,UAqBN,IAAAA,eAAI,GAAE;EAAA;EAAA;EAAA;IAAA;IAAA;EAAA;EAAA;IAAA;IAAA;MAAA,iHA7JP;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAGQ,IAAI,CAACC,8CAA8C,CAAC,MAAM,CAAC;cAAA;gBAAA;gBADjDC,aAAa,yBAAtBC,OAAO;gBAAA;gBAAA,OAGO,IAAI,CAACC,gCAAgC,CAACF,aAAa,CAAC;cAAA;gBAApEG,OAAO;gBAEbC,iBAAM,CAACC,QAAQ,CAACF,OAAO,CAACG,KAAK,CAAC;gBAC9BF,iBAAM,CAACG,OAAO,CAACJ,OAAO,CAACK,MAAM,CAAC;gBAExBC,UAAU,GAAG,IAAI,CAACC,qBAAqB,CAAC,UAAU,CAAC;gBACzDN,iBAAM,CAACO,OAAO,CAACC,0BAAQ,CAACC,YAAY,CAACJ,UAAU,CAAC,CAAC;gBAEjDK,gBAAQ,CAACC,gCAAgC,CACxC,sBAAsB,EACtBZ,OAAO,CAACG,KAAK,CACb;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACD;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA;MAAA,+GAED;QAAA;QAAA;QAAA;UAAA;YAAA;cAAA;gBAEC,IAAI,CAACU,iBAAiB,EAAE;gBAElBC,QAAQ,GAAG,IAAI,CAACC,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE;kBAC/CC,4BAA4B,EAAE;gBAC/B,CAAC,CAAC;gBAEEC,gBAAgB,GAAG,KAAK;gBACxBC,gBAAgB,GAAG,EAAE;gBACrBC,eAAe,GAAG,KAAK;gBACvBC,eAAe,GAAG,EAAE;gBACpBC,mBAAmB,GAAG,CAAC;gBACvBC,kBAAkB,GAAG,CAAC;gBAEpBC,OAAO,GAAG,IAAI,CAACA,OAAO;gBAE5B,KAAKA,OAAO,CAACC,EAAE,CAAC,sBAAsB,EAAE,UAACC,OAAO,EAAK;kBACpDR,gBAAgB,GAAG,IAAI;kBACvBI,mBAAmB,EAAE;kBAErBH,gBAAgB,GAAGQ,mBAAY,CAACC,eAAe,CAC9CF,OAAO,CAACG,WAAW,EACnBH,OAAO,CAACI,UAAU,CAClB;kBACD,OAAO,CAAC,CAAC;gBACV,CAAC,CAAC;gBAEF,KAAKN,OAAO,CAACC,EAAE,CAAC,qBAAqB,EAAE,UAACC,OAAO,EAAK;kBACnDN,eAAe,GAAG,IAAI;kBACtBG,kBAAkB,EAAE;kBACpBF,eAAe,GAAGM,mBAAY,CAACC,eAAe,CAC7CF,OAAO,CAACG,WAAW,EACnBH,OAAO,CAACI,UAAU,CAClB;kBAED,OAAO;oBACNC,IAAI,EAAE;sBACLC,IAAI,EAAE;oBACP;kBACD,CAAC;gBACF,CAAC,CAAC;gBAEF9B,iBAAM,CAACO,OAAO,CAACS,gBAAgB,CAAC;gBAChChB,iBAAM,CAACO,OAAO,CAACW,eAAe,CAAC;gBAC/BlB,iBAAM,CAAC+B,OAAO,CAACX,mBAAmB,EAAE,CAAC,CAAC;gBACtCpB,iBAAM,CAAC+B,OAAO,CAACV,kBAAkB,EAAE,CAAC,CAAC;gBAE/BxB,OAAO,GAAGgB,QAAQ,CAACmB,OAAO,CAAC,CAAC,CAAC,CAAC;gBAAA;gBAAA,OAE9B,IAAI,CAACC,YAAY,EAAE;cAAA;gBAAA;gBAAA,OAEnB,IAAI,CAACC,EAAE,CAACC,SAAS,CAAC,cAAc,CAAC;cAAA;gBAAA;gBAAA,OACjC,IAAI,CAACD,EAAE,CAACC,SAAS,CAAC,WAAW,CAAC;cAAA;gBAAA;gBAAA,OAEdtC,OAAO;cAAA;gBAAvBE,OAAO;gBAEbC,iBAAM,CAAC+B,OAAO,kBAAChC,OAAO,CAAC8B,IAAI,kDAAZ,cAAcC,IAAI,EAAE,MAAM,CAAC;gBAC1C9B,iBAAM,CAAC+B,OAAO,CAACd,gBAAgB,EAAE,cAAc,CAAC;gBAChDjB,iBAAM,CAAC+B,OAAO,CAACZ,eAAe,EAAE,cAAc,CAAC;gBAC/CnB,iBAAM,CAAC+B,OAAO,CAACX,mBAAmB,EAAE,CAAC,CAAC;gBACtCpB,iBAAM,CAAC+B,OAAO,CAACV,kBAAkB,EAAE,CAAC,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACrC;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA;MAAA,4HAED;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAGQ,IAAI,CAAC1B,8CAA8C,CAAC,YAAY,CAAC;cAAA;gBAAA;gBADvDC,aAAa,0BAAtBC,OAAO;gBAAA;gBAAA,OAGT,IAAI,CAACC,gCAAgC,CAACF,aAAa,CAAC;cAAA;gBAEpDiB,QAAQ,GAAG,IAAI,CAACC,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE;kBAC/CC,4BAA4B,EAAE;gBAC/B,CAAC,CAAC;gBACIlB,OAAO,GAAGgB,QAAQ,CAACmB,OAAO,CAAC,CAAC,CAAC,CAAC;gBAAA;gBAAA,OAE9B,IAAI,CAACC,YAAY,EAAE;cAAA;gBAEzBjC,iBAAM,CAACoC,cAAc,CAAC,IAAI,CAACF,EAAE,CAACG,iBAAiB,EAAE,EAAE;kBAClDC,OAAO,EAAE,QAAQ;kBACjBC,OAAO,EAAE;oBACRC,IAAI,EAAE;kBACP;gBACD,CAAC,CAAC;gBAAA;gBAAA,OAEI,IAAI,CAACN,EAAE,CAACC,SAAS,CAAC,iBAAiB,CAAC;cAAA;gBAAA;gBAAA,OACpC,IAAI,CAACD,EAAE,CAACC,SAAS,CAAC,EAAE,CAAC;cAAA;gBAAA;gBAAA,OAEKtC,OAAO;cAAA;gBAAjC4C,iBAAiB;gBAEvBzC,iBAAM,CAACC,QAAQ,CAACwC,iBAAiB,CAACvC,KAAK,CAAC;gBAExCQ,gBAAQ,CAACC,gCAAgC,CACxC,sBAAsB,EACtB8B,iBAAiB,CAACvC,KAAK,CACvB;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACD;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA;MAAA,+GAED;QAAA;QAAA;UAAA;YAAA;cAAA;gBAEC,IAAI,CAACU,iBAAiB,EAAE;gBAElBC,QAAQ,GAAG,IAAI,CAACC,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE;kBAC/CC,4BAA4B,EAAE;gBAC/B,CAAC,CAAC;gBAAA;gBAAA,OACoBF,QAAQ,CAACmB,OAAO,CAAC;kBACtCU,IAAI,EAAE,4BAA4B;kBAClCC,WAAW,EAAE;gBACd,CAAC,CAAC;cAAA;gBAHI5C,OAAO;gBAKbC,iBAAM,CAACC,QAAQ,CAACF,OAAO,CAACG,KAAK,CAAC;gBAC9BF,iBAAM,CAACC,QAAQ,CAACF,OAAO,CAAC6C,iBAAiB,CAAC;gBAE1C5C,iBAAM,CAAC6C,OAAO,CAAC9C,OAAO,CAACG,KAAK,CAAC4C,MAAM,EAAE,CAAC,CAAC;gBACvC9C,iBAAM,CAAC6C,OAAO,CAAC9C,OAAO,CAAC6C,iBAAiB,CAACE,MAAM,EAAE,CAAC,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACnD;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA;MAAA,uHAED;QAAA;QAAA;UAAA;YAAA;cAAA;gBAEC,IAAI,CAAClC,iBAAiB,EAAE;gBAElBC,QAAQ,GAAG,IAAI,CAACC,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE;kBAChDC,4BAA4B,EAAE;gBAC/B,CAAC,CAAC;gBACF,KAAKF,QAAQ,CAACmB,OAAO,CAAC,CAAC,CAAC,CAAC;gBAAA;gBAAA,OAEnB,IAAI,CAACC,YAAY,EAAE;cAAA;gBAEzB,IAAI,CAACC,EAAE,CAACa,KAAK,EAAE;gBACTC,YAAY,GAAG,IAAI,CAACd,EAAE,CAACG,iBAAiB,EAAE;gBAEhDrC,iBAAM,CAAC+B,OAAO,CAACiB,YAAY,CAACV,OAAO,EAAE,QAAQ,CAAC;gBAC9CtC,iBAAM,CAACiD,WAAW,CACjBD,YAAY,CAACT,OAAO,CAACW,KAAK,EAC1B,6BAA6B,CAC7B;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACD;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA;MAAA,6HAED;QAAA;QAAA;UAAA;YAAA;cAAA;gBAEC,IAAI,CAACtC,iBAAiB,EAAE;gBAAA;gBAAA,OAElB,IAAI,CAACuC,cAAc,EAAE,CAACC,qBAAqB,CAAC,SAAS,CAAC;cAAA;gBAEtDvC,QAAQ,GAAG,IAAI,CAACC,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE;kBAC/CC,4BAA4B,EAAE;gBAC/B,CAAC,CAAC;gBACIlB,OAAO,GAAGgB,QAAQ,CAACmB,OAAO,CAAC,CAAC,CAAC,CAAC;gBAAA;gBAAA,OAE9B,IAAI,CAACC,YAAY,EAAE;cAAA;gBAAA;gBAAA,OAEnB,IAAI,CAACC,EAAE,CAACC,SAAS,CAAC,OAAO,CAAC;cAAA;gBAAA;gBAAA,OAC1B,IAAI,CAACD,EAAE,CAACC,SAAS,CAAC,WAAW,CAAC;cAAA;gBAAA;gBAAA,OAEdtC,OAAO;cAAA;gBAAvBE,OAAO;gBAEPsD,OAAO,GAAGC,6BAAW,CAACC,eAAe,EAAE,CAACC,QAAQ;gBACtD9C,gBAAQ,CAACC,gCAAgC,qBAC3B0C,OAAO,mBACpBtD,OAAO,CAACG,KAAK,CACb;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACD;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA;MAAA,sHAED,kBACCN,aAAsE;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAEhE,IAAI,CAACsC,EAAE,CAACC,SAAS,CAAC,EAAE,CAAC;cAAA;gBAAA;gBAAA,OAErB,IAAI,CAACF,YAAY,EAAE;cAAA;gBAAA;gBAAA,OAEnB,IAAI,CAACC,EAAE,CAACC,SAAS,CAAC,EAAE,CAAC;cAAA;gBAAA;gBAAA,OAErB,IAAI,CAACF,YAAY,EAAE;cAAA;gBAAA;gBAAA,OAEnB,IAAI,CAACC,EAAE,CAACC,SAAS,CAAC,cAAc,CAAC;cAAA;gBAAA;gBAAA,OACjC,IAAI,CAACD,EAAE,CAACC,SAAS,CAAC,EAAE,CAAC;cAAA;gBAAA;gBAAA,OAELvC,aAAa;cAAA;gBAA7BG,OAAO;gBAAA,kCACNA,OAAO;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACd;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA;MAAA,oIAED,kBACC0D,kBAAiD;QAAA;QAAA;UAAA;YAAA;cAAA;gBAE3C5C,QAAQ,GAAG,IAAI,CAACC,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE;kBAC/CC,4BAA4B,EAAE;gBAC/B,CAAC,CAAC;gBACIlB,OAAO,GAAGgB,QAAQ,CAACmB,OAAO,CAAC,CAAC,CAAC,CAAC;gBAAA;gBAAA,OAE9B,IAAI,CAACC,YAAY,EAAE;cAAA;gBAEnByB,OAAO,GACZ,IAAI,CAACxB,EAAE,CAACyB,WAAW,CAAC,IAAI,CAACzB,EAAE,CAACyB,WAAW,CAACb,MAAM,GAAG,CAAC,CAAC,CAACP,OAAO,CAACmB,OAAO;gBACpE1D,iBAAM,CAACC,QAAQ,CAACyD,OAAO,CAAC;gBAExB1D,iBAAM,CAACiD,WAAW,CAACS,OAAO,EAAE,cAAc,CAAC;gBAC3C1D,iBAAM,CAACiD,WAAW,CAACS,OAAO,EAAE,cAAc,CAAC;gBAE3C1D,iBAAM,CAACiD,WAAW,CAAC,IAAI,CAACf,EAAE,CAACG,iBAAiB,EAAE,EAAE;kBAC/CC,OAAO,EAAE,QAAQ;kBACjBC,OAAO,EAAE;oBACRC,IAAI,EAAE,QAAQ;oBACdD,OAAO,EAAE;sBACRqB,OAAO,EAAE,CACR;wBACCC,KAAK,EAAE,KAAK;wBACZX,KAAK,EAAE;sBACR,CAAC,EACD;wBACCW,KAAK,EAAE,MAAM;wBACbX,KAAK,EAAE;sBACR,CAAC,EACD;wBACCW,KAAK,EAAE,YAAY;wBACnBX,KAAK,EAAE;sBACR,CAAC;oBAEH;kBACD;gBACD,CAAC,CAAC;gBAAA;gBAAA,OAEI,IAAI,CAAChB,EAAE,CAACC,SAAS,CAACsB,kBAAkB,CAAC;cAAA;gBAAA;gBAAA,OAErC,IAAI,CAACvB,EAAE,CAACC,SAAS,CAAC,GAAG,CAAC;cAAA;gBAAA;gBAAA,OAEtB,IAAI,CAACF,YAAY,EAAE;cAAA;gBAAA;gBAAA,OAEnB,IAAI,CAACC,EAAE,CAACC,SAAS,CAAC,eAAe,CAAC;cAAA;gBAAA;gBAAA,OAClC,IAAI,CAACD,EAAE,CAACC,SAAS,CAAC,mBAAmB,CAAC;cAAA;gBAAA;gBAAA,OAEtC,IAAI,CAACF,YAAY,EAAE;cAAA;gBAAA,kCAElB;kBAAEpC,OAAO,EAAPA;gBAAQ,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CAClB;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA,OAED,6BAAmC;MAClCiE,0BAAc,CAACC,WAAW,CAAC,IAAIC,MAAM,CAAC,+BAAsB,CAAC,EAAE;QAC9DC,IAAI,EAAE;MACP,CAAC,CAAC;IACH;EAAC;EAAA;AAAA,EAnQ0DC,+BAAkB;AAAA"}
@@ -71,7 +71,7 @@ var ActionExecuter4Test = (_dec = (0, _testUtils.test)('throws by default with w
71
71
  case 0:
72
72
  willDid = _args2.length > 1 && _args2[1] !== undefined ? _args2[1] : 'will';
73
73
  _context2.next = 3;
74
- return this.getEmitter().on("feature.".concat(willDid, "-execute"), function () {
74
+ return this.emitter.on("feature.".concat(willDid, "-execute"), function () {
75
75
  throw new Error(msg);
76
76
  });
77
77
  case 3:
@@ -1 +1 @@
1
- {"version":3,"file":"ActionExecuter4.test.js","names":["ActionExecuter4Test","test","CommandService","fakeCommand","code","ENABLE_NPM_CACHE_COMMAND","msg","willDid","getEmitter","on","Error","assert","doesThrowAsync","Action","execute","err","errorAssert","assertError","AbstractCliTest"],"sources":["../../../src/__tests__/implementation/ActionExecuter4.test.ts"],"sourcesContent":["import { test, assert } from '@sprucelabs/test-utils'\nimport { errorAssert } from '@sprucelabs/test-utils'\nimport { ENABLE_NPM_CACHE_COMMAND } from '../../features/cache/constants'\nimport CommandService from '../../services/CommandService'\nimport AbstractCliTest from '../../tests/AbstractCliTest'\n\nexport default class ActionExecuter4Test extends AbstractCliTest {\n\tprotected static async beforeEach() {\n\t\tawait super.beforeEach()\n\n\t\tCommandService.fakeCommand(/which docker/gis, {\n\t\t\tcode: 0,\n\t\t})\n\t\tCommandService.fakeCommand(ENABLE_NPM_CACHE_COMMAND, {\n\t\t\tcode: 0,\n\t\t})\n\t}\n\n\t@test('throws by default with will-execute listener error 1', 'test')\n\t@test('throws by default with will-execute listener error 2', 'test2')\n\t@test('throws by default with did-execute listener error 1', 'test2', 'did')\n\tprotected static async canBeConfiguredToThrowWhenExecuteListenersReturnErrors(\n\t\tmsg: string,\n\t\twillDid: 'will' | 'did' = 'will'\n\t) {\n\t\tawait this.getEmitter().on(`feature.${willDid}-execute`, () => {\n\t\t\tthrow new Error(msg)\n\t\t})\n\n\t\tconst err = await assert.doesThrowAsync(() =>\n\t\t\tthis.Action('cache', 'enable').execute({})\n\t\t)\n\n\t\terrorAssert.assertError(err, 'LISTENER_ERROR', {\n\t\t\t'originalError.message': msg,\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async stillReturnsIfNoErrorThrows() {\n\t\tawait this.Action('cache', 'enable').execute({})\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;AAEA;AACA;AACA;AAAyD;AAAA;AAAA;AAAA,IAEpCA,mBAAmB,WAYtC,IAAAC,eAAI,EAAC,sDAAsD,EAAE,MAAM,CAAC,UACpE,IAAAA,eAAI,EAAC,sDAAsD,EAAE,OAAO,CAAC,UACrE,IAAAA,eAAI,EAAC,qDAAqD,EAAE,OAAO,EAAE,KAAK,CAAC,UAkB3E,IAAAA,eAAI,GAAE;EAAA;EAAA;EAAA;IAAA;IAAA;EAAA;EAAA;IAAA;IAAA;MAAA,gGA/BP;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA;cAAA;gBAGCC,0BAAc,CAACC,WAAW,CAAC,gBAAiB,EAAE;kBAC7CC,IAAI,EAAE;gBACP,CAAC,CAAC;gBACFF,0BAAc,CAACC,WAAW,CAACE,mCAAwB,EAAE;kBACpDD,IAAI,EAAE;gBACP,CAAC,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACF;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA;MAAA,4IAED,kBAICE,GAAW;QAAA;QAAA;UAAA;UAAA;QAAA;UAAA;YAAA;cAAA;gBACXC,OAAuB,8DAAG,MAAM;gBAAA;gBAAA,OAE1B,IAAI,CAACC,UAAU,EAAE,CAACC,EAAE,mBAAYF,OAAO,eAAY,YAAM;kBAC9D,MAAM,IAAIG,KAAK,CAACJ,GAAG,CAAC;gBACrB,CAAC,CAAC;cAAA;gBAAA;gBAAA,OAEgBK,iBAAM,CAACC,cAAc,CAAC;kBAAA,OACvC,KAAI,CAACC,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,CAACC,OAAO,CAAC,CAAC,CAAC,CAAC;gBAAA,EAC1C;cAAA;gBAFKC,GAAG;gBAITC,sBAAW,CAACC,WAAW,CAACF,GAAG,EAAE,gBAAgB,EAAE;kBAC9C,uBAAuB,EAAET;gBAC1B,CAAC,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACF;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA;MAAA,iHAED;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAEO,IAAI,CAACO,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,CAACC,OAAO,CAAC,CAAC,CAAC,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CAChD;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;EAAA;AAAA,EAnC+CI,4BAAe;AAAA"}
1
+ {"version":3,"file":"ActionExecuter4.test.js","names":["ActionExecuter4Test","test","CommandService","fakeCommand","code","ENABLE_NPM_CACHE_COMMAND","msg","willDid","emitter","on","Error","assert","doesThrowAsync","Action","execute","err","errorAssert","assertError","AbstractCliTest"],"sources":["../../../src/__tests__/implementation/ActionExecuter4.test.ts"],"sourcesContent":["import { test, assert } from '@sprucelabs/test-utils'\nimport { errorAssert } from '@sprucelabs/test-utils'\nimport { ENABLE_NPM_CACHE_COMMAND } from '../../features/cache/constants'\nimport CommandService from '../../services/CommandService'\nimport AbstractCliTest from '../../tests/AbstractCliTest'\n\nexport default class ActionExecuter4Test extends AbstractCliTest {\n\tprotected static async beforeEach() {\n\t\tawait super.beforeEach()\n\n\t\tCommandService.fakeCommand(/which docker/gis, {\n\t\t\tcode: 0,\n\t\t})\n\t\tCommandService.fakeCommand(ENABLE_NPM_CACHE_COMMAND, {\n\t\t\tcode: 0,\n\t\t})\n\t}\n\n\t@test('throws by default with will-execute listener error 1', 'test')\n\t@test('throws by default with will-execute listener error 2', 'test2')\n\t@test('throws by default with did-execute listener error 1', 'test2', 'did')\n\tprotected static async canBeConfiguredToThrowWhenExecuteListenersReturnErrors(\n\t\tmsg: string,\n\t\twillDid: 'will' | 'did' = 'will'\n\t) {\n\t\tawait this.emitter.on(`feature.${willDid}-execute`, () => {\n\t\t\tthrow new Error(msg)\n\t\t})\n\n\t\tconst err = await assert.doesThrowAsync(() =>\n\t\t\tthis.Action('cache', 'enable').execute({})\n\t\t)\n\n\t\terrorAssert.assertError(err, 'LISTENER_ERROR', {\n\t\t\t'originalError.message': msg,\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async stillReturnsIfNoErrorThrows() {\n\t\tawait this.Action('cache', 'enable').execute({})\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;AAEA;AACA;AACA;AAAyD;AAAA;AAAA;AAAA,IAEpCA,mBAAmB,WAYtC,IAAAC,eAAI,EAAC,sDAAsD,EAAE,MAAM,CAAC,UACpE,IAAAA,eAAI,EAAC,sDAAsD,EAAE,OAAO,CAAC,UACrE,IAAAA,eAAI,EAAC,qDAAqD,EAAE,OAAO,EAAE,KAAK,CAAC,UAkB3E,IAAAA,eAAI,GAAE;EAAA;EAAA;EAAA;IAAA;IAAA;EAAA;EAAA;IAAA;IAAA;MAAA,gGA/BP;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA;cAAA;gBAGCC,0BAAc,CAACC,WAAW,CAAC,gBAAiB,EAAE;kBAC7CC,IAAI,EAAE;gBACP,CAAC,CAAC;gBACFF,0BAAc,CAACC,WAAW,CAACE,mCAAwB,EAAE;kBACpDD,IAAI,EAAE;gBACP,CAAC,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACF;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA;MAAA,4IAED,kBAICE,GAAW;QAAA;QAAA;UAAA;UAAA;QAAA;UAAA;YAAA;cAAA;gBACXC,OAAuB,8DAAG,MAAM;gBAAA;gBAAA,OAE1B,IAAI,CAACC,OAAO,CAACC,EAAE,mBAAYF,OAAO,eAAY,YAAM;kBACzD,MAAM,IAAIG,KAAK,CAACJ,GAAG,CAAC;gBACrB,CAAC,CAAC;cAAA;gBAAA;gBAAA,OAEgBK,iBAAM,CAACC,cAAc,CAAC;kBAAA,OACvC,KAAI,CAACC,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,CAACC,OAAO,CAAC,CAAC,CAAC,CAAC;gBAAA,EAC1C;cAAA;gBAFKC,GAAG;gBAITC,sBAAW,CAACC,WAAW,CAACF,GAAG,EAAE,gBAAgB,EAAE;kBAC9C,uBAAuB,EAAET;gBAC1B,CAAC,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACF;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA;MAAA,iHAED;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAEO,IAAI,CAACO,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,CAACC,OAAO,CAAC,CAAC,CAAC,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CAChD;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;EAAA;AAAA,EAnC+CI,4BAAe;AAAA"}
@@ -16,6 +16,7 @@ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/ge
16
16
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
17
17
  var _applyDecoratedDescriptor2 = _interopRequireDefault(require("@babel/runtime/helpers/applyDecoratedDescriptor"));
18
18
  var _testUtils = require("@sprucelabs/test-utils");
19
+ var _CommandService = _interopRequireDefault(require("../../services/CommandService"));
19
20
  var _AbstractCliTest2 = _interopRequireDefault(require("../../tests/AbstractCliTest"));
20
21
  var _dec, _dec2, _dec3, _class, _class2;
21
22
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
@@ -38,7 +39,7 @@ var FeatureInstallerTest = (_dec = (0, _testUtils.test)(), _dec2 = (0, _testUtil
38
39
  _context.next = 2;
39
40
  return (0, _get2["default"])((0, _getPrototypeOf2["default"])(FeatureInstallerTest), "beforeEach", this).call(this);
40
41
  case 2:
41
- this.installer = this.getFeatureInstaller();
42
+ this.installer = this.featureInstaller;
42
43
  case 3:
43
44
  case "end":
44
45
  return _context.stop();
@@ -124,11 +125,14 @@ var FeatureInstallerTest = (_dec = (0, _testUtils.test)(), _dec2 = (0, _testUtil
124
125
  while (1) {
125
126
  switch (_context4.prev = _context4.next) {
126
127
  case 0:
128
+ _CommandService["default"].fakeCommand(/yarn/, {
129
+ code: 0
130
+ });
127
131
  hitCount = 0; //@ts-ignore
128
132
  this.installer.featureMap.schema.afterPackageInstall = function () {
129
133
  hitCount++;
130
134
  };
131
- _context4.next = 4;
135
+ _context4.next = 5;
132
136
  return this.installer.install({
133
137
  features: [{
134
138
  code: 'skill',
@@ -142,9 +146,9 @@ var FeatureInstallerTest = (_dec = (0, _testUtils.test)(), _dec2 = (0, _testUtil
142
146
  code: 'event'
143
147
  }]
144
148
  });
145
- case 4:
146
- _testUtils.assert.isEqual(hitCount, 1);
147
149
  case 5:
150
+ _testUtils.assert.isEqual(hitCount, 1);
151
+ case 6:
148
152
  case "end":
149
153
  return _context4.stop();
150
154
  }
@@ -1 +1 @@
1
- {"version":3,"file":"FeatureInstaller.test.js","names":["FeatureInstallerTest","test","installer","getFeatureInstaller","dependencies","getFeatureDependencies","assert","doesInclude","code","isRequired","hitCount","featureMap","schema","afterPackageInstall","install","features","options","name","description","isEqual","AbstractCliTest"],"sources":["../../../src/__tests__/implementation/FeatureInstaller.test.ts"],"sourcesContent":["import { test, assert } from '@sprucelabs/test-utils'\nimport FeatureInstaller from '../../features/FeatureInstaller'\nimport AbstractCliTest from '../../tests/AbstractCliTest'\n\nexport default class FeatureInstallerTest extends AbstractCliTest {\n\tprotected static installer: FeatureInstaller\n\n\tprotected static async beforeEach() {\n\t\tawait super.beforeEach()\n\t\tthis.installer = this.getFeatureInstaller()\n\t}\n\n\t@test()\n\tprotected static async canGetFeatureDependencies() {\n\t\tconst dependencies = this.installer.getFeatureDependencies('schema')\n\t\tassert.doesInclude(dependencies, { code: 'skill', isRequired: false })\n\t\tassert.doesInclude(dependencies, { code: 'node', isRequired: true })\n\t}\n\n\t@test()\n\tprotected static async canGetFeatureDependenciesWithOptional() {\n\t\tconst dependencies = this.installer.getFeatureDependencies('error')\n\t\tassert.doesInclude(dependencies, { code: 'skill', isRequired: false })\n\t\tassert.doesInclude(dependencies, { code: 'schema', isRequired: true })\n\t\tassert.doesInclude(dependencies, { code: 'node', isRequired: true })\n\t}\n\n\t@test()\n\tprotected static async afterPackageInstallIsCalledOncePerFeature() {\n\t\tlet hitCount = 0\n\t\t//@ts-ignore\n\t\tthis.installer.featureMap.schema.afterPackageInstall = () => {\n\t\t\thitCount++\n\t\t}\n\t\tawait this.installer.install({\n\t\t\tfeatures: [\n\t\t\t\t{\n\t\t\t\t\tcode: 'skill',\n\t\t\t\t\toptions: {\n\t\t\t\t\t\tname: 'testing events',\n\t\t\t\t\t\tdescription: 'this too, is a great test!',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tcode: 'schema',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tcode: 'event',\n\t\t\t\t},\n\t\t\t],\n\t\t})\n\n\t\tassert.isEqual(hitCount, 1)\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAAA;AAEA;AAAyD;AAAA;AAAA;AAAA,IAEpCA,oBAAoB,WAQvC,IAAAC,eAAI,GAAE,UAON,IAAAA,eAAI,GAAE,UAQN,IAAAA,eAAI,GAAE;EAAA;EAAA;EAAA;IAAA;IAAA;EAAA;EAAA;IAAA;IAAA;MAAA,gGApBP;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA;cAAA;gBAEC,IAAI,CAACC,SAAS,GAAG,IAAI,CAACC,mBAAmB,EAAE;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CAC3C;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA;MAAA,+GAED;QAAA;QAAA;UAAA;YAAA;cAAA;gBAEOC,YAAY,GAAG,IAAI,CAACF,SAAS,CAACG,sBAAsB,CAAC,QAAQ,CAAC;gBACpEC,iBAAM,CAACC,WAAW,CAACH,YAAY,EAAE;kBAAEI,IAAI,EAAE,OAAO;kBAAEC,UAAU,EAAE;gBAAM,CAAC,CAAC;gBACtEH,iBAAM,CAACC,WAAW,CAACH,YAAY,EAAE;kBAAEI,IAAI,EAAE,MAAM;kBAAEC,UAAU,EAAE;gBAAK,CAAC,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACpE;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA;MAAA,2HAED;QAAA;QAAA;UAAA;YAAA;cAAA;gBAEOL,YAAY,GAAG,IAAI,CAACF,SAAS,CAACG,sBAAsB,CAAC,OAAO,CAAC;gBACnEC,iBAAM,CAACC,WAAW,CAACH,YAAY,EAAE;kBAAEI,IAAI,EAAE,OAAO;kBAAEC,UAAU,EAAE;gBAAM,CAAC,CAAC;gBACtEH,iBAAM,CAACC,WAAW,CAACH,YAAY,EAAE;kBAAEI,IAAI,EAAE,QAAQ;kBAAEC,UAAU,EAAE;gBAAK,CAAC,CAAC;gBACtEH,iBAAM,CAACC,WAAW,CAACH,YAAY,EAAE;kBAAEI,IAAI,EAAE,MAAM;kBAAEC,UAAU,EAAE;gBAAK,CAAC,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACpE;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA;MAAA,+HAED;QAAA;QAAA;UAAA;YAAA;cAAA;gBAEKC,QAAQ,GAAG,CAAC,EAChB;gBACA,IAAI,CAACR,SAAS,CAACS,UAAU,CAACC,MAAM,CAACC,mBAAmB,GAAG,YAAM;kBAC5DH,QAAQ,EAAE;gBACX,CAAC;gBAAA;gBAAA,OACK,IAAI,CAACR,SAAS,CAACY,OAAO,CAAC;kBAC5BC,QAAQ,EAAE,CACT;oBACCP,IAAI,EAAE,OAAO;oBACbQ,OAAO,EAAE;sBACRC,IAAI,EAAE,gBAAgB;sBACtBC,WAAW,EAAE;oBACd;kBACD,CAAC,EACD;oBACCV,IAAI,EAAE;kBACP,CAAC,EACD;oBACCA,IAAI,EAAE;kBACP,CAAC;gBAEH,CAAC,CAAC;cAAA;gBAEFF,iBAAM,CAACa,OAAO,CAACT,QAAQ,EAAE,CAAC,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CAC3B;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;EAAA;AAAA,EAjDgDU,4BAAe;AAAA"}
1
+ {"version":3,"file":"FeatureInstaller.test.js","names":["FeatureInstallerTest","test","installer","featureInstaller","dependencies","getFeatureDependencies","assert","doesInclude","code","isRequired","CommandService","fakeCommand","hitCount","featureMap","schema","afterPackageInstall","install","features","options","name","description","isEqual","AbstractCliTest"],"sources":["../../../src/__tests__/implementation/FeatureInstaller.test.ts"],"sourcesContent":["import { test, assert } from '@sprucelabs/test-utils'\nimport FeatureInstaller from '../../features/FeatureInstaller'\nimport CommandService from '../../services/CommandService'\nimport AbstractCliTest from '../../tests/AbstractCliTest'\n\nexport default class FeatureInstallerTest extends AbstractCliTest {\n\tprotected static installer: FeatureInstaller\n\n\tprotected static async beforeEach() {\n\t\tawait super.beforeEach()\n\t\tthis.installer = this.featureInstaller\n\t}\n\n\t@test()\n\tprotected static async canGetFeatureDependencies() {\n\t\tconst dependencies = this.installer.getFeatureDependencies('schema')\n\t\tassert.doesInclude(dependencies, { code: 'skill', isRequired: false })\n\t\tassert.doesInclude(dependencies, { code: 'node', isRequired: true })\n\t}\n\n\t@test()\n\tprotected static async canGetFeatureDependenciesWithOptional() {\n\t\tconst dependencies = this.installer.getFeatureDependencies('error')\n\t\tassert.doesInclude(dependencies, { code: 'skill', isRequired: false })\n\t\tassert.doesInclude(dependencies, { code: 'schema', isRequired: true })\n\t\tassert.doesInclude(dependencies, { code: 'node', isRequired: true })\n\t}\n\n\t@test()\n\tprotected static async afterPackageInstallIsCalledOncePerFeature() {\n\t\tCommandService.fakeCommand(/yarn/, {\n\t\t\tcode: 0,\n\t\t})\n\n\t\tlet hitCount = 0\n\n\t\t//@ts-ignore\n\t\tthis.installer.featureMap.schema.afterPackageInstall = () => {\n\t\t\thitCount++\n\t\t}\n\n\t\tawait this.installer.install({\n\t\t\tfeatures: [\n\t\t\t\t{\n\t\t\t\t\tcode: 'skill',\n\t\t\t\t\toptions: {\n\t\t\t\t\t\tname: 'testing events',\n\t\t\t\t\t\tdescription: 'this too, is a great test!',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tcode: 'schema',\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tcode: 'event',\n\t\t\t\t},\n\t\t\t],\n\t\t})\n\n\t\tassert.isEqual(hitCount, 1)\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAAA;AAEA;AACA;AAAyD;AAAA;AAAA;AAAA,IAEpCA,oBAAoB,WAQvC,IAAAC,eAAI,GAAE,UAON,IAAAA,eAAI,GAAE,UAQN,IAAAA,eAAI,GAAE;EAAA;EAAA;EAAA;IAAA;IAAA;EAAA;EAAA;IAAA;IAAA;MAAA,gGApBP;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA;cAAA;gBAEC,IAAI,CAACC,SAAS,GAAG,IAAI,CAACC,gBAAgB;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACtC;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA;MAAA,+GAED;QAAA;QAAA;UAAA;YAAA;cAAA;gBAEOC,YAAY,GAAG,IAAI,CAACF,SAAS,CAACG,sBAAsB,CAAC,QAAQ,CAAC;gBACpEC,iBAAM,CAACC,WAAW,CAACH,YAAY,EAAE;kBAAEI,IAAI,EAAE,OAAO;kBAAEC,UAAU,EAAE;gBAAM,CAAC,CAAC;gBACtEH,iBAAM,CAACC,WAAW,CAACH,YAAY,EAAE;kBAAEI,IAAI,EAAE,MAAM;kBAAEC,UAAU,EAAE;gBAAK,CAAC,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACpE;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA;MAAA,2HAED;QAAA;QAAA;UAAA;YAAA;cAAA;gBAEOL,YAAY,GAAG,IAAI,CAACF,SAAS,CAACG,sBAAsB,CAAC,OAAO,CAAC;gBACnEC,iBAAM,CAACC,WAAW,CAACH,YAAY,EAAE;kBAAEI,IAAI,EAAE,OAAO;kBAAEC,UAAU,EAAE;gBAAM,CAAC,CAAC;gBACtEH,iBAAM,CAACC,WAAW,CAACH,YAAY,EAAE;kBAAEI,IAAI,EAAE,QAAQ;kBAAEC,UAAU,EAAE;gBAAK,CAAC,CAAC;gBACtEH,iBAAM,CAACC,WAAW,CAACH,YAAY,EAAE;kBAAEI,IAAI,EAAE,MAAM;kBAAEC,UAAU,EAAE;gBAAK,CAAC,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACpE;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA;MAAA,+HAED;QAAA;QAAA;UAAA;YAAA;cAAA;gBAECC,0BAAc,CAACC,WAAW,CAAC,MAAM,EAAE;kBAClCH,IAAI,EAAE;gBACP,CAAC,CAAC;gBAEEI,QAAQ,GAAG,CAAC,EAEhB;gBACA,IAAI,CAACV,SAAS,CAACW,UAAU,CAACC,MAAM,CAACC,mBAAmB,GAAG,YAAM;kBAC5DH,QAAQ,EAAE;gBACX,CAAC;gBAAA;gBAAA,OAEK,IAAI,CAACV,SAAS,CAACc,OAAO,CAAC;kBAC5BC,QAAQ,EAAE,CACT;oBACCT,IAAI,EAAE,OAAO;oBACbU,OAAO,EAAE;sBACRC,IAAI,EAAE,gBAAgB;sBACtBC,WAAW,EAAE;oBACd;kBACD,CAAC,EACD;oBACCZ,IAAI,EAAE;kBACP,CAAC,EACD;oBACCA,IAAI,EAAE;kBACP,CAAC;gBAEH,CAAC,CAAC;cAAA;gBAEFF,iBAAM,CAACe,OAAO,CAACT,QAAQ,EAAE,CAAC,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CAC3B;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;EAAA;AAAA,EAvDgDU,4BAAe;AAAA"}
@@ -1,4 +1,4 @@
1
1
  import AbstractCliTest from '../../tests/AbstractCliTest';
2
2
  export default class GlobalEmitterTest extends AbstractCliTest {
3
- protected static globalEmitterEmitsSEquentally(): Promise<void>;
3
+ protected static globalEmitterEmitsEquentally(): Promise<void>;
4
4
  }
@@ -26,30 +26,29 @@ var GlobalEmitterTest = (_dec = (0, _testUtils.test)(), (_class = /*#__PURE__*/f
26
26
  return _super.apply(this, arguments);
27
27
  }
28
28
  (0, _createClass2["default"])(GlobalEmitterTest, null, [{
29
- key: "globalEmitterEmitsSEquentally",
29
+ key: "globalEmitterEmitsEquentally",
30
30
  value: function () {
31
- var _globalEmitterEmitsSEquentally = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
32
- var emitter;
31
+ var _globalEmitterEmitsEquentally = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
33
32
  return _regenerator["default"].wrap(function _callee$(_context) {
34
33
  while (1) {
35
34
  switch (_context.prev = _context.next) {
36
35
  case 0:
37
- emitter = this.getEmitter(); //@ts-ignore
38
- _testUtils.assert.isTrue(emitter.shouldEmitSequentally);
39
- case 2:
36
+ //@ts-ignore
37
+ _testUtils.assert.isTrue(this.emitter.shouldEmitSequentally);
38
+ case 1:
40
39
  case "end":
41
40
  return _context.stop();
42
41
  }
43
42
  }
44
43
  }, _callee, this);
45
44
  }));
46
- function globalEmitterEmitsSEquentally() {
47
- return _globalEmitterEmitsSEquentally.apply(this, arguments);
45
+ function globalEmitterEmitsEquentally() {
46
+ return _globalEmitterEmitsEquentally.apply(this, arguments);
48
47
  }
49
- return globalEmitterEmitsSEquentally;
48
+ return globalEmitterEmitsEquentally;
50
49
  }()
51
50
  }]);
52
51
  return GlobalEmitterTest;
53
- }(_AbstractCliTest2["default"]), ((0, _applyDecoratedDescriptor2["default"])(_class, "globalEmitterEmitsSEquentally", [_dec], Object.getOwnPropertyDescriptor(_class, "globalEmitterEmitsSEquentally"), _class)), _class));
52
+ }(_AbstractCliTest2["default"]), ((0, _applyDecoratedDescriptor2["default"])(_class, "globalEmitterEmitsEquentally", [_dec], Object.getOwnPropertyDescriptor(_class, "globalEmitterEmitsEquentally"), _class)), _class));
54
53
  exports["default"] = GlobalEmitterTest;
55
54
  //# sourceMappingURL=GlobalEmitter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"GlobalEmitter.js","names":["GlobalEmitterTest","test","emitter","getEmitter","assert","isTrue","shouldEmitSequentally","AbstractCliTest"],"sources":["../../../src/__tests__/implementation/GlobalEmitter.ts"],"sourcesContent":["import { test, assert } from '@sprucelabs/test-utils'\nimport AbstractCliTest from '../../tests/AbstractCliTest'\n\nexport default class GlobalEmitterTest extends AbstractCliTest {\n\t@test()\n\tprotected static async globalEmitterEmitsSEquentally() {\n\t\tconst emitter = this.getEmitter()\n\n\t\t//@ts-ignore\n\t\tassert.isTrue(emitter.shouldEmitSequentally)\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;AAAA;AACA;AAAyD;AAAA;AAAA;AAAA,IAEpCA,iBAAiB,WACpC,IAAAC,eAAI,GAAE;EAAA;EAAA;EAAA;IAAA;IAAA;EAAA;EAAA;IAAA;IAAA;MAAA,mHAAP;QAAA;QAAA;UAAA;YAAA;cAAA;gBAEOC,OAAO,GAAG,IAAI,CAACC,UAAU,EAAE,EAEjC;gBACAC,iBAAM,CAACC,MAAM,CAACH,OAAO,CAACI,qBAAqB,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CAC5C;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;EAAA;AAAA,EAP6CC,4BAAe;AAAA"}
1
+ {"version":3,"file":"GlobalEmitter.js","names":["GlobalEmitterTest","test","assert","isTrue","emitter","shouldEmitSequentally","AbstractCliTest"],"sources":["../../../src/__tests__/implementation/GlobalEmitter.ts"],"sourcesContent":["import { test, assert } from '@sprucelabs/test-utils'\nimport AbstractCliTest from '../../tests/AbstractCliTest'\n\nexport default class GlobalEmitterTest extends AbstractCliTest {\n\t@test()\n\tprotected static async globalEmitterEmitsEquentally() {\n\t\t//@ts-ignore\n\t\tassert.isTrue(this.emitter.shouldEmitSequentally)\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;AAAA;AACA;AAAyD;AAAA;AAAA;AAAA,IAEpCA,iBAAiB,WACpC,IAAAC,eAAI,GAAE;EAAA;EAAA;EAAA;IAAA;IAAA;EAAA;EAAA;IAAA;IAAA;MAAA,kHAAP;QAAA;UAAA;YAAA;cAAA;gBAEC;gBACAC,iBAAM,CAACC,MAAM,CAAC,IAAI,CAACC,OAAO,CAACC,qBAAqB,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACjD;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;EAAA;AAAA,EAL6CC,4BAAe;AAAA"}
@@ -72,7 +72,7 @@ var SettingUpANodeModuleTest = (_dec = (0, _testUtils.test)(), _dec2 = (0, _test
72
72
  while (1) {
73
73
  switch (_context2.prev = _context2.next) {
74
74
  case 0:
75
- installer = this.getFeatureInstaller();
75
+ installer = this.featureInstaller;
76
76
  _context2.next = 3;
77
77
  return installer.isInstalled('node');
78
78
  case 3:
@@ -1 +1 @@
1
- {"version":3,"file":"SettingUpANodeModule.test.js","names":["SettingUpANodeModuleTest","test","Cli","cli","assert","doesThrowAsync","installFeatures","features","code","options","err","errorAssert","assertError","installer","getFeatureInstaller","isInstalled","isFalse","name","description","pkgService","Service","contents","readPackage","doesInclude","version","AbstractCliTest"],"sources":["../../../src/__tests__/implementation/SettingUpANodeModule.test.ts"],"sourcesContent":["import { test, assert } from '@sprucelabs/test-utils'\nimport { errorAssert } from '@sprucelabs/test-utils'\nimport AbstractCliTest from '../../tests/AbstractCliTest'\n\nexport default class SettingUpANodeModuleTest extends AbstractCliTest {\n\t@test()\n\tprotected static async settingUpANodeModule() {\n\t\tconst cli = await this.Cli()\n\t\tconst err = await assert.doesThrowAsync(() =>\n\t\t\tcli.installFeatures({\n\t\t\t\tfeatures: [\n\t\t\t\t\t{\n\t\t\t\t\t\tcode: 'node',\n\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\toptions: {},\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t})\n\t\t)\n\n\t\terrorAssert.assertError(err, 'VALIDATION_FAILED')\n\t}\n\n\t@test()\n\tprotected static async canTellIfNotInstalled() {\n\t\tconst installer = this.getFeatureInstaller()\n\t\tconst isInstalled = await installer.isInstalled('node')\n\t\tassert.isFalse(isInstalled)\n\t}\n\n\t@test()\n\tprotected static async installsNodeModuleWithCleanedUpPackageJson() {\n\t\tconst cli = await this.Cli()\n\n\t\tawait cli.installFeatures({\n\t\t\tfeatures: [\n\t\t\t\t{\n\t\t\t\t\tcode: 'node',\n\t\t\t\t\toptions: {\n\t\t\t\t\t\tname: 'Test module',\n\t\t\t\t\t\tdescription: 'so great!',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t})\n\n\t\tconst pkgService = this.Service('pkg')\n\t\tconst contents = pkgService.readPackage()\n\n\t\tassert.doesInclude(contents, {\n\t\t\tname: 'test-module',\n\t\t\tdescription: 'so great!',\n\t\t\tversion: '0.0.1',\n\t\t})\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;AAAA;AAEA;AAAyD;AAAA;AAAA;AAAA,IAEpCA,wBAAwB,WAC3C,IAAAC,eAAI,GAAE,UAkBN,IAAAA,eAAI,GAAE,UAON,IAAAA,eAAI,GAAE;EAAA;EAAA;EAAA;IAAA;IAAA;EAAA;EAAA;IAAA;IAAA;MAAA,0GAzBP;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAEmB,IAAI,CAACC,GAAG,EAAE;cAAA;gBAAtBC,GAAG;gBAAA;gBAAA,OACSC,iBAAM,CAACC,cAAc,CAAC;kBAAA,OACvCF,GAAG,CAACG,eAAe,CAAC;oBACnBC,QAAQ,EAAE,CACT;sBACCC,IAAI,EAAE,MAAM;sBACZ;sBACAC,OAAO,EAAE,CAAC;oBACX,CAAC;kBAEH,CAAC,CAAC;gBAAA,EACF;cAAA;gBAVKC,GAAG;gBAYTC,sBAAW,CAACC,WAAW,CAACF,GAAG,EAAE,mBAAmB,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACjD;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA;MAAA,2GAED;QAAA;QAAA;UAAA;YAAA;cAAA;gBAEOG,SAAS,GAAG,IAAI,CAACC,mBAAmB,EAAE;gBAAA;gBAAA,OAClBD,SAAS,CAACE,WAAW,CAAC,MAAM,CAAC;cAAA;gBAAjDA,WAAW;gBACjBX,iBAAM,CAACY,OAAO,CAACD,WAAW,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CAC3B;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA;MAAA,gIAED;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAEmB,IAAI,CAACb,GAAG,EAAE;cAAA;gBAAtBC,GAAG;gBAAA;gBAAA,OAEHA,GAAG,CAACG,eAAe,CAAC;kBACzBC,QAAQ,EAAE,CACT;oBACCC,IAAI,EAAE,MAAM;oBACZC,OAAO,EAAE;sBACRQ,IAAI,EAAE,aAAa;sBACnBC,WAAW,EAAE;oBACd;kBACD,CAAC;gBAEH,CAAC,CAAC;cAAA;gBAEIC,UAAU,GAAG,IAAI,CAACC,OAAO,CAAC,KAAK,CAAC;gBAChCC,QAAQ,GAAGF,UAAU,CAACG,WAAW,EAAE;gBAEzClB,iBAAM,CAACmB,WAAW,CAACF,QAAQ,EAAE;kBAC5BJ,IAAI,EAAE,aAAa;kBACnBC,WAAW,EAAE,WAAW;kBACxBM,OAAO,EAAE;gBACV,CAAC,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACF;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;EAAA;AAAA,EAlDoDC,4BAAe;AAAA"}
1
+ {"version":3,"file":"SettingUpANodeModule.test.js","names":["SettingUpANodeModuleTest","test","Cli","cli","assert","doesThrowAsync","installFeatures","features","code","options","err","errorAssert","assertError","installer","featureInstaller","isInstalled","isFalse","name","description","pkgService","Service","contents","readPackage","doesInclude","version","AbstractCliTest"],"sources":["../../../src/__tests__/implementation/SettingUpANodeModule.test.ts"],"sourcesContent":["import { test, assert } from '@sprucelabs/test-utils'\nimport { errorAssert } from '@sprucelabs/test-utils'\nimport AbstractCliTest from '../../tests/AbstractCliTest'\n\nexport default class SettingUpANodeModuleTest extends AbstractCliTest {\n\t@test()\n\tprotected static async settingUpANodeModule() {\n\t\tconst cli = await this.Cli()\n\t\tconst err = await assert.doesThrowAsync(() =>\n\t\t\tcli.installFeatures({\n\t\t\t\tfeatures: [\n\t\t\t\t\t{\n\t\t\t\t\t\tcode: 'node',\n\t\t\t\t\t\t//@ts-ignore\n\t\t\t\t\t\toptions: {},\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t})\n\t\t)\n\n\t\terrorAssert.assertError(err, 'VALIDATION_FAILED')\n\t}\n\n\t@test()\n\tprotected static async canTellIfNotInstalled() {\n\t\tconst installer = this.featureInstaller\n\t\tconst isInstalled = await installer.isInstalled('node')\n\t\tassert.isFalse(isInstalled)\n\t}\n\n\t@test()\n\tprotected static async installsNodeModuleWithCleanedUpPackageJson() {\n\t\tconst cli = await this.Cli()\n\n\t\tawait cli.installFeatures({\n\t\t\tfeatures: [\n\t\t\t\t{\n\t\t\t\t\tcode: 'node',\n\t\t\t\t\toptions: {\n\t\t\t\t\t\tname: 'Test module',\n\t\t\t\t\t\tdescription: 'so great!',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t})\n\n\t\tconst pkgService = this.Service('pkg')\n\t\tconst contents = pkgService.readPackage()\n\n\t\tassert.doesInclude(contents, {\n\t\t\tname: 'test-module',\n\t\t\tdescription: 'so great!',\n\t\t\tversion: '0.0.1',\n\t\t})\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;AAAA;AAEA;AAAyD;AAAA;AAAA;AAAA,IAEpCA,wBAAwB,WAC3C,IAAAC,eAAI,GAAE,UAkBN,IAAAA,eAAI,GAAE,UAON,IAAAA,eAAI,GAAE;EAAA;EAAA;EAAA;IAAA;IAAA;EAAA;EAAA;IAAA;IAAA;MAAA,0GAzBP;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAEmB,IAAI,CAACC,GAAG,EAAE;cAAA;gBAAtBC,GAAG;gBAAA;gBAAA,OACSC,iBAAM,CAACC,cAAc,CAAC;kBAAA,OACvCF,GAAG,CAACG,eAAe,CAAC;oBACnBC,QAAQ,EAAE,CACT;sBACCC,IAAI,EAAE,MAAM;sBACZ;sBACAC,OAAO,EAAE,CAAC;oBACX,CAAC;kBAEH,CAAC,CAAC;gBAAA,EACF;cAAA;gBAVKC,GAAG;gBAYTC,sBAAW,CAACC,WAAW,CAACF,GAAG,EAAE,mBAAmB,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACjD;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA;MAAA,2GAED;QAAA;QAAA;UAAA;YAAA;cAAA;gBAEOG,SAAS,GAAG,IAAI,CAACC,gBAAgB;gBAAA;gBAAA,OACbD,SAAS,CAACE,WAAW,CAAC,MAAM,CAAC;cAAA;gBAAjDA,WAAW;gBACjBX,iBAAM,CAACY,OAAO,CAACD,WAAW,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CAC3B;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;IAAA;IAAA;MAAA,gIAED;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAEmB,IAAI,CAACb,GAAG,EAAE;cAAA;gBAAtBC,GAAG;gBAAA;gBAAA,OAEHA,GAAG,CAACG,eAAe,CAAC;kBACzBC,QAAQ,EAAE,CACT;oBACCC,IAAI,EAAE,MAAM;oBACZC,OAAO,EAAE;sBACRQ,IAAI,EAAE,aAAa;sBACnBC,WAAW,EAAE;oBACd;kBACD,CAAC;gBAEH,CAAC,CAAC;cAAA;gBAEIC,UAAU,GAAG,IAAI,CAACC,OAAO,CAAC,KAAK,CAAC;gBAChCC,QAAQ,GAAGF,UAAU,CAACG,WAAW,EAAE;gBAEzClB,iBAAM,CAACmB,WAAW,CAACF,QAAQ,EAAE;kBAC5BJ,IAAI,EAAE,aAAa;kBACnBC,WAAW,EAAE,WAAW;kBACxBM,OAAO,EAAE;gBACV,CAAC,CAAC;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,CACF;MAAA;QAAA;MAAA;MAAA;IAAA;EAAA;EAAA;AAAA,EAlDoDC,4BAAe;AAAA"}
@@ -1,6 +1,7 @@
1
1
  import AbstractCliTest from '../../tests/AbstractCliTest';
2
2
  export default class SkillStoreTest extends AbstractCliTest {
3
- protected static canInstantiateSkillStore(): Promise<void>;
3
+ private static store;
4
+ protected static beforeEach(): Promise<void>;
4
5
  protected static hasRegisterMethod(): Promise<void>;
5
6
  protected static cantRegisterIfNotInSkill(): Promise<void>;
6
7
  protected static cantLoadcurrentSkillIfNotInSkill(): Promise<void>;
@@ -8,4 +9,5 @@ export default class SkillStoreTest extends AbstractCliTest {
8
9
  protected static canGetNamespace(): Promise<void>;
9
10
  protected static canSetNamespace(): Promise<void>;
10
11
  protected static canRegister(): Promise<void>;
12
+ private static SkillStore;
11
13
  }