@sprucelabs/spruce-cli 14.24.9 → 14.26.2

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 (28) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/build/__tests__/behavioral/InstallingASkillAtAnOrg.test.js +1 -1
  3. package/build/__tests__/behavioral/InstallingASkillAtAnOrg.test.js.map +1 -1
  4. package/build/__tests__/behavioral/events/CreatingAListener.test.js +1 -1
  5. package/build/__tests__/behavioral/events/CreatingAListener.test.js.map +1 -1
  6. package/build/__tests__/behavioral/skill/UpgradingASkill.test.js +1 -1
  7. package/build/__tests__/behavioral/skill/UpgradingASkill.test.js.map +1 -1
  8. package/build/__tests__/behavioral/skill/UpgradingASkill4.test.d.ts +3 -0
  9. package/build/__tests__/behavioral/skill/UpgradingASkill4.test.js +129 -8
  10. package/build/__tests__/behavioral/skill/UpgradingASkill4.test.js.map +1 -1
  11. package/build/__tests__/behavioral/views/CreatingASkillView.test.d.ts +1 -0
  12. package/build/__tests__/behavioral/views/CreatingASkillView.test.js +33 -3
  13. package/build/__tests__/behavioral/views/CreatingASkillView.test.js.map +1 -1
  14. package/build/features/node/NodeFeature.js +1 -1
  15. package/build/features/node/NodeFeature.js.map +1 -1
  16. package/build/features/node/actions/UpdateDependenciesAction.js +21 -10
  17. package/build/features/node/actions/UpdateDependenciesAction.js.map +1 -1
  18. package/build/features/skill/actions/BootAction.js +9 -5
  19. package/build/features/skill/actions/BootAction.js.map +1 -1
  20. package/package.json +27 -27
  21. package/src/__tests__/behavioral/InstallingASkillAtAnOrg.test.ts +2 -5
  22. package/src/__tests__/behavioral/events/CreatingAListener.test.ts +2 -2
  23. package/src/__tests__/behavioral/skill/UpgradingASkill.test.ts +1 -1
  24. package/src/__tests__/behavioral/skill/UpgradingASkill4.test.ts +45 -0
  25. package/src/__tests__/behavioral/views/CreatingASkillView.test.ts +12 -0
  26. package/src/features/node/NodeFeature.ts +3 -3
  27. package/src/features/node/actions/UpdateDependenciesAction.ts +12 -6
  28. package/src/features/skill/actions/BootAction.ts +5 -2
package/CHANGELOG.md CHANGED
@@ -3,6 +3,45 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [14.26.2](https://github.com/sprucelabsai/spruce-cli-workspace/compare/v14.26.1...v14.26.2) (2021-11-09)
7
+
8
+ **Note:** Version bump only for package @sprucelabs/spruce-cli
9
+
10
+
11
+
12
+
13
+
14
+ ## [14.26.1](https://github.com/sprucelabsai/spruce-cli-workspace/compare/v14.26.0...v14.26.1) (2021-11-08)
15
+
16
+ **Note:** Version bump only for package @sprucelabs/spruce-cli
17
+
18
+
19
+
20
+
21
+
22
+ # [14.26.0](https://github.com/sprucelabsai/spruce-cli-workspace/compare/v14.25.0...v14.26.0) (2021-11-07)
23
+
24
+
25
+ ### Features
26
+
27
+ * update.dependencies has a new alias: upgrade.dependencies ([4fd36d2](https://github.com/sprucelabsai/spruce-cli-workspace/commit/4fd36d2))
28
+ * upgrading a skill will keep dev and prod dependencies in their spot ([42ddd04](https://github.com/sprucelabsai/spruce-cli-workspace/commit/42ddd04))
29
+
30
+
31
+
32
+
33
+
34
+ # [14.25.0](https://github.com/sprucelabsai/spruce-cli-workspace/compare/v14.24.9...v14.25.0) (2021-11-05)
35
+
36
+
37
+ ### Features
38
+
39
+ * Gave developers the ability to get code assistance when building custom views in heartwood ([c38fd2d](https://github.com/sprucelabsai/spruce-cli-workspace/commit/c38fd2d))
40
+
41
+
42
+
43
+
44
+
6
45
  ## [14.24.9](https://github.com/sprucelabsai/spruce-cli-workspace/compare/v14.24.8...v14.24.9) (2021-11-05)
7
46
 
8
47
  **Note:** Version bump only for package @sprucelabs/spruce-cli
@@ -179,7 +179,7 @@ var InstallingASkillAtAnOrgTest = (_dec = (0, _test.test)(), _dec2 = (0, _test.t
179
179
 
180
180
  _test.assert.isTruthy(anonResults.errors);
181
181
 
182
- _spruceEventUtils.eventErrorAssertUtil.assertError(anonResults.errors[0], 'UNAUTHORIZED_ACCESS');
182
+ _spruceEventUtils.eventAssertUtil.assertError(anonResults.errors[0], 'UNAUTHORIZED_ACCESS');
183
183
 
184
184
  case 16:
185
185
  case "end":
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/__tests__/behavioral/InstallingASkillAtAnOrg.test.ts"],"names":["InstallingASkillAtAnOrgTest","login","getOrganizationFixture","clearAllOrgs","getPersonFixture","loginAsDemoPerson","process","env","DEMO_NUMBER_INSTALL_SKILL","Cli","assert","isFunction","Action","execute","seedDemoOrg","name","org","FeatureFixture","installCachedFeatures","getSkillFixture","registerCurrentSkill","logout","organizationId","id","anonResults","isTruthy","errors","eventErrorAssertUtil","assertError","errorAssertUtil","skill","promise","waitForInput","doesInclude","ui","lastInvocation","command","assertUtil","stringify","sendInput","results","isFalsy","Store","isSkillInstalledAtOrg","isInstalled","org2","options","type","AbstractCliTest"],"mappings":"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","sourcesContent":["import { eventErrorAssertUtil } from '@sprucelabs/spruce-event-utils'\nimport { test, assert, assertUtil } from '@sprucelabs/test'\nimport { errorAssertUtil } from '@sprucelabs/test-utils'\nimport AbstractCliTest from '../../tests/AbstractCliTest'\n\nexport default class InstallingASkillAtAnOrgTest extends AbstractCliTest {\n\tprotected static async beforeEach() {\n\t\tawait super.beforeEach()\n\t\tawait this.login()\n\t\tawait this.getOrganizationFixture().clearAllOrgs()\n\t}\n\n\tprivate static async login() {\n\t\tawait this.getPersonFixture().loginAsDemoPerson(\n\t\t\tprocess.env.DEMO_NUMBER_INSTALL_SKILL\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async hasInstallAction() {\n\t\tawait this.Cli()\n\t\tassert.isFunction(this.Action('organization', 'install').execute)\n\t}\n\n\t@test()\n\tprotected static async cantInstallWithoutBeingLoggedIn() {\n\t\tconst org = await this.getOrganizationFixture().seedDemoOrg({\n\t\t\tname: 'new org',\n\t\t})\n\n\t\tawait this.FeatureFixture().installCachedFeatures('organizations')\n\n\t\tawait this.getSkillFixture().registerCurrentSkill({\n\t\t\tname: 'my amazing skill',\n\t\t})\n\n\t\tawait this.getPersonFixture().logout()\n\n\t\tawait this.Cli()\n\n\t\tconst anonResults = await this.Action('organization', 'install').execute({\n\t\t\torganizationId: org.id,\n\t\t})\n\n\t\tassert.isTruthy(anonResults.errors)\n\t\teventErrorAssertUtil.assertError(\n\t\t\tanonResults.errors[0],\n\t\t\t'UNAUTHORIZED_ACCESS'\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async cantInstallWithoutAnyOrgs() {\n\t\tawait this.FeatureFixture().installCachedFeatures('organizations')\n\n\t\tawait this.getSkillFixture().registerCurrentSkill({\n\t\t\tname: 'my amazing skill',\n\t\t})\n\n\t\tconst anonResults = await this.Action('organization', 'install').execute({})\n\n\t\tassert.isTruthy(anonResults.errors)\n\t\terrorAssertUtil.assertError(anonResults.errors[0], 'NO_ORGANIZATIONS_FOUND')\n\t}\n\n\t@test()\n\tprotected static async cantInstallWithoutBeingRegistered() {\n\t\tawait this.FeatureFixture().installCachedFeatures('organizations')\n\n\t\tawait this.getOrganizationFixture().seedDemoOrg({\n\t\t\tname: 'My great org',\n\t\t})\n\n\t\tconst anonResults = await this.Action('organization', 'install').execute({})\n\n\t\tassert.isTruthy(anonResults.errors)\n\t\terrorAssertUtil.assertError(anonResults.errors[0], 'SKILL_NOT_REGISTERED')\n\t}\n\n\t@test()\n\tprotected static async canInstallSkillAtOrg() {\n\t\tawait this.FeatureFixture().installCachedFeatures('organizations')\n\n\t\tconst org = await this.getOrganizationFixture().seedDemoOrg({\n\t\t\tname: 'My great org',\n\t\t})\n\n\t\tconst skill = await this.getSkillFixture().registerCurrentSkill({\n\t\t\tname: 'my amazing skill',\n\t\t})\n\n\t\tconst promise = this.Action('organization', 'install').execute({})\n\n\t\tawait this.waitForInput()\n\n\t\tassert.doesInclude(\n\t\t\tthis.ui.lastInvocation().command,\n\t\t\t'confirm',\n\t\t\t`ui didn't get back a confirm, got back \\n\\n${assertUtil.stringify(\n\t\t\t\tthis.ui.lastInvocation()\n\t\t\t)}`\n\t\t)\n\n\t\tawait this.ui.sendInput('')\n\n\t\tconst results = await promise\n\n\t\tassert.isFalsy(results.errors)\n\n\t\tconst isInstalled = await this.Store('organization').isSkillInstalledAtOrg(\n\t\t\tskill.id,\n\t\t\torg.id\n\t\t)\n\n\t\tassert.isTruthy(isInstalled)\n\t}\n\n\t@test()\n\tprotected static async asksYouToSelectOrgWithMoreThanOne() {\n\t\tawait this.FeatureFixture().installCachedFeatures('organizations')\n\n\t\tawait this.getOrganizationFixture().seedDemoOrg({\n\t\t\tname: 'My great org',\n\t\t})\n\n\t\tconst org2 = await this.getOrganizationFixture().seedDemoOrg({\n\t\t\tname: 'My great org',\n\t\t})\n\n\t\tconst skill = await this.getSkillFixture().registerCurrentSkill({\n\t\t\tname: 'my amazing skill',\n\t\t})\n\n\t\tconst promise = this.Action('organization', 'install').execute({})\n\n\t\tawait this.waitForInput()\n\n\t\tassert.doesInclude(this.ui.lastInvocation().options, {\n\t\t\ttype: 'select',\n\t\t})\n\n\t\tawait this.ui.sendInput(org2.id)\n\n\t\tconst results = await promise\n\n\t\tassert.isFalsy(results.errors)\n\n\t\tconst isInstalled = await this.Store('organization').isSkillInstalledAtOrg(\n\t\t\tskill.id,\n\t\t\torg2.id\n\t\t)\n\n\t\tassert.isTruthy(isInstalled)\n\t}\n}\n"],"file":"InstallingASkillAtAnOrg.test.js"}
1
+ {"version":3,"sources":["../../../src/__tests__/behavioral/InstallingASkillAtAnOrg.test.ts"],"names":["InstallingASkillAtAnOrgTest","login","getOrganizationFixture","clearAllOrgs","getPersonFixture","loginAsDemoPerson","process","env","DEMO_NUMBER_INSTALL_SKILL","Cli","assert","isFunction","Action","execute","seedDemoOrg","name","org","FeatureFixture","installCachedFeatures","getSkillFixture","registerCurrentSkill","logout","organizationId","id","anonResults","isTruthy","errors","eventAssertUtil","assertError","errorAssertUtil","skill","promise","waitForInput","doesInclude","ui","lastInvocation","command","assertUtil","stringify","sendInput","results","isFalsy","Store","isSkillInstalledAtOrg","isInstalled","org2","options","type","AbstractCliTest"],"mappings":"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","sourcesContent":["import { eventAssertUtil } from '@sprucelabs/spruce-event-utils'\nimport { test, assert, assertUtil } from '@sprucelabs/test'\nimport { errorAssertUtil } from '@sprucelabs/test-utils'\nimport AbstractCliTest from '../../tests/AbstractCliTest'\n\nexport default class InstallingASkillAtAnOrgTest extends AbstractCliTest {\n\tprotected static async beforeEach() {\n\t\tawait super.beforeEach()\n\t\tawait this.login()\n\t\tawait this.getOrganizationFixture().clearAllOrgs()\n\t}\n\n\tprivate static async login() {\n\t\tawait this.getPersonFixture().loginAsDemoPerson(\n\t\t\tprocess.env.DEMO_NUMBER_INSTALL_SKILL\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async hasInstallAction() {\n\t\tawait this.Cli()\n\t\tassert.isFunction(this.Action('organization', 'install').execute)\n\t}\n\n\t@test()\n\tprotected static async cantInstallWithoutBeingLoggedIn() {\n\t\tconst org = await this.getOrganizationFixture().seedDemoOrg({\n\t\t\tname: 'new org',\n\t\t})\n\n\t\tawait this.FeatureFixture().installCachedFeatures('organizations')\n\n\t\tawait this.getSkillFixture().registerCurrentSkill({\n\t\t\tname: 'my amazing skill',\n\t\t})\n\n\t\tawait this.getPersonFixture().logout()\n\n\t\tawait this.Cli()\n\n\t\tconst anonResults = await this.Action('organization', 'install').execute({\n\t\t\torganizationId: org.id,\n\t\t})\n\n\t\tassert.isTruthy(anonResults.errors)\n\t\teventAssertUtil.assertError(anonResults.errors[0], 'UNAUTHORIZED_ACCESS')\n\t}\n\n\t@test()\n\tprotected static async cantInstallWithoutAnyOrgs() {\n\t\tawait this.FeatureFixture().installCachedFeatures('organizations')\n\n\t\tawait this.getSkillFixture().registerCurrentSkill({\n\t\t\tname: 'my amazing skill',\n\t\t})\n\n\t\tconst anonResults = await this.Action('organization', 'install').execute({})\n\n\t\tassert.isTruthy(anonResults.errors)\n\t\terrorAssertUtil.assertError(anonResults.errors[0], 'NO_ORGANIZATIONS_FOUND')\n\t}\n\n\t@test()\n\tprotected static async cantInstallWithoutBeingRegistered() {\n\t\tawait this.FeatureFixture().installCachedFeatures('organizations')\n\n\t\tawait this.getOrganizationFixture().seedDemoOrg({\n\t\t\tname: 'My great org',\n\t\t})\n\n\t\tconst anonResults = await this.Action('organization', 'install').execute({})\n\n\t\tassert.isTruthy(anonResults.errors)\n\t\terrorAssertUtil.assertError(anonResults.errors[0], 'SKILL_NOT_REGISTERED')\n\t}\n\n\t@test()\n\tprotected static async canInstallSkillAtOrg() {\n\t\tawait this.FeatureFixture().installCachedFeatures('organizations')\n\n\t\tconst org = await this.getOrganizationFixture().seedDemoOrg({\n\t\t\tname: 'My great org',\n\t\t})\n\n\t\tconst skill = await this.getSkillFixture().registerCurrentSkill({\n\t\t\tname: 'my amazing skill',\n\t\t})\n\n\t\tconst promise = this.Action('organization', 'install').execute({})\n\n\t\tawait this.waitForInput()\n\n\t\tassert.doesInclude(\n\t\t\tthis.ui.lastInvocation().command,\n\t\t\t'confirm',\n\t\t\t`ui didn't get back a confirm, got back \\n\\n${assertUtil.stringify(\n\t\t\t\tthis.ui.lastInvocation()\n\t\t\t)}`\n\t\t)\n\n\t\tawait this.ui.sendInput('')\n\n\t\tconst results = await promise\n\n\t\tassert.isFalsy(results.errors)\n\n\t\tconst isInstalled = await this.Store('organization').isSkillInstalledAtOrg(\n\t\t\tskill.id,\n\t\t\torg.id\n\t\t)\n\n\t\tassert.isTruthy(isInstalled)\n\t}\n\n\t@test()\n\tprotected static async asksYouToSelectOrgWithMoreThanOne() {\n\t\tawait this.FeatureFixture().installCachedFeatures('organizations')\n\n\t\tawait this.getOrganizationFixture().seedDemoOrg({\n\t\t\tname: 'My great org',\n\t\t})\n\n\t\tconst org2 = await this.getOrganizationFixture().seedDemoOrg({\n\t\t\tname: 'My great org',\n\t\t})\n\n\t\tconst skill = await this.getSkillFixture().registerCurrentSkill({\n\t\t\tname: 'my amazing skill',\n\t\t})\n\n\t\tconst promise = this.Action('organization', 'install').execute({})\n\n\t\tawait this.waitForInput()\n\n\t\tassert.doesInclude(this.ui.lastInvocation().options, {\n\t\t\ttype: 'select',\n\t\t})\n\n\t\tawait this.ui.sendInput(org2.id)\n\n\t\tconst results = await promise\n\n\t\tassert.isFalsy(results.errors)\n\n\t\tconst isInstalled = await this.Store('organization').isSkillInstalledAtOrg(\n\t\t\tskill.id,\n\t\t\torg2.id\n\t\t)\n\n\t\tassert.isTruthy(isInstalled)\n\t}\n}\n"],"file":"InstallingASkillAtAnOrg.test.js"}
@@ -476,7 +476,7 @@ var CreatingAListenerTest = (_dec = (0, _test.test)(), _dec2 = (0, _test.test)()
476
476
  return _spruceEventUtils.eventResponseUtil.getFirstResponseOrThrow(results);
477
477
  });
478
478
 
479
- _spruceEventUtils.eventErrorAssertUtil.assertError(error, 'LISTENER_NOT_IMPLEMENTED');
479
+ _spruceEventUtils.eventAssertUtil.assertError(error, 'LISTENER_NOT_IMPLEMENTED');
480
480
 
481
481
  responderRef = results.responses[0].responderRef;
482
482
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/__tests__/behavioral/events/CreatingAListener.test.ts"],"names":["CreatingAListenerTest","installEventFeature","Action","execute","eventNamespace","results","assert","isTruthy","errors","err","errorAssertUtil","assertError","parameters","eventName","cli","version","isFalsy","match","testUtil","assertFileByNameInGeneratedFiles","files","doesInclude","Service","check","checkHealth","health","skill","isUndefined","event","listeners","waitForInput","lastInvocation","ui","isEqual","command","options","label","sendInput","MERCURY_API_NAMESPACE","reset","setupSkillsInstallAtOrgRegisterEventContractAndGenerateListener","isGlobal","contents","emitPayloadSchema","targetSchema","eventTargetSchema","payloadSchema","id","fields","booleanField","type","skill2","slug","expectedVersion","organizationId","isRequired","responsePayloadSchema","currentSkill","eventContract","org","connectToApi","shouldAuthAsCurrentSkill","currentClient","disconnect","local","boot","wait","skillId","apiKey","client","mixinContract","eventSignatures","emit","target","payload","totalContracts","totalErrors","totalResponses","meta","promise","fail","stack","kill","error","doesThrow","eventResponseUtil","getFirstResponseOrThrow","eventErrorAssertUtil","responderRef","responses","eventSignature","seedDummySkillRegisterCurrentSkillAndInstallToOrg","skillFixture","registerEventContract","add","namespace","listener","diskUtil","readFile","listenerPath","AbstractEventTest","versionUtil","generateVersion","constValue"],"mappings":"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","sourcesContent":["import { EventSignature } from '@sprucelabs/mercury-types'\nimport { buildSchema } from '@sprucelabs/schema'\nimport {\n\tbuildEmitTargetAndPayloadSchema,\n\teventErrorAssertUtil,\n\teventResponseUtil,\n\teventTargetSchema,\n} from '@sprucelabs/spruce-event-utils'\nimport {\n\tdiskUtil,\n\tMERCURY_API_NAMESPACE,\n\tversionUtil,\n} from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test'\nimport { errorAssertUtil } from '@sprucelabs/test-utils'\nimport AbstractEventTest from '../../../tests/AbstractEventTest'\nimport testUtil from '../../../tests/utilities/test.utility'\n\nexport default class CreatingAListenerTest extends AbstractEventTest {\n\tprivate static readonly expectedVersion =\n\t\tversionUtil.generateVersion().constValue\n\n\t@test()\n\tprotected static async throwsWithBadNamespace() {\n\t\tawait this.installEventFeature('events')\n\t\tconst results = await this.Action('event', 'listen').execute({\n\t\t\teventNamespace: 'taco-bell',\n\t\t})\n\n\t\tassert.isTruthy(results.errors)\n\t\tconst err = results.errors[0]\n\n\t\terrorAssertUtil.assertError(err, 'INVALID_PARAMETERS', {\n\t\t\tparameters: ['eventNamespace'],\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async throwsWithBadEventName() {\n\t\tawait this.installEventFeature('events')\n\t\tconst results = await this.Action('event', 'listen').execute({\n\t\t\teventNamespace: 'mercury',\n\t\t\teventName: 'bad-time',\n\t\t})\n\n\t\tassert.isTruthy(results.errors)\n\t\tconst err = results.errors[0]\n\n\t\terrorAssertUtil.assertError(err, 'INVALID_PARAMETERS', {\n\t\t\tparameters: ['eventName'],\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async createsValidListener() {\n\t\tconst cli = await this.installEventFeature('events')\n\n\t\tconst version = 'v2020_01_01'\n\n\t\tconst results = await this.Action('event', 'listen').execute({\n\t\t\teventNamespace: 'skill',\n\t\t\teventName: 'will-boot',\n\t\t\tversion,\n\t\t})\n\n\t\tassert.isFalsy(results.errors)\n\n\t\tconst match = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t`will-boot.${version}.listener.ts`,\n\t\t\tresults.files\n\t\t)\n\n\t\tassert.doesInclude(match, version)\n\n\t\tawait this.Service('typeChecker').check(match)\n\n\t\tconst health = await cli.checkHealth()\n\n\t\tassert.isTruthy(health.skill)\n\n\t\tassert.isUndefined(health.skill.errors)\n\t\tassert.isTruthy(health.event)\n\n\t\tassert.doesInclude(health.event.listeners, {\n\t\t\teventName: 'will-boot',\n\t\t\teventNamespace: 'skill',\n\t\t\tversion,\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async creatingANewListenerAsksWhichEventToListenTo() {\n\t\tawait this.installEventFeature('events')\n\n\t\tvoid this.Action('event', 'listen').execute({})\n\n\t\tawait this.waitForInput()\n\n\t\tlet lastInvocation = this.ui.lastInvocation()\n\n\t\tassert.isEqual(lastInvocation.command, 'prompt')\n\t\tassert.doesInclude(lastInvocation.options.label, 'namespace')\n\n\t\tawait this.ui.sendInput(MERCURY_API_NAMESPACE)\n\n\t\tawait this.waitForInput()\n\n\t\tlastInvocation = this.ui.lastInvocation()\n\n\t\tassert.doesInclude(lastInvocation.options.label, 'event')\n\n\t\tthis.ui.reset()\n\t}\n\n\t@test()\n\tprotected static async generatesTypedListenerWithoutPayloads() {\n\t\tconst { contents } =\n\t\t\tawait this.setupSkillsInstallAtOrgRegisterEventContractAndGenerateListener(\n\t\t\t\t{\n\t\t\t\t\tisGlobal: true,\n\t\t\t\t}\n\t\t\t)\n\n\t\tassert.doesInclude(\n\t\t\tcontents,\n\t\t\t'export default async (event: SpruceEvent): SpruceEventResponse'\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async generatesTypedListenerWithEmitPayload() {\n\t\tconst { contents, skill2 } =\n\t\t\tawait this.setupSkillsInstallAtOrgRegisterEventContractAndGenerateListener(\n\t\t\t\t{\n\t\t\t\t\temitPayloadSchema: buildEmitTargetAndPayloadSchema({\n\t\t\t\t\t\teventName: 'my-new-event',\n\t\t\t\t\t\ttargetSchema: eventTargetSchema,\n\t\t\t\t\t\tpayloadSchema: {\n\t\t\t\t\t\t\tid: 'myNewEventEmitPayload',\n\t\t\t\t\t\t\tfields: {\n\t\t\t\t\t\t\t\tbooleanField: {\n\t\t\t\t\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t}),\n\t\t\t\t}\n\t\t\t)\n\n\t\tassert.doesInclude(\n\t\t\tcontents,\n\t\t\t'event: SpruceEvent<SkillEventContract, EmitPayload>'\n\t\t)\n\n\t\tassert.doesInclude(\n\t\t\tcontents,\n\t\t\t`fullyQualifiedEventName: '${skill2.slug}.my-new-event::${this.expectedVersion}'`\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async emittingEventTriggersListenerAndCrashesWithListenerNotImplemented() {\n\t\tconst { currentSkill, skill2, eventContract, org } =\n\t\t\tawait this.setupSkillsInstallAtOrgRegisterEventContractAndGenerateListener(\n\t\t\t\t{\n\t\t\t\t\temitPayloadSchema: buildEmitTargetAndPayloadSchema({\n\t\t\t\t\t\teventName: 'my-new-event',\n\t\t\t\t\t\ttargetSchema: {\n\t\t\t\t\t\t\tid: 'myNewEventEmitTarget',\n\t\t\t\t\t\t\tfields: {\n\t\t\t\t\t\t\t\torganizationId: {\n\t\t\t\t\t\t\t\t\ttype: 'id',\n\t\t\t\t\t\t\t\t\tisRequired: true,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tpayloadSchema: {\n\t\t\t\t\t\t\tid: 'myNewEventEmitPayload',\n\t\t\t\t\t\t\tfields: {\n\t\t\t\t\t\t\t\tbooleanField: {\n\t\t\t\t\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t}),\n\t\t\t\t\tresponsePayloadSchema: buildSchema({\n\t\t\t\t\t\tid: 'myNewEventResponsePayload',\n\t\t\t\t\t\tfields: {\n\t\t\t\t\t\t\tbooleanField: {\n\t\t\t\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t}),\n\t\t\t\t}\n\t\t\t)\n\n\t\tconst currentClient = await this.connectToApi({\n\t\t\tshouldAuthAsCurrentSkill: true,\n\t\t})\n\n\t\tawait currentClient.disconnect()\n\n\t\tconst boot = await this.Action('skill', 'boot').execute({ local: true })\n\n\t\tassert.isFalsy(boot.errors)\n\n\t\t//give the skill time to boot\n\t\tawait this.wait(20000)\n\n\t\tconst client = (await this.connectToApi({\n\t\t\tskillId: skill2.id,\n\t\t\tapiKey: skill2.apiKey,\n\t\t})) as any\n\n\t\tconst eventName = `${skill2.slug}.my-new-event::${this.expectedVersion}`\n\n\t\tclient.mixinContract({\n\t\t\teventSignatures: {\n\t\t\t\t[eventName]:\n\t\t\t\t\teventContract.eventSignatures[\n\t\t\t\t\t\t`my-new-event::${this.expectedVersion}`\n\t\t\t\t\t],\n\t\t\t},\n\t\t})\n\n\t\tlet results: any\n\n\t\tdo {\n\t\t\tawait this.wait(5000)\n\n\t\t\tresults = await client.emit(eventName, {\n\t\t\t\ttarget: {\n\t\t\t\t\torganizationId: org.id,\n\t\t\t\t},\n\t\t\t\tpayload: {\n\t\t\t\t\tbooleanField: true,\n\t\t\t\t},\n\t\t\t})\n\t\t} while (results.totalContracts < 1)\n\n\t\tassert.isEqual(results.totalContracts, 1)\n\t\tassert.isEqual(results.totalErrors, 1)\n\t\tassert.isEqual(results.totalResponses, 1)\n\n\t\tboot.meta?.promise?.catch((err: Error) => {\n\t\t\tassert.fail(err.stack)\n\t\t})\n\n\t\tawait boot.meta?.kill()\n\n\t\tconst error = assert.doesThrow(() =>\n\t\t\teventResponseUtil.getFirstResponseOrThrow(results)\n\t\t)\n\n\t\teventErrorAssertUtil.assertError(error, 'LISTENER_NOT_IMPLEMENTED')\n\n\t\tconst responderRef = results.responses[0].responderRef\n\t\tassert.isEqual(\n\t\t\tresponderRef,\n\t\t\t`skill:${currentSkill.id}:${currentSkill.slug}`\n\t\t)\n\t}\n\n\tprivate static async setupSkillsInstallAtOrgRegisterEventContractAndGenerateListener(\n\t\teventSignature: EventSignature\n\t) {\n\t\tconst expectedVersion = this.expectedVersion\n\n\t\tconst eventContract = {\n\t\t\teventSignatures: {\n\t\t\t\t[`my-new-event::${expectedVersion}`]: eventSignature,\n\t\t\t},\n\t\t} as const\n\n\t\tconst { skillFixture, skill2, currentSkill, cli, org } =\n\t\t\tawait this.seedDummySkillRegisterCurrentSkillAndInstallToOrg()\n\n\t\tawait skillFixture.registerEventContract(skill2, eventContract)\n\n\t\tthis.Service('dependency').add({\n\t\t\tid: skill2.id,\n\t\t\tnamespace: skill2.slug,\n\t\t})\n\n\t\tconst results = await this.Action('event', 'listen').execute({\n\t\t\teventNamespace: skill2.slug,\n\t\t\teventName: `my-new-event`,\n\t\t\tversion: expectedVersion,\n\t\t})\n\n\t\tassert.isFalsy(results.errors)\n\n\t\tconst listener = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t`my-new-event.${expectedVersion}.listener.ts`,\n\t\t\tresults.files\n\t\t)\n\n\t\tawait this.Service('typeChecker').check(listener)\n\n\t\tconst contents = diskUtil.readFile(listener)\n\n\t\treturn {\n\t\t\tcontents,\n\t\t\tskill2,\n\t\t\tlistenerPath: listener,\n\t\t\tcli,\n\t\t\teventContract,\n\t\t\torg,\n\t\t\tcurrentSkill,\n\t\t}\n\t}\n}\n"],"file":"CreatingAListener.test.js"}
1
+ {"version":3,"sources":["../../../../src/__tests__/behavioral/events/CreatingAListener.test.ts"],"names":["CreatingAListenerTest","installEventFeature","Action","execute","eventNamespace","results","assert","isTruthy","errors","err","errorAssertUtil","assertError","parameters","eventName","cli","version","isFalsy","match","testUtil","assertFileByNameInGeneratedFiles","files","doesInclude","Service","check","checkHealth","health","skill","isUndefined","event","listeners","waitForInput","lastInvocation","ui","isEqual","command","options","label","sendInput","MERCURY_API_NAMESPACE","reset","setupSkillsInstallAtOrgRegisterEventContractAndGenerateListener","isGlobal","contents","emitPayloadSchema","targetSchema","eventTargetSchema","payloadSchema","id","fields","booleanField","type","skill2","slug","expectedVersion","organizationId","isRequired","responsePayloadSchema","currentSkill","eventContract","org","connectToApi","shouldAuthAsCurrentSkill","currentClient","disconnect","local","boot","wait","skillId","apiKey","client","mixinContract","eventSignatures","emit","target","payload","totalContracts","totalErrors","totalResponses","meta","promise","fail","stack","kill","error","doesThrow","eventResponseUtil","getFirstResponseOrThrow","eventAssertUtil","responderRef","responses","eventSignature","seedDummySkillRegisterCurrentSkillAndInstallToOrg","skillFixture","registerEventContract","add","namespace","listener","diskUtil","readFile","listenerPath","AbstractEventTest","versionUtil","generateVersion","constValue"],"mappings":"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","sourcesContent":["import { EventSignature } from '@sprucelabs/mercury-types'\nimport { buildSchema } from '@sprucelabs/schema'\nimport {\n\tbuildEmitTargetAndPayloadSchema,\n\teventAssertUtil,\n\teventResponseUtil,\n\teventTargetSchema,\n} from '@sprucelabs/spruce-event-utils'\nimport {\n\tdiskUtil,\n\tMERCURY_API_NAMESPACE,\n\tversionUtil,\n} from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test'\nimport { errorAssertUtil } from '@sprucelabs/test-utils'\nimport AbstractEventTest from '../../../tests/AbstractEventTest'\nimport testUtil from '../../../tests/utilities/test.utility'\n\nexport default class CreatingAListenerTest extends AbstractEventTest {\n\tprivate static readonly expectedVersion =\n\t\tversionUtil.generateVersion().constValue\n\n\t@test()\n\tprotected static async throwsWithBadNamespace() {\n\t\tawait this.installEventFeature('events')\n\t\tconst results = await this.Action('event', 'listen').execute({\n\t\t\teventNamespace: 'taco-bell',\n\t\t})\n\n\t\tassert.isTruthy(results.errors)\n\t\tconst err = results.errors[0]\n\n\t\terrorAssertUtil.assertError(err, 'INVALID_PARAMETERS', {\n\t\t\tparameters: ['eventNamespace'],\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async throwsWithBadEventName() {\n\t\tawait this.installEventFeature('events')\n\t\tconst results = await this.Action('event', 'listen').execute({\n\t\t\teventNamespace: 'mercury',\n\t\t\teventName: 'bad-time',\n\t\t})\n\n\t\tassert.isTruthy(results.errors)\n\t\tconst err = results.errors[0]\n\n\t\terrorAssertUtil.assertError(err, 'INVALID_PARAMETERS', {\n\t\t\tparameters: ['eventName'],\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async createsValidListener() {\n\t\tconst cli = await this.installEventFeature('events')\n\n\t\tconst version = 'v2020_01_01'\n\n\t\tconst results = await this.Action('event', 'listen').execute({\n\t\t\teventNamespace: 'skill',\n\t\t\teventName: 'will-boot',\n\t\t\tversion,\n\t\t})\n\n\t\tassert.isFalsy(results.errors)\n\n\t\tconst match = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t`will-boot.${version}.listener.ts`,\n\t\t\tresults.files\n\t\t)\n\n\t\tassert.doesInclude(match, version)\n\n\t\tawait this.Service('typeChecker').check(match)\n\n\t\tconst health = await cli.checkHealth()\n\n\t\tassert.isTruthy(health.skill)\n\n\t\tassert.isUndefined(health.skill.errors)\n\t\tassert.isTruthy(health.event)\n\n\t\tassert.doesInclude(health.event.listeners, {\n\t\t\teventName: 'will-boot',\n\t\t\teventNamespace: 'skill',\n\t\t\tversion,\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async creatingANewListenerAsksWhichEventToListenTo() {\n\t\tawait this.installEventFeature('events')\n\n\t\tvoid this.Action('event', 'listen').execute({})\n\n\t\tawait this.waitForInput()\n\n\t\tlet lastInvocation = this.ui.lastInvocation()\n\n\t\tassert.isEqual(lastInvocation.command, 'prompt')\n\t\tassert.doesInclude(lastInvocation.options.label, 'namespace')\n\n\t\tawait this.ui.sendInput(MERCURY_API_NAMESPACE)\n\n\t\tawait this.waitForInput()\n\n\t\tlastInvocation = this.ui.lastInvocation()\n\n\t\tassert.doesInclude(lastInvocation.options.label, 'event')\n\n\t\tthis.ui.reset()\n\t}\n\n\t@test()\n\tprotected static async generatesTypedListenerWithoutPayloads() {\n\t\tconst { contents } =\n\t\t\tawait this.setupSkillsInstallAtOrgRegisterEventContractAndGenerateListener(\n\t\t\t\t{\n\t\t\t\t\tisGlobal: true,\n\t\t\t\t}\n\t\t\t)\n\n\t\tassert.doesInclude(\n\t\t\tcontents,\n\t\t\t'export default async (event: SpruceEvent): SpruceEventResponse'\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async generatesTypedListenerWithEmitPayload() {\n\t\tconst { contents, skill2 } =\n\t\t\tawait this.setupSkillsInstallAtOrgRegisterEventContractAndGenerateListener(\n\t\t\t\t{\n\t\t\t\t\temitPayloadSchema: buildEmitTargetAndPayloadSchema({\n\t\t\t\t\t\teventName: 'my-new-event',\n\t\t\t\t\t\ttargetSchema: eventTargetSchema,\n\t\t\t\t\t\tpayloadSchema: {\n\t\t\t\t\t\t\tid: 'myNewEventEmitPayload',\n\t\t\t\t\t\t\tfields: {\n\t\t\t\t\t\t\t\tbooleanField: {\n\t\t\t\t\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t}),\n\t\t\t\t}\n\t\t\t)\n\n\t\tassert.doesInclude(\n\t\t\tcontents,\n\t\t\t'event: SpruceEvent<SkillEventContract, EmitPayload>'\n\t\t)\n\n\t\tassert.doesInclude(\n\t\t\tcontents,\n\t\t\t`fullyQualifiedEventName: '${skill2.slug}.my-new-event::${this.expectedVersion}'`\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async emittingEventTriggersListenerAndCrashesWithListenerNotImplemented() {\n\t\tconst { currentSkill, skill2, eventContract, org } =\n\t\t\tawait this.setupSkillsInstallAtOrgRegisterEventContractAndGenerateListener(\n\t\t\t\t{\n\t\t\t\t\temitPayloadSchema: buildEmitTargetAndPayloadSchema({\n\t\t\t\t\t\teventName: 'my-new-event',\n\t\t\t\t\t\ttargetSchema: {\n\t\t\t\t\t\t\tid: 'myNewEventEmitTarget',\n\t\t\t\t\t\t\tfields: {\n\t\t\t\t\t\t\t\torganizationId: {\n\t\t\t\t\t\t\t\t\ttype: 'id',\n\t\t\t\t\t\t\t\t\tisRequired: true,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tpayloadSchema: {\n\t\t\t\t\t\t\tid: 'myNewEventEmitPayload',\n\t\t\t\t\t\t\tfields: {\n\t\t\t\t\t\t\t\tbooleanField: {\n\t\t\t\t\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t}),\n\t\t\t\t\tresponsePayloadSchema: buildSchema({\n\t\t\t\t\t\tid: 'myNewEventResponsePayload',\n\t\t\t\t\t\tfields: {\n\t\t\t\t\t\t\tbooleanField: {\n\t\t\t\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t}),\n\t\t\t\t}\n\t\t\t)\n\n\t\tconst currentClient = await this.connectToApi({\n\t\t\tshouldAuthAsCurrentSkill: true,\n\t\t})\n\n\t\tawait currentClient.disconnect()\n\n\t\tconst boot = await this.Action('skill', 'boot').execute({ local: true })\n\n\t\tassert.isFalsy(boot.errors)\n\n\t\t//give the skill time to boot\n\t\tawait this.wait(20000)\n\n\t\tconst client = (await this.connectToApi({\n\t\t\tskillId: skill2.id,\n\t\t\tapiKey: skill2.apiKey,\n\t\t})) as any\n\n\t\tconst eventName = `${skill2.slug}.my-new-event::${this.expectedVersion}`\n\n\t\tclient.mixinContract({\n\t\t\teventSignatures: {\n\t\t\t\t[eventName]:\n\t\t\t\t\teventContract.eventSignatures[\n\t\t\t\t\t\t`my-new-event::${this.expectedVersion}`\n\t\t\t\t\t],\n\t\t\t},\n\t\t})\n\n\t\tlet results: any\n\n\t\tdo {\n\t\t\tawait this.wait(5000)\n\n\t\t\tresults = await client.emit(eventName, {\n\t\t\t\ttarget: {\n\t\t\t\t\torganizationId: org.id,\n\t\t\t\t},\n\t\t\t\tpayload: {\n\t\t\t\t\tbooleanField: true,\n\t\t\t\t},\n\t\t\t})\n\t\t} while (results.totalContracts < 1)\n\n\t\tassert.isEqual(results.totalContracts, 1)\n\t\tassert.isEqual(results.totalErrors, 1)\n\t\tassert.isEqual(results.totalResponses, 1)\n\n\t\tboot.meta?.promise?.catch((err: Error) => {\n\t\t\tassert.fail(err.stack)\n\t\t})\n\n\t\tawait boot.meta?.kill()\n\n\t\tconst error = assert.doesThrow(() =>\n\t\t\teventResponseUtil.getFirstResponseOrThrow(results)\n\t\t)\n\n\t\teventAssertUtil.assertError(error, 'LISTENER_NOT_IMPLEMENTED')\n\n\t\tconst responderRef = results.responses[0].responderRef\n\t\tassert.isEqual(\n\t\t\tresponderRef,\n\t\t\t`skill:${currentSkill.id}:${currentSkill.slug}`\n\t\t)\n\t}\n\n\tprivate static async setupSkillsInstallAtOrgRegisterEventContractAndGenerateListener(\n\t\teventSignature: EventSignature\n\t) {\n\t\tconst expectedVersion = this.expectedVersion\n\n\t\tconst eventContract = {\n\t\t\teventSignatures: {\n\t\t\t\t[`my-new-event::${expectedVersion}`]: eventSignature,\n\t\t\t},\n\t\t} as const\n\n\t\tconst { skillFixture, skill2, currentSkill, cli, org } =\n\t\t\tawait this.seedDummySkillRegisterCurrentSkillAndInstallToOrg()\n\n\t\tawait skillFixture.registerEventContract(skill2, eventContract)\n\n\t\tthis.Service('dependency').add({\n\t\t\tid: skill2.id,\n\t\t\tnamespace: skill2.slug,\n\t\t})\n\n\t\tconst results = await this.Action('event', 'listen').execute({\n\t\t\teventNamespace: skill2.slug,\n\t\t\teventName: `my-new-event`,\n\t\t\tversion: expectedVersion,\n\t\t})\n\n\t\tassert.isFalsy(results.errors)\n\n\t\tconst listener = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t`my-new-event.${expectedVersion}.listener.ts`,\n\t\t\tresults.files\n\t\t)\n\n\t\tawait this.Service('typeChecker').check(listener)\n\n\t\tconst contents = diskUtil.readFile(listener)\n\n\t\treturn {\n\t\t\tcontents,\n\t\t\tskill2,\n\t\t\tlistenerPath: listener,\n\t\t\tcli,\n\t\t\teventContract,\n\t\t\torg,\n\t\t\tcurrentSkill,\n\t\t}\n\t}\n}\n"],"file":"CreatingAListener.test.js"}
@@ -500,7 +500,7 @@ var UpgradingASkillTest = (_dec = (0, _test.test)(), _dec2 = (0, _test.test)(),
500
500
 
501
501
  _test.assert.isEqual(updatedContents, originalContents);
502
502
 
503
- _test.assert.doesInclude((_results$summaryLines = results.summaryLines) !== null && _results$summaryLines !== void 0 ? _results$summaryLines : [], 'Rebuild Complete');
503
+ _test.assert.doesInclude((_results$summaryLines = results.summaryLines) !== null && _results$summaryLines !== void 0 ? _results$summaryLines : [], 'successfully');
504
504
 
505
505
  case 15:
506
506
  case "end":
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/__tests__/behavioral/skill/UpgradingASkill.test.ts"],"names":["BROKEN_SKILL_INDEX_CONTENTS","UpgradingASkillTest","CommandService","setMockResponse","RegExp","code","installAndBreakSkill","cli","files","name","path","forceEverythingAction","forceRequiredSkipRestAction","upgradeMode","file","clearFileIfAboutToBeUpdated","Action","execute","results","checkHealth","passedHealthCheck","assert","isEqualDeep","skill","status","action","doesInclude","JSON","stringify","promise","waitForInput","assertFailedHealthCheck","last","ui","lastInvocation","FILE_ACTION_OVERWRITE","sendInput","isFalsy","errors","health","isEqual","installBreakAndUpgradeSkill","FILE_ACTION_SKIP","assertSkillIsBroken","FILE_ACTION_ALWAYS_SKIP","installSkill","pkgService","Service","set","value","failedHealth","passedHealth","pluginName","cacheKey","shouldMockYarn","FeatureFixture","installCachedFeatures","pluginPath","resolveHashSprucePath","originalContents","diskUtil","readFile","writeFile","testUtil","assertFileByNameInGeneratedFiles","updatedContents","summaryLines","pkg","command","options","choices","get","isNotEqual","match","newContents","resolvePath","indexFile","fixture","installFeatures","description","failedHealthCheck","listeners","doesDirExist","matches","fsUtil","readdirSync","isLength","contents","AbstractCliTest"],"mappings":"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","sourcesContent":["import fsUtil from 'fs'\nimport { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test'\nimport { CliInterface } from '../../../cli'\nimport {\n\tFILE_ACTION_ALWAYS_SKIP,\n\tFILE_ACTION_OVERWRITE,\n\tFILE_ACTION_SKIP,\n} from '../../../constants'\nimport CommandService from '../../../services/CommandService'\nimport AbstractCliTest from '../../../tests/AbstractCliTest'\nimport testUtil from '../../../tests/utilities/test.utility'\nimport { GeneratedFile } from '../../../types/cli.types'\nconst BROKEN_SKILL_INDEX_CONTENTS = \"throw new Error('cheese!')\\n\"\nexport default class UpgradingASkillTest extends AbstractCliTest {\n\tprotected static async beforeEach() {\n\t\tawait super.beforeEach()\n\t\tCommandService.setMockResponse(new RegExp(/yarn rebuild/gis), {\n\t\t\tcode: 0,\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async forceEverythingUpgradeOverwritesWhatHasChanged() {\n\t\tconst cli = await this.installAndBreakSkill('skills')\n\n\t\tCommandService.setMockResponse('yarn clean.build', {\n\t\t\tcode: 0,\n\t\t})\n\n\t\tCommandService.setMockResponse('yarn build.dev', {\n\t\t\tcode: 0,\n\t\t})\n\n\t\tconst files: {\n\t\t\tname: string\n\t\t\tpath: string\n\t\t\tforceEverythingAction: GeneratedFile['action']\n\t\t\tforceRequiredSkipRestAction: GeneratedFile['action']\n\t\t}[] = [\n\t\t\t{\n\t\t\t\tname: 'index.ts',\n\t\t\t\tpath: 'src/index.ts',\n\t\t\t\tforceEverythingAction: 'updated',\n\t\t\t\tforceRequiredSkipRestAction: 'updated',\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: '.eslintrc.js',\n\t\t\t\tpath: '.eslintrc.js',\n\t\t\t\tforceEverythingAction: 'updated',\n\t\t\t\tforceRequiredSkipRestAction: 'updated',\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'SpruceError.ts',\n\t\t\t\tpath: 'src/errors/SpruceError.ts',\n\t\t\t\tforceEverythingAction: 'updated',\n\t\t\t\tforceRequiredSkipRestAction: 'skipped',\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'options.types.ts',\n\t\t\t\tpath: 'src/.spruce/errors/options.types.ts',\n\t\t\t\tforceEverythingAction: 'updated',\n\t\t\t\tforceRequiredSkipRestAction: 'skipped',\n\t\t\t},\n\t\t]\n\n\t\tfor (const upgradeMode of ['forceRequiredSkipRest', 'forceEverything']) {\n\t\t\tfor (const file of files) {\n\t\t\t\tthis.clearFileIfAboutToBeUpdated(file, upgradeMode)\n\t\t\t}\n\n\t\t\tconst results = await this.Action('node', 'upgrade').execute({\n\t\t\t\tupgradeMode,\n\t\t\t})\n\n\t\t\tif (upgradeMode === 'forceRequiredSkipRest') {\n\t\t\t\tconst passedHealthCheck = await cli.checkHealth()\n\t\t\t\tassert.isEqualDeep(passedHealthCheck, { skill: { status: 'passed' } })\n\t\t\t}\n\n\t\t\tfor (const file of files) {\n\t\t\t\t//@ts-ignore\n\t\t\t\tconst action = file[`${upgradeMode}Action`]\n\t\t\t\tassert.doesInclude(\n\t\t\t\t\tresults.files,\n\t\t\t\t\t{\n\t\t\t\t\t\tname: file.name,\n\t\t\t\t\t\taction,\n\t\t\t\t\t},\n\t\t\t\t\t`${\n\t\t\t\t\t\tfile.name\n\t\t\t\t\t} was not ${action} when ${upgradeMode} in \\n\\n ${JSON.stringify(\n\t\t\t\t\t\tresults.files ?? [],\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\t2\n\t\t\t\t\t)}`\n\t\t\t\t)\n\t\t\t}\n\t\t}\n\n\t\tconst passedHealthCheck = await cli.checkHealth()\n\n\t\tassert.doesInclude(passedHealthCheck, {\n\t\t\t'skill.status': 'passed',\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async upgradeWillAskIfYouWantToOverwriteFiles() {\n\t\tconst cli = await this.installAndBreakSkill('skills')\n\n\t\tconst promise = this.Action('node', 'upgrade').execute({\n\t\t\tupgradeMode: 'askForChanged',\n\t\t})\n\n\t\tawait this.waitForInput()\n\n\t\tawait this.assertFailedHealthCheck(cli)\n\n\t\tconst last = this.ui.lastInvocation()\n\n\t\tassert.doesInclude(last, {\n\t\t\t'options.options.choices[].value': FILE_ACTION_OVERWRITE,\n\t\t})\n\n\t\tawait this.ui.sendInput(FILE_ACTION_OVERWRITE)\n\n\t\tconst results = await promise\n\n\t\tassert.isFalsy(results.errors)\n\n\t\tconst health = await cli.checkHealth()\n\n\t\tassert.isEqual(health.skill.status, 'passed')\n\t}\n\n\t@test()\n\tprotected static async canSkipFile() {\n\t\tconst { last, promise } = await this.installBreakAndUpgradeSkill()\n\n\t\tassert.doesInclude(last, {\n\t\t\t'options.options.choices[].value': FILE_ACTION_SKIP,\n\t\t})\n\n\t\tawait this.ui.sendInput(FILE_ACTION_SKIP)\n\n\t\tawait promise\n\n\t\tthis.assertSkillIsBroken()\n\t}\n\n\t@test()\n\tprotected static async canAlwaysSkipFiles() {\n\t\tconst { last, promise } = await this.installBreakAndUpgradeSkill()\n\n\t\tassert.doesInclude(last, {\n\t\t\t'options.options.choices[].value': FILE_ACTION_ALWAYS_SKIP,\n\t\t})\n\n\t\tawait this.ui.sendInput(FILE_ACTION_ALWAYS_SKIP)\n\n\t\tawait promise\n\n\t\tthis.assertSkillIsBroken()\n\n\t\tconst results = await this.Action('node', 'upgrade').execute({\n\t\t\tupgradeMode: 'askForChanged',\n\t\t})\n\n\t\tassert.isFalsy(results.errors)\n\n\t\tthis.assertSkillIsBroken()\n\t}\n\n\t@test()\n\tprotected static async upgradesUpdatesPackageScripts() {\n\t\tconst cli = await this.installSkill('schemas')\n\n\t\tconst pkgService = this.Service('pkg')\n\t\tpkgService.set({ path: 'scripts', value: {} })\n\n\t\tconst failedHealth = await cli.checkHealth()\n\n\t\tassert.doesInclude(failedHealth, {\n\t\t\t'skill.errors[].message': '\"health.local\" not found',\n\t\t})\n\n\t\tawait this.Action('node', 'upgrade').execute({})\n\n\t\tconst passedHealth = await cli.checkHealth()\n\t\tassert.isEqual(passedHealth.skill.status, 'passed')\n\t}\n\n\t@test(\n\t\t'Upgrades error.plugin (even if skill is broken)',\n\t\t'error.plugin.ts',\n\t\t'errors'\n\t)\n\t@test(\n\t\t'Upgrades schema.plugin (even if skill is broken)',\n\t\t'schema.plugin.ts',\n\t\t'schemas'\n\t)\n\t@test(\n\t\t'Upgrades conversation.plugin (even if skill is broken)',\n\t\t'conversation.plugin.ts',\n\t\t'conversation',\n\t\tfalse\n\t)\n\t@test(\n\t\t'Upgrades view.plugin (even if skill is broken)',\n\t\t'view.plugin.ts',\n\t\t'views',\n\t\tfalse\n\t)\n\tprotected static async upgradesPlugins(\n\t\tpluginName: string,\n\t\tcacheKey: string,\n\t\tshouldMockYarn = true\n\t) {\n\t\tawait this.FeatureFixture().installCachedFeatures(cacheKey)\n\n\t\tshouldMockYarn && CommandService.setMockResponse(/yarn/, { code: 0 })\n\n\t\tconst pluginPath = this.resolveHashSprucePath(`features/${pluginName}`)\n\t\tconst originalContents = diskUtil.readFile(pluginPath)\n\n\t\tdiskUtil.writeFile(pluginPath, 'aoeuaoeuaoeuaoeu')\n\n\t\tconst results = await this.Action('node', 'upgrade').execute({})\n\n\t\tassert.isFalsy(results.errors)\n\n\t\ttestUtil.assertFileByNameInGeneratedFiles(pluginName, results.files)\n\n\t\tconst updatedContents = diskUtil.readFile(pluginPath)\n\n\t\tassert.isEqual(updatedContents, originalContents)\n\n\t\tassert.doesInclude(results.summaryLines ?? [], 'Rebuild Complete')\n\t}\n\n\t@test()\n\tprotected static async canSkipPackageScriptChanges() {\n\t\tawait this.FeatureFixture().installCachedFeatures('skills')\n\n\t\tconst pkg = this.Service('pkg')\n\t\tpkg.set({ path: ['scripts', 'build.dev'], value: 'taco' })\n\n\t\tconst promise = this.Action('node', 'upgrade').execute({})\n\n\t\tawait this.waitForInput()\n\n\t\tconst last = this.ui.lastInvocation()\n\n\t\tassert.isEqual(last.command, 'prompt')\n\t\tassert.doesInclude(last.options.options.choices, { value: 'skip' })\n\t\tassert.doesInclude(last.options.options.choices, { value: 'skipAll' })\n\t\tassert.doesInclude(last.options.options.choices, { value: 'overwrite' })\n\n\t\tawait this.ui.sendInput('skip')\n\n\t\tawait promise\n\n\t\tassert.isEqual(pkg.get(['scripts', 'build.dev']), 'taco')\n\t}\n\n\t@test()\n\tprotected static async asksForEachScriptChange() {\n\t\tawait this.FeatureFixture().installCachedFeatures('skills')\n\n\t\tconst pkg = this.Service('pkg')\n\t\tpkg.set({ path: ['scripts', 'build.dev'], value: 'taco' })\n\t\tpkg.set({ path: ['scripts', 'watch.build.dev'], value: 'taco' })\n\n\t\tconst promise = this.Action('node', 'upgrade').execute({})\n\n\t\tawait this.waitForInput()\n\n\t\tlet last = this.ui.lastInvocation()\n\n\t\tassert.isEqual(last.command, 'prompt')\n\t\tawait this.ui.sendInput('skip')\n\n\t\tawait this.waitForInput()\n\n\t\tlast = this.ui.lastInvocation()\n\n\t\tassert.isEqual(last.command, 'prompt')\n\t\tawait this.ui.sendInput('skip')\n\n\t\tawait promise\n\n\t\tassert.isEqual(pkg.get(['scripts', 'build.dev']), 'taco')\n\t\tassert.isEqual(pkg.get(['scripts', 'watch.build.dev']), 'taco')\n\t}\n\n\t@test()\n\tprotected static async canSkipAllScriptChanges() {\n\t\tawait this.FeatureFixture().installCachedFeatures('skills')\n\n\t\tconst pkg = this.Service('pkg')\n\t\tpkg.set({ path: ['scripts', 'build.dev'], value: 'taco' })\n\t\tpkg.set({ path: ['scripts', 'watch.build.dev'], value: 'taco' })\n\n\t\tconst promise = this.Action('node', 'upgrade').execute({})\n\n\t\tawait this.waitForInput()\n\n\t\tlet last = this.ui.lastInvocation()\n\n\t\tassert.isEqual(last.command, 'prompt')\n\t\tawait this.ui.sendInput('skipAll')\n\n\t\tawait promise\n\n\t\tassert.isEqual(pkg.get(['scripts', 'build.dev']), 'taco')\n\t\tassert.isEqual(pkg.get(['scripts', 'watch.build.dev']), 'taco')\n\t}\n\n\t@test()\n\tprotected static async canOverwriteChangedScript() {\n\t\tawait this.FeatureFixture().installCachedFeatures('skills')\n\n\t\tconst pkg = this.Service('pkg')\n\t\tpkg.set({ path: ['scripts', 'build.dev'], value: 'taco' })\n\n\t\tconst promise = this.Action('node', 'upgrade').execute({})\n\n\t\tawait this.waitForInput()\n\n\t\tlet last = this.ui.lastInvocation()\n\n\t\tassert.isEqual(last.command, 'prompt')\n\t\tawait this.ui.sendInput('overwrite')\n\n\t\tawait promise\n\n\t\tassert.isNotEqual(pkg.get(['scripts', 'build.dev']), 'taco')\n\t}\n\n\t@test()\n\tprotected static async upgradingSkillWithSandboxUpgradesTheListener() {\n\t\tawait this.FeatureFixture().installCachedFeatures('sandbox')\n\t\tconst results = await this.Action('sandbox', 'setup').execute({})\n\n\t\tconst match = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t/will-boot/,\n\t\t\tresults.files\n\t\t)\n\n\t\tconst originalContents = diskUtil.readFile(match)\n\t\tdiskUtil.writeFile(match, 'broken')\n\n\t\tCommandService.setMockResponse(/yarn/, { code: 0 })\n\n\t\tawait this.Action('node', 'upgrade').execute({})\n\n\t\tconst newContents = diskUtil.readFile(match)\n\t\tassert.isEqual(originalContents, newContents)\n\t}\n\n\tprivate static clearFileIfAboutToBeUpdated(\n\t\tfile: {\n\t\t\tname: string\n\t\t\tpath: string\n\t\t\tforceEverythingAction: GeneratedFile['action']\n\t\t\tforceRequiredSkipRestAction: GeneratedFile['action']\n\t\t},\n\t\tupgradeMode: string\n\t) {\n\t\t//@ts-ignore\n\t\tif (file[`${upgradeMode}Action`] === 'updated') {\n\t\t\tdiskUtil.writeFile(this.resolvePath(file.path), '')\n\t\t}\n\t}\n\n\tprivate static async installAndBreakSkill(cacheKey: string) {\n\t\tconst cli = await this.installSkill(cacheKey)\n\t\tconst indexFile = this.resolvePath('src/index.ts')\n\t\tdiskUtil.writeFile(indexFile, BROKEN_SKILL_INDEX_CONTENTS)\n\t\tawait this.assertFailedHealthCheck(cli)\n\n\t\treturn cli\n\t}\n\n\tprivate static async installSkill(cacheKey: string) {\n\t\tconst fixture = this.FeatureFixture()\n\t\tconst cli = await fixture.installFeatures(\n\t\t\t[\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],\n\t\t\tcacheKey\n\t\t)\n\t\treturn cli\n\t}\n\n\tprivate static async assertFailedHealthCheck(cli: CliInterface) {\n\t\tconst failedHealthCheck = await cli.checkHealth()\n\n\t\tassert.doesInclude(failedHealthCheck, {\n\t\t\t'skill.errors[].message': 'cheese',\n\t\t})\n\t}\n\n\tprotected static assertSandboxListenerNotWritten() {\n\t\tconst listeners = this.resolvePath('src', 'listeners')\n\t\tif (!diskUtil.doesDirExist(listeners)) {\n\t\t\treturn\n\t\t}\n\t\tconst matches = fsUtil.readdirSync(listeners)\n\t\tassert.isLength(\n\t\t\tmatches,\n\t\t\t0,\n\t\t\t'A sandbox listeners was written and it should not have been.'\n\t\t)\n\t}\n\n\tprivate static async installBreakAndUpgradeSkill() {\n\t\tawait this.installAndBreakSkill('skills')\n\n\t\tconst promise = this.Action('node', 'upgrade').execute({\n\t\t\tupgradeMode: 'askForChanged',\n\t\t})\n\n\t\tawait this.waitForInput()\n\n\t\tconst last = this.ui.lastInvocation()\n\t\treturn { last, promise }\n\t}\n\n\tprivate static assertSkillIsBroken() {\n\t\tconst indexFile = this.resolvePath('src/index.ts')\n\t\tconst contents = diskUtil.readFile(indexFile)\n\t\tassert.isEqual(contents, BROKEN_SKILL_INDEX_CONTENTS)\n\t}\n}\n"],"file":"UpgradingASkill.test.js"}
1
+ {"version":3,"sources":["../../../../src/__tests__/behavioral/skill/UpgradingASkill.test.ts"],"names":["BROKEN_SKILL_INDEX_CONTENTS","UpgradingASkillTest","CommandService","setMockResponse","RegExp","code","installAndBreakSkill","cli","files","name","path","forceEverythingAction","forceRequiredSkipRestAction","upgradeMode","file","clearFileIfAboutToBeUpdated","Action","execute","results","checkHealth","passedHealthCheck","assert","isEqualDeep","skill","status","action","doesInclude","JSON","stringify","promise","waitForInput","assertFailedHealthCheck","last","ui","lastInvocation","FILE_ACTION_OVERWRITE","sendInput","isFalsy","errors","health","isEqual","installBreakAndUpgradeSkill","FILE_ACTION_SKIP","assertSkillIsBroken","FILE_ACTION_ALWAYS_SKIP","installSkill","pkgService","Service","set","value","failedHealth","passedHealth","pluginName","cacheKey","shouldMockYarn","FeatureFixture","installCachedFeatures","pluginPath","resolveHashSprucePath","originalContents","diskUtil","readFile","writeFile","testUtil","assertFileByNameInGeneratedFiles","updatedContents","summaryLines","pkg","command","options","choices","get","isNotEqual","match","newContents","resolvePath","indexFile","fixture","installFeatures","description","failedHealthCheck","listeners","doesDirExist","matches","fsUtil","readdirSync","isLength","contents","AbstractCliTest"],"mappings":"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","sourcesContent":["import fsUtil from 'fs'\nimport { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test'\nimport { CliInterface } from '../../../cli'\nimport {\n\tFILE_ACTION_ALWAYS_SKIP,\n\tFILE_ACTION_OVERWRITE,\n\tFILE_ACTION_SKIP,\n} from '../../../constants'\nimport CommandService from '../../../services/CommandService'\nimport AbstractCliTest from '../../../tests/AbstractCliTest'\nimport testUtil from '../../../tests/utilities/test.utility'\nimport { GeneratedFile } from '../../../types/cli.types'\nconst BROKEN_SKILL_INDEX_CONTENTS = \"throw new Error('cheese!')\\n\"\nexport default class UpgradingASkillTest extends AbstractCliTest {\n\tprotected static async beforeEach() {\n\t\tawait super.beforeEach()\n\t\tCommandService.setMockResponse(new RegExp(/yarn rebuild/gis), {\n\t\t\tcode: 0,\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async forceEverythingUpgradeOverwritesWhatHasChanged() {\n\t\tconst cli = await this.installAndBreakSkill('skills')\n\n\t\tCommandService.setMockResponse('yarn clean.build', {\n\t\t\tcode: 0,\n\t\t})\n\n\t\tCommandService.setMockResponse('yarn build.dev', {\n\t\t\tcode: 0,\n\t\t})\n\n\t\tconst files: {\n\t\t\tname: string\n\t\t\tpath: string\n\t\t\tforceEverythingAction: GeneratedFile['action']\n\t\t\tforceRequiredSkipRestAction: GeneratedFile['action']\n\t\t}[] = [\n\t\t\t{\n\t\t\t\tname: 'index.ts',\n\t\t\t\tpath: 'src/index.ts',\n\t\t\t\tforceEverythingAction: 'updated',\n\t\t\t\tforceRequiredSkipRestAction: 'updated',\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: '.eslintrc.js',\n\t\t\t\tpath: '.eslintrc.js',\n\t\t\t\tforceEverythingAction: 'updated',\n\t\t\t\tforceRequiredSkipRestAction: 'updated',\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'SpruceError.ts',\n\t\t\t\tpath: 'src/errors/SpruceError.ts',\n\t\t\t\tforceEverythingAction: 'updated',\n\t\t\t\tforceRequiredSkipRestAction: 'skipped',\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'options.types.ts',\n\t\t\t\tpath: 'src/.spruce/errors/options.types.ts',\n\t\t\t\tforceEverythingAction: 'updated',\n\t\t\t\tforceRequiredSkipRestAction: 'skipped',\n\t\t\t},\n\t\t]\n\n\t\tfor (const upgradeMode of ['forceRequiredSkipRest', 'forceEverything']) {\n\t\t\tfor (const file of files) {\n\t\t\t\tthis.clearFileIfAboutToBeUpdated(file, upgradeMode)\n\t\t\t}\n\n\t\t\tconst results = await this.Action('node', 'upgrade').execute({\n\t\t\t\tupgradeMode,\n\t\t\t})\n\n\t\t\tif (upgradeMode === 'forceRequiredSkipRest') {\n\t\t\t\tconst passedHealthCheck = await cli.checkHealth()\n\t\t\t\tassert.isEqualDeep(passedHealthCheck, { skill: { status: 'passed' } })\n\t\t\t}\n\n\t\t\tfor (const file of files) {\n\t\t\t\t//@ts-ignore\n\t\t\t\tconst action = file[`${upgradeMode}Action`]\n\t\t\t\tassert.doesInclude(\n\t\t\t\t\tresults.files,\n\t\t\t\t\t{\n\t\t\t\t\t\tname: file.name,\n\t\t\t\t\t\taction,\n\t\t\t\t\t},\n\t\t\t\t\t`${\n\t\t\t\t\t\tfile.name\n\t\t\t\t\t} was not ${action} when ${upgradeMode} in \\n\\n ${JSON.stringify(\n\t\t\t\t\t\tresults.files ?? [],\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\t2\n\t\t\t\t\t)}`\n\t\t\t\t)\n\t\t\t}\n\t\t}\n\n\t\tconst passedHealthCheck = await cli.checkHealth()\n\n\t\tassert.doesInclude(passedHealthCheck, {\n\t\t\t'skill.status': 'passed',\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async upgradeWillAskIfYouWantToOverwriteFiles() {\n\t\tconst cli = await this.installAndBreakSkill('skills')\n\n\t\tconst promise = this.Action('node', 'upgrade').execute({\n\t\t\tupgradeMode: 'askForChanged',\n\t\t})\n\n\t\tawait this.waitForInput()\n\n\t\tawait this.assertFailedHealthCheck(cli)\n\n\t\tconst last = this.ui.lastInvocation()\n\n\t\tassert.doesInclude(last, {\n\t\t\t'options.options.choices[].value': FILE_ACTION_OVERWRITE,\n\t\t})\n\n\t\tawait this.ui.sendInput(FILE_ACTION_OVERWRITE)\n\n\t\tconst results = await promise\n\n\t\tassert.isFalsy(results.errors)\n\n\t\tconst health = await cli.checkHealth()\n\n\t\tassert.isEqual(health.skill.status, 'passed')\n\t}\n\n\t@test()\n\tprotected static async canSkipFile() {\n\t\tconst { last, promise } = await this.installBreakAndUpgradeSkill()\n\n\t\tassert.doesInclude(last, {\n\t\t\t'options.options.choices[].value': FILE_ACTION_SKIP,\n\t\t})\n\n\t\tawait this.ui.sendInput(FILE_ACTION_SKIP)\n\n\t\tawait promise\n\n\t\tthis.assertSkillIsBroken()\n\t}\n\n\t@test()\n\tprotected static async canAlwaysSkipFiles() {\n\t\tconst { last, promise } = await this.installBreakAndUpgradeSkill()\n\n\t\tassert.doesInclude(last, {\n\t\t\t'options.options.choices[].value': FILE_ACTION_ALWAYS_SKIP,\n\t\t})\n\n\t\tawait this.ui.sendInput(FILE_ACTION_ALWAYS_SKIP)\n\n\t\tawait promise\n\n\t\tthis.assertSkillIsBroken()\n\n\t\tconst results = await this.Action('node', 'upgrade').execute({\n\t\t\tupgradeMode: 'askForChanged',\n\t\t})\n\n\t\tassert.isFalsy(results.errors)\n\n\t\tthis.assertSkillIsBroken()\n\t}\n\n\t@test()\n\tprotected static async upgradesUpdatesPackageScripts() {\n\t\tconst cli = await this.installSkill('schemas')\n\n\t\tconst pkgService = this.Service('pkg')\n\t\tpkgService.set({ path: 'scripts', value: {} })\n\n\t\tconst failedHealth = await cli.checkHealth()\n\n\t\tassert.doesInclude(failedHealth, {\n\t\t\t'skill.errors[].message': '\"health.local\" not found',\n\t\t})\n\n\t\tawait this.Action('node', 'upgrade').execute({})\n\n\t\tconst passedHealth = await cli.checkHealth()\n\t\tassert.isEqual(passedHealth.skill.status, 'passed')\n\t}\n\n\t@test(\n\t\t'Upgrades error.plugin (even if skill is broken)',\n\t\t'error.plugin.ts',\n\t\t'errors'\n\t)\n\t@test(\n\t\t'Upgrades schema.plugin (even if skill is broken)',\n\t\t'schema.plugin.ts',\n\t\t'schemas'\n\t)\n\t@test(\n\t\t'Upgrades conversation.plugin (even if skill is broken)',\n\t\t'conversation.plugin.ts',\n\t\t'conversation',\n\t\tfalse\n\t)\n\t@test(\n\t\t'Upgrades view.plugin (even if skill is broken)',\n\t\t'view.plugin.ts',\n\t\t'views',\n\t\tfalse\n\t)\n\tprotected static async upgradesPlugins(\n\t\tpluginName: string,\n\t\tcacheKey: string,\n\t\tshouldMockYarn = true\n\t) {\n\t\tawait this.FeatureFixture().installCachedFeatures(cacheKey)\n\n\t\tshouldMockYarn && CommandService.setMockResponse(/yarn/, { code: 0 })\n\n\t\tconst pluginPath = this.resolveHashSprucePath(`features/${pluginName}`)\n\t\tconst originalContents = diskUtil.readFile(pluginPath)\n\n\t\tdiskUtil.writeFile(pluginPath, 'aoeuaoeuaoeuaoeu')\n\n\t\tconst results = await this.Action('node', 'upgrade').execute({})\n\n\t\tassert.isFalsy(results.errors)\n\n\t\ttestUtil.assertFileByNameInGeneratedFiles(pluginName, results.files)\n\n\t\tconst updatedContents = diskUtil.readFile(pluginPath)\n\n\t\tassert.isEqual(updatedContents, originalContents)\n\n\t\tassert.doesInclude(results.summaryLines ?? [], 'successfully')\n\t}\n\n\t@test()\n\tprotected static async canSkipPackageScriptChanges() {\n\t\tawait this.FeatureFixture().installCachedFeatures('skills')\n\n\t\tconst pkg = this.Service('pkg')\n\t\tpkg.set({ path: ['scripts', 'build.dev'], value: 'taco' })\n\n\t\tconst promise = this.Action('node', 'upgrade').execute({})\n\n\t\tawait this.waitForInput()\n\n\t\tconst last = this.ui.lastInvocation()\n\n\t\tassert.isEqual(last.command, 'prompt')\n\t\tassert.doesInclude(last.options.options.choices, { value: 'skip' })\n\t\tassert.doesInclude(last.options.options.choices, { value: 'skipAll' })\n\t\tassert.doesInclude(last.options.options.choices, { value: 'overwrite' })\n\n\t\tawait this.ui.sendInput('skip')\n\n\t\tawait promise\n\n\t\tassert.isEqual(pkg.get(['scripts', 'build.dev']), 'taco')\n\t}\n\n\t@test()\n\tprotected static async asksForEachScriptChange() {\n\t\tawait this.FeatureFixture().installCachedFeatures('skills')\n\n\t\tconst pkg = this.Service('pkg')\n\t\tpkg.set({ path: ['scripts', 'build.dev'], value: 'taco' })\n\t\tpkg.set({ path: ['scripts', 'watch.build.dev'], value: 'taco' })\n\n\t\tconst promise = this.Action('node', 'upgrade').execute({})\n\n\t\tawait this.waitForInput()\n\n\t\tlet last = this.ui.lastInvocation()\n\n\t\tassert.isEqual(last.command, 'prompt')\n\t\tawait this.ui.sendInput('skip')\n\n\t\tawait this.waitForInput()\n\n\t\tlast = this.ui.lastInvocation()\n\n\t\tassert.isEqual(last.command, 'prompt')\n\t\tawait this.ui.sendInput('skip')\n\n\t\tawait promise\n\n\t\tassert.isEqual(pkg.get(['scripts', 'build.dev']), 'taco')\n\t\tassert.isEqual(pkg.get(['scripts', 'watch.build.dev']), 'taco')\n\t}\n\n\t@test()\n\tprotected static async canSkipAllScriptChanges() {\n\t\tawait this.FeatureFixture().installCachedFeatures('skills')\n\n\t\tconst pkg = this.Service('pkg')\n\t\tpkg.set({ path: ['scripts', 'build.dev'], value: 'taco' })\n\t\tpkg.set({ path: ['scripts', 'watch.build.dev'], value: 'taco' })\n\n\t\tconst promise = this.Action('node', 'upgrade').execute({})\n\n\t\tawait this.waitForInput()\n\n\t\tlet last = this.ui.lastInvocation()\n\n\t\tassert.isEqual(last.command, 'prompt')\n\t\tawait this.ui.sendInput('skipAll')\n\n\t\tawait promise\n\n\t\tassert.isEqual(pkg.get(['scripts', 'build.dev']), 'taco')\n\t\tassert.isEqual(pkg.get(['scripts', 'watch.build.dev']), 'taco')\n\t}\n\n\t@test()\n\tprotected static async canOverwriteChangedScript() {\n\t\tawait this.FeatureFixture().installCachedFeatures('skills')\n\n\t\tconst pkg = this.Service('pkg')\n\t\tpkg.set({ path: ['scripts', 'build.dev'], value: 'taco' })\n\n\t\tconst promise = this.Action('node', 'upgrade').execute({})\n\n\t\tawait this.waitForInput()\n\n\t\tlet last = this.ui.lastInvocation()\n\n\t\tassert.isEqual(last.command, 'prompt')\n\t\tawait this.ui.sendInput('overwrite')\n\n\t\tawait promise\n\n\t\tassert.isNotEqual(pkg.get(['scripts', 'build.dev']), 'taco')\n\t}\n\n\t@test()\n\tprotected static async upgradingSkillWithSandboxUpgradesTheListener() {\n\t\tawait this.FeatureFixture().installCachedFeatures('sandbox')\n\t\tconst results = await this.Action('sandbox', 'setup').execute({})\n\n\t\tconst match = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t/will-boot/,\n\t\t\tresults.files\n\t\t)\n\n\t\tconst originalContents = diskUtil.readFile(match)\n\t\tdiskUtil.writeFile(match, 'broken')\n\n\t\tCommandService.setMockResponse(/yarn/, { code: 0 })\n\n\t\tawait this.Action('node', 'upgrade').execute({})\n\n\t\tconst newContents = diskUtil.readFile(match)\n\t\tassert.isEqual(originalContents, newContents)\n\t}\n\n\tprivate static clearFileIfAboutToBeUpdated(\n\t\tfile: {\n\t\t\tname: string\n\t\t\tpath: string\n\t\t\tforceEverythingAction: GeneratedFile['action']\n\t\t\tforceRequiredSkipRestAction: GeneratedFile['action']\n\t\t},\n\t\tupgradeMode: string\n\t) {\n\t\t//@ts-ignore\n\t\tif (file[`${upgradeMode}Action`] === 'updated') {\n\t\t\tdiskUtil.writeFile(this.resolvePath(file.path), '')\n\t\t}\n\t}\n\n\tprivate static async installAndBreakSkill(cacheKey: string) {\n\t\tconst cli = await this.installSkill(cacheKey)\n\t\tconst indexFile = this.resolvePath('src/index.ts')\n\t\tdiskUtil.writeFile(indexFile, BROKEN_SKILL_INDEX_CONTENTS)\n\t\tawait this.assertFailedHealthCheck(cli)\n\n\t\treturn cli\n\t}\n\n\tprivate static async installSkill(cacheKey: string) {\n\t\tconst fixture = this.FeatureFixture()\n\t\tconst cli = await fixture.installFeatures(\n\t\t\t[\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],\n\t\t\tcacheKey\n\t\t)\n\t\treturn cli\n\t}\n\n\tprivate static async assertFailedHealthCheck(cli: CliInterface) {\n\t\tconst failedHealthCheck = await cli.checkHealth()\n\n\t\tassert.doesInclude(failedHealthCheck, {\n\t\t\t'skill.errors[].message': 'cheese',\n\t\t})\n\t}\n\n\tprotected static assertSandboxListenerNotWritten() {\n\t\tconst listeners = this.resolvePath('src', 'listeners')\n\t\tif (!diskUtil.doesDirExist(listeners)) {\n\t\t\treturn\n\t\t}\n\t\tconst matches = fsUtil.readdirSync(listeners)\n\t\tassert.isLength(\n\t\t\tmatches,\n\t\t\t0,\n\t\t\t'A sandbox listeners was written and it should not have been.'\n\t\t)\n\t}\n\n\tprivate static async installBreakAndUpgradeSkill() {\n\t\tawait this.installAndBreakSkill('skills')\n\n\t\tconst promise = this.Action('node', 'upgrade').execute({\n\t\t\tupgradeMode: 'askForChanged',\n\t\t})\n\n\t\tawait this.waitForInput()\n\n\t\tconst last = this.ui.lastInvocation()\n\t\treturn { last, promise }\n\t}\n\n\tprivate static assertSkillIsBroken() {\n\t\tconst indexFile = this.resolvePath('src/index.ts')\n\t\tconst contents = diskUtil.readFile(indexFile)\n\t\tassert.isEqual(contents, BROKEN_SKILL_INDEX_CONTENTS)\n\t}\n}\n"],"file":"UpgradingASkill.test.js"}
@@ -3,6 +3,9 @@ export default class UpgradingASkill4Test extends AbstractCliTest {
3
3
  protected static upgradeResetsEventCache(): Promise<void>;
4
4
  protected static doesNotResetEventCacheWithOtherAction(): Promise<void>;
5
5
  protected static shouldSyncSchemasIfSchemasIsInstalledAndSchemaFolderExists(shouldCreateSchema: boolean): Promise<void>;
6
+ protected static modulesMovedFromDevToProdDependenciesStayThere(): Promise<void>;
7
+ private static moveDependencyToDev;
8
+ private static moveDependencyToProd;
6
9
  private static installSetListenerCacheAndBlockExecute;
7
10
  private static Settings;
8
11
  }
@@ -29,13 +29,13 @@ var _CommandService = _interopRequireDefault(require("../../../services/CommandS
29
29
 
30
30
  var _AbstractCliTest2 = _interopRequireDefault(require("../../../tests/AbstractCliTest"));
31
31
 
32
- var _dec, _dec2, _dec3, _dec4, _class;
32
+ var _dec, _dec2, _dec3, _dec4, _dec5, _class;
33
33
 
34
34
  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); }; }
35
35
 
36
36
  function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
37
37
 
38
- var UpgradingASkill4Test = (_dec = (0, _test.test)(), _dec2 = (0, _test.test)(), _dec3 = (0, _test.test)('syncs schemas when schemas installed and schemas folder exists', true), _dec4 = (0, _test.test)('does not syncs schemas when schemas installed but schemas folder does not exist', false), (_class = /*#__PURE__*/function (_AbstractCliTest) {
38
+ var UpgradingASkill4Test = (_dec = (0, _test.test)(), _dec2 = (0, _test.test)(), _dec3 = (0, _test.test)('syncs schemas when schemas installed and schemas folder exists', true), _dec4 = (0, _test.test)('does not syncs schemas when schemas installed but schemas folder does not exist', false), _dec5 = (0, _test.test)(), (_class = /*#__PURE__*/function (_AbstractCliTest) {
39
39
  (0, _inherits2["default"])(UpgradingASkill4Test, _AbstractCliTest);
40
40
 
41
41
  var _super = _createSuper(UpgradingASkill4Test);
@@ -189,15 +189,136 @@ var UpgradingASkill4Test = (_dec = (0, _test.test)(), _dec2 = (0, _test.test)(),
189
189
  return shouldSyncSchemasIfSchemasIsInstalledAndSchemaFolderExists;
190
190
  }()
191
191
  }, {
192
- key: "installSetListenerCacheAndBlockExecute",
192
+ key: "modulesMovedFromDevToProdDependenciesStayThere",
193
193
  value: function () {
194
- var _installSetListenerCacheAndBlockExecute = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4() {
195
- var settings, emitter;
194
+ var _modulesMovedFromDevToProdDependenciesStayThere = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4() {
195
+ var wasMovedBackToDev, wasMovedBackToProd;
196
196
  return _regenerator["default"].wrap(function _callee4$(_context4) {
197
197
  while (1) {
198
198
  switch (_context4.prev = _context4.next) {
199
199
  case 0:
200
200
  _context4.next = 2;
201
+ return this.FeatureFixture().installCachedFeatures('skills');
202
+
203
+ case 2:
204
+ _context4.next = 4;
205
+ return this.moveDependencyToProd('@sprucelabs/resolve-path-aliases');
206
+
207
+ case 4:
208
+ _context4.next = 6;
209
+ return this.moveDependencyToDev('@sprucelabs/error');
210
+
211
+ case 6:
212
+ wasMovedBackToDev = false;
213
+ wasMovedBackToProd = false;
214
+
215
+ _CommandService["default"].setMockResponse(new RegExp(/yarn/gi), {
216
+ code: 0,
217
+ callback: function callback(_, args) {
218
+ if (args.indexOf('-D') > -1 && args.indexOf('@sprucelabs/resolve-path-aliases') > -1) {
219
+ wasMovedBackToDev = true;
220
+ } else if (args.indexOf('-D') === -1 && args.indexOf('@sprucelabs/error') > -1) {
221
+ wasMovedBackToProd = true;
222
+ }
223
+ }
224
+ });
225
+
226
+ _context4.next = 11;
227
+ return this.Action('node', 'upgrade').execute({});
228
+
229
+ case 11:
230
+ _test.assert.isFalse(wasMovedBackToDev, 'dependency moved back to dev');
231
+
232
+ _test.assert.isFalse(wasMovedBackToProd, 'dependency moved back to prod');
233
+
234
+ case 13:
235
+ case "end":
236
+ return _context4.stop();
237
+ }
238
+ }
239
+ }, _callee4, this);
240
+ }));
241
+
242
+ function modulesMovedFromDevToProdDependenciesStayThere() {
243
+ return _modulesMovedFromDevToProdDependenciesStayThere.apply(this, arguments);
244
+ }
245
+
246
+ return modulesMovedFromDevToProdDependenciesStayThere;
247
+ }()
248
+ }, {
249
+ key: "moveDependencyToDev",
250
+ value: function () {
251
+ var _moveDependencyToDev = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee5(name) {
252
+ var pkg;
253
+ return _regenerator["default"].wrap(function _callee5$(_context5) {
254
+ while (1) {
255
+ switch (_context5.prev = _context5.next) {
256
+ case 0:
257
+ pkg = this.Service('pkg');
258
+ _context5.next = 3;
259
+ return pkg.uninstall(name);
260
+
261
+ case 3:
262
+ _context5.next = 5;
263
+ return pkg.install(name, {
264
+ isDev: true
265
+ });
266
+
267
+ case 5:
268
+ case "end":
269
+ return _context5.stop();
270
+ }
271
+ }
272
+ }, _callee5, this);
273
+ }));
274
+
275
+ function moveDependencyToDev(_x2) {
276
+ return _moveDependencyToDev.apply(this, arguments);
277
+ }
278
+
279
+ return moveDependencyToDev;
280
+ }()
281
+ }, {
282
+ key: "moveDependencyToProd",
283
+ value: function () {
284
+ var _moveDependencyToProd = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee6(name) {
285
+ var pkg;
286
+ return _regenerator["default"].wrap(function _callee6$(_context6) {
287
+ while (1) {
288
+ switch (_context6.prev = _context6.next) {
289
+ case 0:
290
+ pkg = this.Service('pkg');
291
+ _context6.next = 3;
292
+ return pkg.uninstall(name);
293
+
294
+ case 3:
295
+ _context6.next = 5;
296
+ return pkg.install(name);
297
+
298
+ case 5:
299
+ case "end":
300
+ return _context6.stop();
301
+ }
302
+ }
303
+ }, _callee6, this);
304
+ }));
305
+
306
+ function moveDependencyToProd(_x3) {
307
+ return _moveDependencyToProd.apply(this, arguments);
308
+ }
309
+
310
+ return moveDependencyToProd;
311
+ }()
312
+ }, {
313
+ key: "installSetListenerCacheAndBlockExecute",
314
+ value: function () {
315
+ var _installSetListenerCacheAndBlockExecute = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee7() {
316
+ var settings, emitter;
317
+ return _regenerator["default"].wrap(function _callee7$(_context7) {
318
+ while (1) {
319
+ switch (_context7.prev = _context7.next) {
320
+ case 0:
321
+ _context7.next = 2;
201
322
  return this.FeatureFixture().installCachedFeatures('events');
202
323
 
203
324
  case 2:
@@ -212,10 +333,10 @@ var UpgradingASkill4Test = (_dec = (0, _test.test)(), _dec2 = (0, _test.test)(),
212
333
 
213
334
  case 6:
214
335
  case "end":
215
- return _context4.stop();
336
+ return _context7.stop();
216
337
  }
217
338
  }
218
- }, _callee4, this);
339
+ }, _callee7, this);
219
340
  }));
220
341
 
221
342
  function installSetListenerCacheAndBlockExecute() {
@@ -231,6 +352,6 @@ var UpgradingASkill4Test = (_dec = (0, _test.test)(), _dec2 = (0, _test.test)(),
231
352
  }
232
353
  }]);
233
354
  return UpgradingASkill4Test;
234
- }(_AbstractCliTest2["default"]), ((0, _applyDecoratedDescriptor2["default"])(_class, "upgradeResetsEventCache", [_dec], Object.getOwnPropertyDescriptor(_class, "upgradeResetsEventCache"), _class), (0, _applyDecoratedDescriptor2["default"])(_class, "doesNotResetEventCacheWithOtherAction", [_dec2], Object.getOwnPropertyDescriptor(_class, "doesNotResetEventCacheWithOtherAction"), _class), (0, _applyDecoratedDescriptor2["default"])(_class, "shouldSyncSchemasIfSchemasIsInstalledAndSchemaFolderExists", [_dec3, _dec4], Object.getOwnPropertyDescriptor(_class, "shouldSyncSchemasIfSchemasIsInstalledAndSchemaFolderExists"), _class)), _class));
355
+ }(_AbstractCliTest2["default"]), ((0, _applyDecoratedDescriptor2["default"])(_class, "upgradeResetsEventCache", [_dec], Object.getOwnPropertyDescriptor(_class, "upgradeResetsEventCache"), _class), (0, _applyDecoratedDescriptor2["default"])(_class, "doesNotResetEventCacheWithOtherAction", [_dec2], Object.getOwnPropertyDescriptor(_class, "doesNotResetEventCacheWithOtherAction"), _class), (0, _applyDecoratedDescriptor2["default"])(_class, "shouldSyncSchemasIfSchemasIsInstalledAndSchemaFolderExists", [_dec3, _dec4], Object.getOwnPropertyDescriptor(_class, "shouldSyncSchemasIfSchemasIsInstalledAndSchemaFolderExists"), _class), (0, _applyDecoratedDescriptor2["default"])(_class, "modulesMovedFromDevToProdDependenciesStayThere", [_dec5], Object.getOwnPropertyDescriptor(_class, "modulesMovedFromDevToProdDependenciesStayThere"), _class)), _class));
235
356
  exports["default"] = UpgradingASkill4Test;
236
357
  //# sourceMappingURL=UpgradingASkill4.test.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/__tests__/behavioral/skill/UpgradingASkill4.test.ts"],"names":["UpgradingASkill4Test","installSetListenerCacheAndBlockExecute","assert","doesThrowAsync","Action","execute","value","Settings","getListenerCache","isFalsy","isEqualDeep","shouldBeDeleted","shouldCreateSchema","FeatureFixture","installCachedFeatures","CommandService","setMockResponse","RegExp","code","nameReadable","namePascal","nameCamel","description","emitter","getEmitter","wasHit","on","payload","featureCode","actionCode","isTrue","settings","setListenerCache","Error","Service","AbstractCliTest"],"mappings":"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","sourcesContent":["import { test, assert } from '@sprucelabs/test'\nimport CommandService from '../../../services/CommandService'\nimport AbstractCliTest from '../../../tests/AbstractCliTest'\n\nexport default class UpgradingASkill4Test extends AbstractCliTest {\n\t@test()\n\tprotected static async upgradeResetsEventCache() {\n\t\tawait this.installSetListenerCacheAndBlockExecute()\n\n\t\tawait assert.doesThrowAsync(() =>\n\t\t\tthis.Action('node', 'upgrade').execute({})\n\t\t)\n\n\t\tconst value = this.Settings().getListenerCache()\n\t\tassert.isFalsy(value)\n\t}\n\n\t@test()\n\tprotected static async doesNotResetEventCacheWithOtherAction() {\n\t\tawait this.installSetListenerCacheAndBlockExecute()\n\n\t\tawait assert.doesThrowAsync(() => this.Action('schema', 'sync').execute({}))\n\n\t\tconst value = this.Settings().getListenerCache()\n\t\tassert.isEqualDeep(value, { shouldBeDeleted: true })\n\t}\n\n\t@test('syncs schemas when schemas installed and schemas folder exists', true)\n\t@test(\n\t\t'does not syncs schemas when schemas installed but schemas folder does not exist',\n\t\tfalse\n\t)\n\tprotected static async shouldSyncSchemasIfSchemasIsInstalledAndSchemaFolderExists(\n\t\tshouldCreateSchema: boolean\n\t) {\n\t\tawait this.FeatureFixture().installCachedFeatures('schemas')\n\n\t\tCommandService.setMockResponse(new RegExp(/yarn/gis), {\n\t\t\tcode: 0,\n\t\t})\n\n\t\tif (shouldCreateSchema) {\n\t\t\tawait this.Action('schema', 'create').execute({\n\t\t\t\tnameReadable: 'Test schema!',\n\t\t\t\tnamePascal: 'AnotherTest',\n\t\t\t\tnameCamel: 'anotherTest',\n\t\t\t\tdescription: 'this is so great!',\n\t\t\t})\n\t\t}\n\n\t\tconst emitter = this.getEmitter()\n\n\t\tlet wasHit = false\n\n\t\tawait emitter.on('feature.will-execute', (payload) => {\n\t\t\tif (payload.featureCode === 'schema' && payload.actionCode === 'sync') {\n\t\t\t\twasHit = true\n\t\t\t}\n\n\t\t\treturn {}\n\t\t})\n\n\t\tawait this.Action('node', 'upgrade').execute({})\n\n\t\tassert.isTrue(wasHit === shouldCreateSchema)\n\t}\n\n\tprivate static async installSetListenerCacheAndBlockExecute() {\n\t\tawait this.FeatureFixture().installCachedFeatures('events')\n\n\t\tconst settings = this.Settings()\n\t\tsettings.setListenerCache({ shouldBeDeleted: true })\n\n\t\tconst emitter = this.getEmitter()\n\t\tvoid emitter.on('feature.will-execute', () => {\n\t\t\tthrow new Error('Stop!')\n\t\t})\n\t}\n\n\tprivate static Settings() {\n\t\treturn this.Service('eventSettings')\n\t}\n}\n"],"file":"UpgradingASkill4.test.js"}
1
+ {"version":3,"sources":["../../../../src/__tests__/behavioral/skill/UpgradingASkill4.test.ts"],"names":["UpgradingASkill4Test","installSetListenerCacheAndBlockExecute","assert","doesThrowAsync","Action","execute","value","Settings","getListenerCache","isFalsy","isEqualDeep","shouldBeDeleted","shouldCreateSchema","FeatureFixture","installCachedFeatures","CommandService","setMockResponse","RegExp","code","nameReadable","namePascal","nameCamel","description","emitter","getEmitter","wasHit","on","payload","featureCode","actionCode","isTrue","moveDependencyToProd","moveDependencyToDev","wasMovedBackToDev","wasMovedBackToProd","callback","_","args","indexOf","isFalse","name","pkg","Service","uninstall","install","isDev","settings","setListenerCache","Error","AbstractCliTest"],"mappings":"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","sourcesContent":["import { test, assert } from '@sprucelabs/test'\nimport CommandService from '../../../services/CommandService'\nimport AbstractCliTest from '../../../tests/AbstractCliTest'\n\nexport default class UpgradingASkill4Test extends AbstractCliTest {\n\t@test()\n\tprotected static async upgradeResetsEventCache() {\n\t\tawait this.installSetListenerCacheAndBlockExecute()\n\n\t\tawait assert.doesThrowAsync(() =>\n\t\t\tthis.Action('node', 'upgrade').execute({})\n\t\t)\n\n\t\tconst value = this.Settings().getListenerCache()\n\t\tassert.isFalsy(value)\n\t}\n\n\t@test()\n\tprotected static async doesNotResetEventCacheWithOtherAction() {\n\t\tawait this.installSetListenerCacheAndBlockExecute()\n\n\t\tawait assert.doesThrowAsync(() => this.Action('schema', 'sync').execute({}))\n\n\t\tconst value = this.Settings().getListenerCache()\n\t\tassert.isEqualDeep(value, { shouldBeDeleted: true })\n\t}\n\n\t@test('syncs schemas when schemas installed and schemas folder exists', true)\n\t@test(\n\t\t'does not syncs schemas when schemas installed but schemas folder does not exist',\n\t\tfalse\n\t)\n\tprotected static async shouldSyncSchemasIfSchemasIsInstalledAndSchemaFolderExists(\n\t\tshouldCreateSchema: boolean\n\t) {\n\t\tawait this.FeatureFixture().installCachedFeatures('schemas')\n\n\t\tCommandService.setMockResponse(new RegExp(/yarn/gis), {\n\t\t\tcode: 0,\n\t\t})\n\n\t\tif (shouldCreateSchema) {\n\t\t\tawait this.Action('schema', 'create').execute({\n\t\t\t\tnameReadable: 'Test schema!',\n\t\t\t\tnamePascal: 'AnotherTest',\n\t\t\t\tnameCamel: 'anotherTest',\n\t\t\t\tdescription: 'this is so great!',\n\t\t\t})\n\t\t}\n\n\t\tconst emitter = this.getEmitter()\n\n\t\tlet wasHit = false\n\n\t\tawait emitter.on('feature.will-execute', (payload) => {\n\t\t\tif (payload.featureCode === 'schema' && payload.actionCode === 'sync') {\n\t\t\t\twasHit = true\n\t\t\t}\n\n\t\t\treturn {}\n\t\t})\n\n\t\tawait this.Action('node', 'upgrade').execute({})\n\n\t\tassert.isTrue(wasHit === shouldCreateSchema)\n\t}\n\n\t@test()\n\tprotected static async modulesMovedFromDevToProdDependenciesStayThere() {\n\t\tawait this.FeatureFixture().installCachedFeatures('skills')\n\n\t\tawait this.moveDependencyToProd('@sprucelabs/resolve-path-aliases')\n\t\tawait this.moveDependencyToDev('@sprucelabs/error')\n\n\t\tlet wasMovedBackToDev = false\n\t\tlet wasMovedBackToProd = false\n\n\t\tCommandService.setMockResponse(new RegExp(/yarn/gis), {\n\t\t\tcode: 0,\n\t\t\tcallback: (_, args) => {\n\t\t\t\tif (\n\t\t\t\t\targs.indexOf('-D') > -1 &&\n\t\t\t\t\targs.indexOf('@sprucelabs/resolve-path-aliases') > -1\n\t\t\t\t) {\n\t\t\t\t\twasMovedBackToDev = true\n\t\t\t\t} else if (\n\t\t\t\t\targs.indexOf('-D') === -1 &&\n\t\t\t\t\targs.indexOf('@sprucelabs/error') > -1\n\t\t\t\t) {\n\t\t\t\t\twasMovedBackToProd = true\n\t\t\t\t}\n\t\t\t},\n\t\t})\n\n\t\tawait this.Action('node', 'upgrade').execute({})\n\n\t\tassert.isFalse(wasMovedBackToDev, 'dependency moved back to dev')\n\t\tassert.isFalse(wasMovedBackToProd, 'dependency moved back to prod')\n\t}\n\n\tprivate static async moveDependencyToDev(name: string) {\n\t\tconst pkg = this.Service('pkg')\n\t\tawait pkg.uninstall(name)\n\t\tawait pkg.install(name, { isDev: true })\n\t}\n\tprivate static async moveDependencyToProd(name: string) {\n\t\tconst pkg = this.Service('pkg')\n\n\t\tawait pkg.uninstall(name)\n\t\tawait pkg.install(name)\n\t}\n\n\tprivate static async installSetListenerCacheAndBlockExecute() {\n\t\tawait this.FeatureFixture().installCachedFeatures('events')\n\n\t\tconst settings = this.Settings()\n\t\tsettings.setListenerCache({ shouldBeDeleted: true })\n\n\t\tconst emitter = this.getEmitter()\n\t\tvoid emitter.on('feature.will-execute', () => {\n\t\t\tthrow new Error('Stop!')\n\t\t})\n\t}\n\n\tprivate static Settings() {\n\t\treturn this.Service('eventSettings')\n\t}\n}\n"],"file":"UpgradingASkill4.test.js"}
@@ -17,5 +17,6 @@ export default class CreatingASkillViewTest extends AbstractSkillTest {
17
17
  protected static skillViewExtendsAbstractViewControllerWithProperView(): void;
18
18
  protected static nicelyTypesRootSkillViewController(): Promise<void>;
19
19
  protected static nicelyTypesViewController(): Promise<void>;
20
+ protected static typesViewControllerOptions(): Promise<void>;
20
21
  private static buildTestfile;
21
22
  }