@sprucelabs/spruce-cli 14.26.18 → 14.28.1

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 (118) hide show
  1. package/CHANGELOG.md +38 -0
  2. package/build/.spruce/errors/errors.types.d.ts +19 -0
  3. package/build/.spruce/errors/options.types.d.ts +4 -1
  4. package/build/.spruce/errors/spruceCli/dependencyExists.schema.d.ts +3 -0
  5. package/build/.spruce/errors/spruceCli/dependencyExists.schema.js +28 -0
  6. package/build/.spruce/errors/spruceCli/dependencyExists.schema.js.map +1 -0
  7. package/build/__tests__/behavioral/AddingADependency.test.d.ts +6 -3
  8. package/build/__tests__/behavioral/AddingADependency.test.js +116 -44
  9. package/build/__tests__/behavioral/AddingADependency.test.js.map +1 -1
  10. package/build/__tests__/behavioral/InstallingASkillAtAnOrg.test.js +2 -2
  11. package/build/__tests__/behavioral/InstallingASkillAtAnOrg.test.js.map +1 -1
  12. package/build/__tests__/behavioral/LoggingInAsASkill.test.js +4 -4
  13. package/build/__tests__/behavioral/LoggingInAsASkill.test.js.map +1 -1
  14. package/build/__tests__/behavioral/ManagingDependencies.test.js +3 -3
  15. package/build/__tests__/behavioral/ManagingDependencies.test.js.map +1 -1
  16. package/build/__tests__/behavioral/RememberingUpgradeSelections.test.js +1 -1
  17. package/build/__tests__/behavioral/RememberingUpgradeSelections.test.js.map +1 -1
  18. package/build/__tests__/behavioral/SettingRemote.test.js +1 -1
  19. package/build/__tests__/behavioral/SettingRemote.test.js.map +1 -1
  20. package/build/__tests__/behavioral/SettingUpVscode.test.js +3 -3
  21. package/build/__tests__/behavioral/SettingUpVscode.test.js.map +1 -1
  22. package/build/__tests__/behavioral/TestingDataStores.test.js +2 -2
  23. package/build/__tests__/behavioral/TestingDataStores.test.js.map +1 -1
  24. package/build/__tests__/behavioral/UpgradingANodeModule.test.d.ts +1 -0
  25. package/build/__tests__/behavioral/UpgradingANodeModule.test.js +50 -3
  26. package/build/__tests__/behavioral/UpgradingANodeModule.test.js.map +1 -1
  27. package/build/__tests__/behavioral/events/CreatingAListener.test.js +2 -2
  28. package/build/__tests__/behavioral/events/CreatingAListener.test.js.map +1 -1
  29. package/build/__tests__/behavioral/events/CreatingAnEvent.test.d.ts +3 -2
  30. package/build/__tests__/behavioral/events/CreatingAnEvent.test.js +156 -106
  31. package/build/__tests__/behavioral/events/CreatingAnEvent.test.js.map +1 -1
  32. package/build/__tests__/behavioral/events/KeepingEventsInSync2.test.js +6 -9
  33. package/build/__tests__/behavioral/events/KeepingEventsInSync2.test.js.map +1 -1
  34. package/build/__tests__/behavioral/schemas/KeepingSchemasInSync.test.js +7 -4
  35. package/build/__tests__/behavioral/schemas/KeepingSchemasInSync.test.js.map +1 -1
  36. package/build/__tests__/behavioral/skill/UpgradingASkill.test.js +7 -7
  37. package/build/__tests__/behavioral/skill/UpgradingASkill.test.js.map +1 -1
  38. package/build/__tests__/behavioral/skill/UpgradingASkill3.test.js +2 -2
  39. package/build/__tests__/behavioral/skill/UpgradingASkill3.test.js.map +1 -1
  40. package/build/__tests__/behavioral/tests/SelectingAnAbstractTestClass.test.js +1 -1
  41. package/build/__tests__/behavioral/tests/SelectingAnAbstractTestClass.test.js.map +1 -1
  42. package/build/__tests__/behavioral/views/CreatingASkillView.test.js +3 -3
  43. package/build/__tests__/behavioral/views/CreatingASkillView.test.js.map +1 -1
  44. package/build/__tests__/behavioral/views/TestingViewControllers.test.js +2 -2
  45. package/build/__tests__/behavioral/views/TestingViewControllers.test.js.map +1 -1
  46. package/build/__tests__/implementation/ActionExecuter2.test.js +3 -3
  47. package/build/__tests__/implementation/ActionExecuter2.test.js.map +1 -1
  48. package/build/errors/SpruceError.js +4 -0
  49. package/build/errors/SpruceError.js.map +1 -1
  50. package/build/errors/dependencyExists.builder.d.ts +11 -0
  51. package/build/errors/dependencyExists.builder.js +22 -0
  52. package/build/errors/dependencyExists.builder.js.map +1 -0
  53. package/build/features/AbstractAction.js +1 -1
  54. package/build/features/AbstractAction.js.map +1 -1
  55. package/build/features/dependencies/actions/AddAction.js +22 -15
  56. package/build/features/dependencies/actions/AddAction.js.map +1 -1
  57. package/build/features/event/actions/CreateAction.js +1 -1
  58. package/build/features/event/actions/CreateAction.js.map +1 -1
  59. package/build/features/node/NodeFeature.d.ts +1 -0
  60. package/build/features/node/NodeFeature.js +83 -64
  61. package/build/features/node/NodeFeature.js.map +1 -1
  62. package/build/features/node/actions/UpgradeAction.js +20 -9
  63. package/build/features/node/actions/UpgradeAction.js.map +1 -1
  64. package/build/features/node/writers/NodeWriter.d.ts +5 -2
  65. package/build/features/node/writers/NodeWriter.js +37 -22
  66. package/build/features/node/writers/NodeWriter.js.map +1 -1
  67. package/build/features/skill/updaters/Updater.js +3 -1
  68. package/build/features/skill/updaters/Updater.js.map +1 -1
  69. package/build/interfaces/SpyInterface.d.ts +1 -1
  70. package/build/interfaces/SpyInterface.js +2 -2
  71. package/build/interfaces/SpyInterface.js.map +1 -1
  72. package/build/services/DependencyService.d.ts +1 -0
  73. package/build/services/DependencyService.js +18 -0
  74. package/build/services/DependencyService.js.map +1 -1
  75. package/build/tests/AbstractCliTest.js +1 -1
  76. package/build/tests/AbstractCliTest.js.map +1 -1
  77. package/build/tests/utilities/uiAssert.utility.d.ts +7 -0
  78. package/build/tests/utilities/uiAssert.utility.js +85 -0
  79. package/build/tests/utilities/uiAssert.utility.js.map +1 -0
  80. package/build/writers/AbstractWriter.d.ts +10 -10
  81. package/build/writers/AbstractWriter.js.map +1 -1
  82. package/package.json +34 -32
  83. package/src/.spruce/errors/errors.types.ts +29 -0
  84. package/src/.spruce/errors/options.types.ts +4 -1
  85. package/src/.spruce/errors/spruceCli/dependencyExists.schema.ts +22 -0
  86. package/src/__tests__/behavioral/AddingADependency.test.ts +45 -8
  87. package/src/__tests__/behavioral/InstallingASkillAtAnOrg.test.ts +3 -3
  88. package/src/__tests__/behavioral/LoggingInAsASkill.test.ts +4 -4
  89. package/src/__tests__/behavioral/ManagingDependencies.test.ts +3 -3
  90. package/src/__tests__/behavioral/RememberingUpgradeSelections.test.ts +1 -1
  91. package/src/__tests__/behavioral/SettingRemote.test.ts +1 -1
  92. package/src/__tests__/behavioral/SettingUpVscode.test.ts +3 -3
  93. package/src/__tests__/behavioral/TestingDataStores.test.ts +2 -2
  94. package/src/__tests__/behavioral/UpgradingANodeModule.test.ts +24 -0
  95. package/src/__tests__/behavioral/events/CreatingAListener.test.ts +2 -2
  96. package/src/__tests__/behavioral/events/CreatingAnEvent.test.ts +44 -22
  97. package/src/__tests__/behavioral/events/KeepingEventsInSync2.test.ts +1 -1
  98. package/src/__tests__/behavioral/schemas/KeepingSchemasInSync.test.ts +2 -0
  99. package/src/__tests__/behavioral/skill/UpgradingASkill.test.ts +7 -7
  100. package/src/__tests__/behavioral/skill/UpgradingASkill3.test.ts +2 -2
  101. package/src/__tests__/behavioral/tests/SelectingAnAbstractTestClass.test.ts +1 -1
  102. package/src/__tests__/behavioral/views/CreatingASkillView.test.ts +3 -3
  103. package/src/__tests__/behavioral/views/TestingViewControllers.test.ts +2 -2
  104. package/src/__tests__/implementation/ActionExecuter2.test.ts +3 -3
  105. package/src/errors/SpruceError.ts +4 -0
  106. package/src/errors/dependencyExists.builder.ts +12 -0
  107. package/src/features/AbstractAction.ts +1 -4
  108. package/src/features/dependencies/actions/AddAction.ts +12 -5
  109. package/src/features/event/actions/CreateAction.ts +4 -1
  110. package/src/features/node/NodeFeature.ts +31 -25
  111. package/src/features/node/actions/UpgradeAction.ts +8 -1
  112. package/src/features/node/writers/NodeWriter.ts +38 -23
  113. package/src/features/skill/updaters/Updater.ts +2 -1
  114. package/src/interfaces/SpyInterface.ts +1 -1
  115. package/src/services/DependencyService.ts +14 -0
  116. package/src/tests/AbstractCliTest.ts +1 -1
  117. package/src/tests/utilities/uiAssert.utility.ts +45 -0
  118. package/src/writers/AbstractWriter.ts +15 -10
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/__tests__/behavioral/events/KeepingEventsInSync2.test.ts"],"names":["EVENT_NAME_READABLE","EVENT_NAME","EVENT_CAMEL","KeepingEventsInSyncTest","test","skip","versionUtil","generateVersion","FeatureFixture","installCachedFeatures","syncCoreEventsPretendingToBeMercuryTypes","Action","execute","results","match","testUtil","assertFileByNameInGeneratedFiles","files","assert","isTrue","diskUtil","doesFileExist","getMercuryFixture","connectToApi","shouldAuthAsCurrentSkill","client","disconnect","results2","isTruthy","errors","doesThrow","assertCorePayloadSchemasAreCreated","cli","isFalsy","Service","build","checkHealth","isRunningLocally","health","skill","event","isEqual","status","contracts","isAbove","length","seedDummySkillRegisterCurrentSkillAndInstallToOrg","skillFixture","skill2","eventName","todaysVersion","constValue","fqen","slug","registerEventContract","eventSignatures","emitPayloadSchema","targetSchema","eventTargetSchema","payloadSchema","id","fields","onlyField","type","responsePayloadSchema","emitPermissionContract","name","permissions","defaults","guest","listenPermissionContract","add","namespace","dirValue","doesInclude","namesUtil","toCamel","pathUtil","sep","importDefault","contract","sig","eventContractUtil","getSignatureByName","payload","options","schema","orgFixture","org","seedDemoSkill","skill3","installSkillAtOrganization","set","check","eventName2","randomVersion","seedSkillsAndRegisterAndSyncEvents","syncResults","contractFileName","assertValidActionResponseFiles","unRegisterEvents","shouldUnregisterAll","eventContract","isFalse","dirname","doesDirExist","registerCurrentSkillAndInstallToOrg","nameReadable","nameKebab","nameCamel","file","perms","writeFile","contractFile","Object","keys","shouldSyncOnlyCoreEvents","eventBuilderFile","skillEventContractTypesFile","builder","resolvePath","uninstall","signature","registerEventAndSync","filename","getSkillFixture","stamp","Date","getTime","version","shouldHaveWritten","filesToCheck","path","MERCURY_API_NAMESPACE","assertFilesWereGenerated","expected","resolveHashSprucePath","doesExist","AbstractEventTest"],"mappings":"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","sourcesContent":["import pathUtil from 'path'\nimport {\n\tbuildPermissionContract,\n\tEventContract,\n\tEventSignature,\n} from '@sprucelabs/mercury-types'\nimport {\n\tbuildEmitTargetAndPayloadSchema,\n\teventContractUtil,\n\teventTargetSchema,\n} from '@sprucelabs/spruce-event-utils'\nimport {\n\tdiskUtil,\n\tMERCURY_API_NAMESPACE,\n\tnamesUtil,\n\tversionUtil,\n} from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test'\nimport { generateEventContractFileName } from '../../../features/event/writers/EventWriter'\nimport { FeatureActionResponse } from '../../../features/features.types'\nimport AbstractEventTest from '../../../tests/AbstractEventTest'\nimport testUtil from '../../../tests/utilities/test.utility'\nimport { RegisteredSkill } from '../../../types/cli.types'\n\nconst EVENT_NAME_READABLE = 'my permission amazing event'\nconst EVENT_NAME = 'my-permission-amazing-event'\nconst EVENT_CAMEL = 'myPermissionAmazingEvent'\n\nexport default class KeepingEventsInSyncTest extends AbstractEventTest {\n\tprivate static randomVersion = 'v2020_01_01'\n\n\tprivate static get todaysVersion() {\n\t\treturn versionUtil.generateVersion()\n\t}\n\n\t@test.skip('find how to simulate connection errors')\n\tprotected static async syncingSchemasWithDisconnectedStopsWithError() {\n\t\tawait this.FeatureFixture().installCachedFeatures('events')\n\n\t\tawait this.syncCoreEventsPretendingToBeMercuryTypes()\n\n\t\tconst results = await this.Action('schema', 'sync').execute({})\n\n\t\tconst match = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'sendMessageEmitPayload.schema.ts',\n\t\t\tresults.files\n\t\t)\n\n\t\tassert.isTrue(diskUtil.doesFileExist(match))\n\n\t\tconst client = await this.getMercuryFixture().connectToApi({\n\t\t\tshouldAuthAsCurrentSkill: true,\n\t\t})\n\n\t\tawait client.disconnect()\n\n\t\tconst results2 = await this.Action('schema', 'sync').execute({})\n\n\t\tassert.isTruthy(results2.errors)\n\n\t\tassert.isTrue(diskUtil.doesFileExist(match))\n\t}\n\n\t@test()\n\tprotected static async syncingSchemasDoesNotSyncEventSchemasIfEventsNotInstalled() {\n\t\tawait this.FeatureFixture().installCachedFeatures('schemas')\n\t\tconst results = await this.Action('schema', 'sync').execute({})\n\n\t\tassert.doesThrow(() => this.assertCorePayloadSchemasAreCreated(results))\n\t}\n\n\t@test()\n\tprotected static async canGetNumberOfEventsBackFromHealthCheck() {\n\t\tconst cli = await this.FeatureFixture().installCachedFeatures('events')\n\n\t\tconst results = await this.Action('event', 'sync').execute({})\n\n\t\tassert.isFalsy(results.errors)\n\n\t\tawait this.Service('build').build()\n\n\t\tconst health = await cli.checkHealth({ isRunningLocally: false })\n\n\t\tassert.isTruthy(health.skill)\n\t\tassert.isFalsy(health.skill.errors)\n\t\tassert.isTruthy(health.event)\n\t\tassert.isEqual(health.event.status, 'passed')\n\t\tassert.isTruthy(health.event.contracts)\n\n\t\tassert.isAbove(health.event.contracts.length, 0)\n\t}\n\n\t@test()\n\tprotected static async syncsEventsFromOtherSkills() {\n\t\tconst { skillFixture, skill2 } =\n\t\t\tawait this.seedDummySkillRegisterCurrentSkillAndInstallToOrg()\n\n\t\tconst eventName = `my-new-event::${this.todaysVersion.constValue}`\n\t\tconst fqen = `${skill2.slug}.my-new-event::${this.todaysVersion.constValue}`\n\n\t\tawait skillFixture.registerEventContract(skill2, {\n\t\t\teventSignatures: {\n\t\t\t\t[eventName]: {\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: 'myNewEventEmitPayloadId',\n\t\t\t\t\t\t\tfields: { onlyField: { type: 'text' } },\n\t\t\t\t\t\t},\n\t\t\t\t\t}),\n\t\t\t\t\tresponsePayloadSchema: {\n\t\t\t\t\t\tid: 'myNewEventResponsePayloadId',\n\t\t\t\t\t\tfields: {},\n\t\t\t\t\t},\n\t\t\t\t\temitPermissionContract: buildPermissionContract({\n\t\t\t\t\t\tid: 'myNewEventEmitPermissionContract',\n\t\t\t\t\t\tname: 'My new event emit permissionContract',\n\t\t\t\t\t\tpermissions: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: 'can-emit',\n\t\t\t\t\t\t\t\tname: 'Can emit my new event',\n\t\t\t\t\t\t\t\tdefaults: {\n\t\t\t\t\t\t\t\t\tguest: {\n\t\t\t\t\t\t\t\t\t\tdefault: true,\n\t\t\t\t\t\t\t\t\t},\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\tlistenPermissionContract: buildPermissionContract({\n\t\t\t\t\t\tid: 'myNewEventListenPermissionContract',\n\t\t\t\t\t\tname: 'My new event listen permissionContract',\n\t\t\t\t\t\tpermissions: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: 'can-listen',\n\t\t\t\t\t\t\t\tname: 'Can emit my new event',\n\t\t\t\t\t\t\t\tdefaults: {\n\t\t\t\t\t\t\t\t\tguest: {\n\t\t\t\t\t\t\t\t\t\tdefault: true,\n\t\t\t\t\t\t\t\t\t},\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\t\t})\n\n\t\tawait this.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', 'sync').execute({})\n\n\t\tconst match = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t`myNewEvent.${this.todaysVersion.dirValue}.contract.ts`,\n\t\t\tresults.files\n\t\t)\n\n\t\tassert.doesInclude(\n\t\t\tmatch,\n\t\t\t`${namesUtil.toCamel(skill2.slug)}${pathUtil.sep}myNewEvent.${\n\t\t\t\tthis.todaysVersion.dirValue\n\t\t\t}.contract.ts`\n\t\t)\n\n\t\tconst contract = (await this.Service('import').importDefault(match)) as any\n\t\tconst sig = eventContractUtil.getSignatureByName(contract, fqen)\n\n\t\tassert.isTruthy(sig.emitPayloadSchema)\n\t\tassert.isTruthy(\n\t\t\t//@ts-ignore\n\t\t\tsig.emitPayloadSchema.fields?.payload?.options?.schema?.id,\n\t\t\t'myNewEventEmitPayloadId'\n\t\t)\n\t\tassert.isTruthy(\n\t\t\tsig.responsePayloadSchema?.id,\n\t\t\t'myNewEventResponsePayloadId'\n\t\t)\n\n\t\tassert.isTruthy(sig.emitPermissionContract)\n\t\tassert.isEqual(\n\t\t\tsig.emitPermissionContract.id,\n\t\t\t'myNewEventEmitPermissionContract'\n\t\t)\n\t\tassert.isEqual(sig.emitPermissionContract.permissions[0].id, 'can-emit')\n\t\tassert.isTruthy(sig.listenPermissionContract)\n\t\tassert.isEqual(\n\t\t\tsig.listenPermissionContract.id,\n\t\t\t'myNewEventListenPermissionContract'\n\t\t)\n\t\tassert.isEqual(sig.listenPermissionContract.permissions[0].id, 'can-listen')\n\t}\n\n\t@test()\n\tprotected static async twoSkillsWithSameEventCanBeSynced() {\n\t\tconst { skill2, skillFixture, orgFixture, org } =\n\t\t\tawait this.seedDummySkillRegisterCurrentSkillAndInstallToOrg()\n\n\t\tconst skill3 = await skillFixture.seedDemoSkill({ name: 'a third skill' })\n\n\t\tawait orgFixture.installSkillAtOrganization(skill3.id, org.id)\n\n\t\tconst eventName = `my-new-event::${this.todaysVersion.constValue}`\n\n\t\tawait skillFixture.registerEventContract(skill2, {\n\t\t\teventSignatures: {\n\t\t\t\t[eventName]: {\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}),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\n\t\tawait skillFixture.registerEventContract(skill3, {\n\t\t\teventSignatures: {\n\t\t\t\t[eventName]: {\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}),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\n\t\tawait this.Service('dependency').set([\n\t\t\t{\n\t\t\t\tid: skill2.id,\n\t\t\t\tnamespace: skill2.slug,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: skill3.id,\n\t\t\t\tnamespace: skill3.slug,\n\t\t\t},\n\t\t])\n\n\t\tconst results = await this.Action('event', 'sync').execute({})\n\n\t\tconst contract = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'events.contract.ts',\n\t\t\tresults.files\n\t\t)\n\n\t\tawait this.Service('typeChecker').check(contract)\n\t}\n\n\t@test()\n\tprotected static async skillWithSameEventNameButDifferentVersionsCanBeSynced() {\n\t\tconst { skill2, skillFixture } =\n\t\t\tawait this.seedDummySkillRegisterCurrentSkillAndInstallToOrg()\n\n\t\tconst eventName = `my-new-event::${this.todaysVersion.constValue}`\n\t\tconst eventName2 = `my-new-event::${this.randomVersion}`\n\n\t\tawait skillFixture.registerEventContract(skill2, {\n\t\t\teventSignatures: {\n\t\t\t\t[eventName]: {\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}),\n\t\t\t\t},\n\t\t\t\t[eventName2]: {\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}),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\n\t\tawait this.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', 'sync').execute({})\n\n\t\tconst contract = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'events.contract.ts',\n\t\t\tresults.files\n\t\t)\n\n\t\tawait this.Service('typeChecker').check(contract)\n\t}\n\n\t@test()\n\tprotected static async unRegisteredEventsAreRemoved() {\n\t\tconst { skillFixture, syncResults, skill2, contractFileName } =\n\t\t\tawait this.seedSkillsAndRegisterAndSyncEvents()\n\n\t\tawait this.assertValidActionResponseFiles(syncResults)\n\n\t\tawait skillFixture.unRegisterEvents(skill2, {\n\t\t\tshouldUnregisterAll: true,\n\t\t})\n\n\t\tconst eventContract = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\tcontractFileName,\n\t\t\tsyncResults.files\n\t\t)\n\n\t\tassert.isTrue(diskUtil.doesFileExist(eventContract))\n\n\t\tawait this.Action('event', 'sync').execute({})\n\n\t\tassert.isFalse(diskUtil.doesFileExist(eventContract))\n\n\t\tconst dirname = pathUtil.dirname(eventContract)\n\t\tassert.isFalse(diskUtil.doesDirExist(dirname))\n\t}\n\n\t@test()\n\tprotected static async emptyPermissionsAreNotAddedToContract() {\n\t\tawait this.registerCurrentSkillAndInstallToOrg()\n\n\t\tconst results = await this.Action('event', 'create').execute({\n\t\t\tnameReadable: EVENT_NAME_READABLE,\n\t\t\tnameKebab: EVENT_NAME,\n\t\t\tnameCamel: EVENT_CAMEL,\n\t\t})\n\n\t\tfor (const file of [\n\t\t\t'emitPermissions.builder.ts',\n\t\t\t'listenPermissions.builder.ts',\n\t\t]) {\n\t\t\tconst perms = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t\tfile,\n\t\t\t\tresults.files\n\t\t\t)\n\n\t\t\tdiskUtil.writeFile(\n\t\t\t\tperms,\n\t\t\t\t`import {\n\t\t\t\tbuildPermissionContract\n\t\t\t} from '@sprucelabs/mercury-types'\n\t\t\t\n\t\t\tconst myFantasticallyAmazingEventEmitPermissions = buildPermissionContract({\n\t\t\t\tid: 'myFantasticallyAmazingEventEmitPermissions',\n\t\t\t\tname: 'my fantastically amazing event',\n\t\t\t\tdescription: undefined,\n\t\t\t\trequireAllPermissions: false,\n\t\t\t\tpermissions: []\n\t\t\t})\n\t\t\t\n\t\t\texport default myFantasticallyAmazingEventEmitPermissions\n\t\t\t`\n\t\t\t)\n\t\t}\n\n\t\tconst syncResults = await this.Action('event', 'sync').execute({})\n\n\t\tconst contractFile = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t/myPermissionAmazingEvent\\..*?\\.contract\\.ts/,\n\t\t\tsyncResults.files\n\t\t)\n\n\t\tconst contract = (await this.Service('import').importDefault(\n\t\t\tcontractFile\n\t\t)) as EventContract\n\n\t\tconst fqen = Object.keys(contract.eventSignatures)[0]\n\t\tassert.isFalsy(contract.eventSignatures[fqen].emitPermissionContract)\n\t\tassert.isFalsy(contract.eventSignatures[fqen].listenPermissionContract)\n\t}\n\n\tprivate static async syncCoreEventsPretendingToBeMercuryTypes() {\n\t\tconst results = await this.Action('event', 'sync').execute({\n\t\t\tshouldSyncOnlyCoreEvents: true,\n\t\t\teventBuilderFile: '../../../builder',\n\t\t\tskillEventContractTypesFile: '../../builder',\n\t\t})\n\n\t\tconst builder = `\nexport function buildEventContract(..._: any[]):any { return _[0] }\nexport function buildPermissionContract(..._: any[]):any { return _[0] }\n`\n\n\t\tdiskUtil.writeFile(this.resolvePath('src', 'builder.ts'), builder)\n\t\tawait this.Service('pkg').uninstall([\n\t\t\t'@sprucelabs/mercury-types',\n\t\t\t'@sprucelabs/mercury-client',\n\t\t\t'@sprucelabs/spruce-event-plugin',\n\t\t])\n\t\treturn results\n\t}\n\n\tprivate static async seedSkillsAndRegisterAndSyncEvents(\n\t\tsignature?: EventSignature\n\t) {\n\t\tconst { skill2, skillFixture, cli } =\n\t\t\tawait this.seedDummySkillRegisterCurrentSkillAndInstallToOrg()\n\n\t\tconst { results, filename } = await this.registerEventAndSync(\n\t\t\tskill2,\n\t\t\tsignature\n\t\t)\n\n\t\treturn {\n\t\t\tskillFixture,\n\t\t\tsyncResults: results,\n\t\t\tcli,\n\t\t\tskill2,\n\t\t\tcontractFileName: filename,\n\t\t}\n\t}\n\n\tprivate static async registerEventAndSync(\n\t\tskill: RegisteredSkill,\n\t\tsignature?: EventSignature\n\t) {\n\t\tconst skillFixture = this.getSkillFixture()\n\t\tconst stamp = new Date().getTime()\n\t\tconst eventName = `cleanup-event-test-${stamp}::${this.todaysVersion.constValue}`\n\t\tconst filename = generateEventContractFileName({\n\t\t\tnameCamel: `cleanupEventTest${stamp}`,\n\t\t\tversion: this.todaysVersion.constValue,\n\t\t})\n\n\t\tawait skillFixture.registerEventContract(skill, {\n\t\t\teventSignatures: {\n\t\t\t\t[eventName]: {\n\t\t\t\t\temitPayloadSchema: buildEmitTargetAndPayloadSchema({\n\t\t\t\t\t\teventName,\n\t\t\t\t\t\ttargetSchema: eventTargetSchema,\n\t\t\t\t\t}),\n\t\t\t\t\t...signature,\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\n\t\tawait this.Service('dependency').add({\n\t\t\tid: skill.id,\n\t\t\tnamespace: skill.slug,\n\t\t})\n\n\t\tconst results = await this.Action('event', 'sync').execute({})\n\n\t\treturn { results, filename }\n\t}\n\n\tprivate static assertCorePayloadSchemasAreCreated(\n\t\tresults: FeatureActionResponse,\n\t\tshouldHaveWritten = true\n\t) {\n\t\tconst filesToCheck = [\n\t\t\t{\n\t\t\t\tname: `unregisterListenersEmitTargetAndPayload.schema.ts`,\n\t\t\t\tpath: `schemas${pathUtil.sep}${MERCURY_API_NAMESPACE}`,\n\t\t\t},\n\t\t]\n\n\t\tthis.assertFilesWereGenerated(filesToCheck, results, shouldHaveWritten)\n\t}\n\n\tprivate static assertFilesWereGenerated(\n\t\tfilesToCheck: { name: string; path: string }[],\n\t\tresults: FeatureActionResponse,\n\t\tshouldHaveWritten = true\n\t) {\n\t\tfor (const file of filesToCheck) {\n\t\t\tconst expected = this.resolveHashSprucePath(\n\t\t\t\t'schemas/mercury/v2020_12_25',\n\t\t\t\tfile.name\n\t\t\t)\n\t\t\tconst doesExist = diskUtil.doesFileExist(expected)\n\n\t\t\tif (shouldHaveWritten) {\n\t\t\t\tassert.isTrue(doesExist, `Expected to find ${file} on the filesystem.`)\n\t\t\t} else {\n\t\t\t\tassert.isFalse(doesExist, `Should not have written ${file}.`)\n\t\t\t}\n\t\t}\n\t}\n}\n"],"file":"KeepingEventsInSync2.test.js"}
1
+ {"version":3,"sources":["../../../../src/__tests__/behavioral/events/KeepingEventsInSync2.test.ts"],"names":["EVENT_NAME_READABLE","EVENT_NAME","EVENT_CAMEL","KeepingEventsInSyncTest","test","skip","versionUtil","generateVersion","FeatureFixture","installCachedFeatures","syncCoreEventsPretendingToBeMercuryTypes","Action","execute","results","match","testUtil","assertFileByNameInGeneratedFiles","files","assert","isTrue","diskUtil","doesFileExist","getMercuryFixture","connectToApi","shouldAuthAsCurrentSkill","client","disconnect","results2","isTruthy","errors","doesThrow","assertCorePayloadSchemasAreCreated","cli","isFalsy","Service","build","checkHealth","isRunningLocally","health","skill","event","isEqual","status","contracts","isAbove","length","seedDummySkillRegisterCurrentSkillAndInstallToOrg","skillFixture","skill2","eventName","todaysVersion","constValue","fqen","slug","registerEventContract","eventSignatures","emitPayloadSchema","targetSchema","eventTargetSchema","payloadSchema","id","fields","onlyField","type","responsePayloadSchema","emitPermissionContract","name","permissions","defaults","guest","listenPermissionContract","add","namespace","dirValue","doesInclude","namesUtil","toCamel","pathUtil","sep","importDefault","contract","sig","eventContractUtil","getSignatureByName","payload","options","schema","orgFixture","org","seedDemoSkill","skill3","installSkillAtOrganization","set","check","eventName2","randomVersion","seedSkillsAndRegisterAndSyncEvents","syncResults","contractFileName","assertValidActionResponseFiles","unRegisterEvents","shouldUnregisterAll","eventContract","isFalse","dirname","doesDirExist","registerCurrentSkillAndInstallToOrg","nameReadable","nameKebab","nameCamel","file","perms","writeFile","contractFile","Object","keys","shouldSyncOnlyCoreEvents","eventBuilderFile","skillEventContractTypesFile","builder","resolvePath","uninstall","signature","registerEventAndSync","filename","getSkillFixture","stamp","Date","getTime","version","shouldHaveWritten","filesToCheck","path","MERCURY_API_NAMESPACE","assertFilesWereGenerated","expected","resolveHashSprucePath","doesExist","AbstractEventTest"],"mappings":"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","sourcesContent":["import pathUtil from 'path'\nimport {\n\tbuildPermissionContract,\n\tEventContract,\n\tEventSignature,\n} from '@sprucelabs/mercury-types'\nimport {\n\tbuildEmitTargetAndPayloadSchema,\n\teventContractUtil,\n\teventTargetSchema,\n} from '@sprucelabs/spruce-event-utils'\nimport {\n\tdiskUtil,\n\tMERCURY_API_NAMESPACE,\n\tnamesUtil,\n\tversionUtil,\n} from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test'\nimport { generateEventContractFileName } from '../../../features/event/writers/EventWriter'\nimport { FeatureActionResponse } from '../../../features/features.types'\nimport AbstractEventTest from '../../../tests/AbstractEventTest'\nimport testUtil from '../../../tests/utilities/test.utility'\nimport { RegisteredSkill } from '../../../types/cli.types'\n\nconst EVENT_NAME_READABLE = 'my permission amazing event'\nconst EVENT_NAME = 'my-permission-amazing-event'\nconst EVENT_CAMEL = 'myPermissionAmazingEvent'\n\nexport default class KeepingEventsInSyncTest extends AbstractEventTest {\n\tprivate static randomVersion = 'v2020_01_01'\n\n\tprivate static get todaysVersion() {\n\t\treturn versionUtil.generateVersion()\n\t}\n\n\t@test.skip('find how to simulate connection errors')\n\tprotected static async syncingSchemasWithDisconnectedStopsWithError() {\n\t\tawait this.FeatureFixture().installCachedFeatures('events')\n\n\t\tawait this.syncCoreEventsPretendingToBeMercuryTypes()\n\n\t\tconst results = await this.Action('schema', 'sync').execute({})\n\n\t\tconst match = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'sendMessageEmitPayload.schema.ts',\n\t\t\tresults.files\n\t\t)\n\n\t\tassert.isTrue(diskUtil.doesFileExist(match))\n\n\t\tconst client = await this.getMercuryFixture().connectToApi({\n\t\t\tshouldAuthAsCurrentSkill: true,\n\t\t})\n\n\t\tawait client.disconnect()\n\n\t\tconst results2 = await this.Action('schema', 'sync').execute({})\n\n\t\tassert.isTruthy(results2.errors)\n\n\t\tassert.isTrue(diskUtil.doesFileExist(match))\n\t}\n\n\t@test()\n\tprotected static async syncingSchemasDoesNotSyncEventSchemasIfEventsNotInstalled() {\n\t\tawait this.FeatureFixture().installCachedFeatures('schemas')\n\t\tconst results = await this.Action('schema', 'sync').execute({})\n\n\t\tassert.doesThrow(() => this.assertCorePayloadSchemasAreCreated(results))\n\t}\n\n\t@test()\n\tprotected static async canGetNumberOfEventsBackFromHealthCheck() {\n\t\tconst cli = await this.FeatureFixture().installCachedFeatures('events')\n\n\t\tconst results = await this.Action('event', 'sync').execute({})\n\n\t\tassert.isFalsy(results.errors)\n\n\t\tawait this.Service('build').build()\n\n\t\tconst health = await cli.checkHealth({ isRunningLocally: false })\n\n\t\tassert.isTruthy(health.skill)\n\t\tassert.isFalsy(health.skill.errors)\n\t\tassert.isTruthy(health.event)\n\t\tassert.isEqual(health.event.status, 'passed')\n\t\tassert.isTruthy(health.event.contracts)\n\n\t\tassert.isAbove(health.event.contracts.length, 0)\n\t}\n\n\t@test()\n\tprotected static async syncsEventsFromOtherSkills() {\n\t\tconst { skillFixture, skill2 } =\n\t\t\tawait this.seedDummySkillRegisterCurrentSkillAndInstallToOrg()\n\n\t\tconst eventName = `my-new-event::${this.todaysVersion.constValue}`\n\t\tconst fqen = `${skill2.slug}.my-new-event::${this.todaysVersion.constValue}`\n\n\t\tawait skillFixture.registerEventContract(skill2, {\n\t\t\teventSignatures: {\n\t\t\t\t[eventName]: {\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: 'myNewEventEmitPayloadId',\n\t\t\t\t\t\t\tfields: { onlyField: { type: 'text' } },\n\t\t\t\t\t\t},\n\t\t\t\t\t}),\n\t\t\t\t\tresponsePayloadSchema: {\n\t\t\t\t\t\tid: 'myNewEventResponsePayloadId',\n\t\t\t\t\t\tfields: {},\n\t\t\t\t\t},\n\t\t\t\t\temitPermissionContract: buildPermissionContract({\n\t\t\t\t\t\tid: 'myNewEventEmitPermissionContract',\n\t\t\t\t\t\tname: 'My new event emit permissionContract',\n\t\t\t\t\t\tpermissions: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: 'can-emit',\n\t\t\t\t\t\t\t\tname: 'Can emit my new event',\n\t\t\t\t\t\t\t\tdefaults: {\n\t\t\t\t\t\t\t\t\tguest: {\n\t\t\t\t\t\t\t\t\t\tdefault: true,\n\t\t\t\t\t\t\t\t\t},\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\tlistenPermissionContract: buildPermissionContract({\n\t\t\t\t\t\tid: 'myNewEventListenPermissionContract',\n\t\t\t\t\t\tname: 'My new event listen permissionContract',\n\t\t\t\t\t\tpermissions: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: 'can-listen',\n\t\t\t\t\t\t\t\tname: 'Can emit my new event',\n\t\t\t\t\t\t\t\tdefaults: {\n\t\t\t\t\t\t\t\t\tguest: {\n\t\t\t\t\t\t\t\t\t\tdefault: true,\n\t\t\t\t\t\t\t\t\t},\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\t\t})\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', 'sync').execute({})\n\n\t\tconst match = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t`myNewEvent.${this.todaysVersion.dirValue}.contract.ts`,\n\t\t\tresults.files\n\t\t)\n\n\t\tassert.doesInclude(\n\t\t\tmatch,\n\t\t\t`${namesUtil.toCamel(skill2.slug)}${pathUtil.sep}myNewEvent.${\n\t\t\t\tthis.todaysVersion.dirValue\n\t\t\t}.contract.ts`\n\t\t)\n\n\t\tconst contract = (await this.Service('import').importDefault(match)) as any\n\t\tconst sig = eventContractUtil.getSignatureByName(contract, fqen)\n\n\t\tassert.isTruthy(sig.emitPayloadSchema)\n\t\tassert.isTruthy(\n\t\t\t//@ts-ignore\n\t\t\tsig.emitPayloadSchema.fields?.payload?.options?.schema?.id,\n\t\t\t'myNewEventEmitPayloadId'\n\t\t)\n\t\tassert.isTruthy(\n\t\t\tsig.responsePayloadSchema?.id,\n\t\t\t'myNewEventResponsePayloadId'\n\t\t)\n\n\t\tassert.isTruthy(sig.emitPermissionContract)\n\t\tassert.isEqual(\n\t\t\tsig.emitPermissionContract.id,\n\t\t\t'myNewEventEmitPermissionContract'\n\t\t)\n\t\tassert.isEqual(sig.emitPermissionContract.permissions[0].id, 'can-emit')\n\t\tassert.isTruthy(sig.listenPermissionContract)\n\t\tassert.isEqual(\n\t\t\tsig.listenPermissionContract.id,\n\t\t\t'myNewEventListenPermissionContract'\n\t\t)\n\t\tassert.isEqual(sig.listenPermissionContract.permissions[0].id, 'can-listen')\n\t}\n\n\t@test()\n\tprotected static async twoSkillsWithSameEventCanBeSynced() {\n\t\tconst { skill2, skillFixture, orgFixture, org } =\n\t\t\tawait this.seedDummySkillRegisterCurrentSkillAndInstallToOrg()\n\n\t\tconst skill3 = await skillFixture.seedDemoSkill({ name: 'a third skill' })\n\n\t\tawait orgFixture.installSkillAtOrganization(skill3.id, org.id)\n\n\t\tconst eventName = `my-new-event::${this.todaysVersion.constValue}`\n\n\t\tawait skillFixture.registerEventContract(skill2, {\n\t\t\teventSignatures: {\n\t\t\t\t[eventName]: {\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}),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\n\t\tawait skillFixture.registerEventContract(skill3, {\n\t\t\teventSignatures: {\n\t\t\t\t[eventName]: {\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}),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\n\t\tawait this.Service('dependency').set([\n\t\t\t{\n\t\t\t\tid: skill2.id,\n\t\t\t\tnamespace: skill2.slug,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: skill3.id,\n\t\t\t\tnamespace: skill3.slug,\n\t\t\t},\n\t\t])\n\n\t\tconst results = await this.Action('event', 'sync').execute({})\n\n\t\tconst contract = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'events.contract.ts',\n\t\t\tresults.files\n\t\t)\n\n\t\tawait this.Service('typeChecker').check(contract)\n\t}\n\n\t@test()\n\tprotected static async skillWithSameEventNameButDifferentVersionsCanBeSynced() {\n\t\tconst { skill2, skillFixture } =\n\t\t\tawait this.seedDummySkillRegisterCurrentSkillAndInstallToOrg()\n\n\t\tconst eventName = `my-new-event::${this.todaysVersion.constValue}`\n\t\tconst eventName2 = `my-new-event::${this.randomVersion}`\n\n\t\tawait skillFixture.registerEventContract(skill2, {\n\t\t\teventSignatures: {\n\t\t\t\t[eventName]: {\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}),\n\t\t\t\t},\n\t\t\t\t[eventName2]: {\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}),\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\n\t\tawait this.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', 'sync').execute({})\n\n\t\tconst contract = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'events.contract.ts',\n\t\t\tresults.files\n\t\t)\n\n\t\tawait this.Service('typeChecker').check(contract)\n\t}\n\n\t@test()\n\tprotected static async unRegisteredEventsAreRemoved() {\n\t\tconst { skillFixture, syncResults, skill2, contractFileName } =\n\t\t\tawait this.seedSkillsAndRegisterAndSyncEvents()\n\n\t\tawait this.assertValidActionResponseFiles(syncResults)\n\n\t\tawait skillFixture.unRegisterEvents(skill2, {\n\t\t\tshouldUnregisterAll: true,\n\t\t})\n\n\t\tconst eventContract = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\tcontractFileName,\n\t\t\tsyncResults.files\n\t\t)\n\n\t\tassert.isTrue(diskUtil.doesFileExist(eventContract))\n\n\t\tawait this.Action('event', 'sync').execute({})\n\n\t\tassert.isFalse(diskUtil.doesFileExist(eventContract))\n\n\t\tconst dirname = pathUtil.dirname(eventContract)\n\t\tassert.isFalse(diskUtil.doesDirExist(dirname))\n\t}\n\n\t@test()\n\tprotected static async emptyPermissionsAreNotAddedToContract() {\n\t\tawait this.registerCurrentSkillAndInstallToOrg()\n\n\t\tconst results = await this.Action('event', 'create').execute({\n\t\t\tnameReadable: EVENT_NAME_READABLE,\n\t\t\tnameKebab: EVENT_NAME,\n\t\t\tnameCamel: EVENT_CAMEL,\n\t\t})\n\n\t\tfor (const file of [\n\t\t\t'emitPermissions.builder.ts',\n\t\t\t'listenPermissions.builder.ts',\n\t\t]) {\n\t\t\tconst perms = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t\tfile,\n\t\t\t\tresults.files\n\t\t\t)\n\n\t\t\tdiskUtil.writeFile(\n\t\t\t\tperms,\n\t\t\t\t`import {\n\t\t\t\tbuildPermissionContract\n\t\t\t} from '@sprucelabs/mercury-types'\n\t\t\t\n\t\t\tconst myFantasticallyAmazingEventEmitPermissions = buildPermissionContract({\n\t\t\t\tid: 'myFantasticallyAmazingEventEmitPermissions',\n\t\t\t\tname: 'my fantastically amazing event',\n\t\t\t\tdescription: undefined,\n\t\t\t\trequireAllPermissions: false,\n\t\t\t\tpermissions: []\n\t\t\t})\n\t\t\t\n\t\t\texport default myFantasticallyAmazingEventEmitPermissions\n\t\t\t`\n\t\t\t)\n\t\t}\n\n\t\tconst syncResults = await this.Action('event', 'sync').execute({})\n\n\t\tconst contractFile = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t/myPermissionAmazingEvent\\..*?\\.contract\\.ts/,\n\t\t\tsyncResults.files\n\t\t)\n\n\t\tconst contract = (await this.Service('import').importDefault(\n\t\t\tcontractFile\n\t\t)) as EventContract\n\n\t\tconst fqen = Object.keys(contract.eventSignatures)[0]\n\t\tassert.isFalsy(contract.eventSignatures[fqen].emitPermissionContract)\n\t\tassert.isFalsy(contract.eventSignatures[fqen].listenPermissionContract)\n\t}\n\n\tprivate static async syncCoreEventsPretendingToBeMercuryTypes() {\n\t\tconst results = await this.Action('event', 'sync').execute({\n\t\t\tshouldSyncOnlyCoreEvents: true,\n\t\t\teventBuilderFile: '../../../builder',\n\t\t\tskillEventContractTypesFile: '../../builder',\n\t\t})\n\n\t\tconst builder = `\nexport function buildEventContract(..._: any[]):any { return _[0] }\nexport function buildPermissionContract(..._: any[]):any { return _[0] }\n`\n\n\t\tdiskUtil.writeFile(this.resolvePath('src', 'builder.ts'), builder)\n\t\tawait this.Service('pkg').uninstall([\n\t\t\t'@sprucelabs/mercury-types',\n\t\t\t'@sprucelabs/mercury-client',\n\t\t\t'@sprucelabs/spruce-event-plugin',\n\t\t])\n\t\treturn results\n\t}\n\n\tprivate static async seedSkillsAndRegisterAndSyncEvents(\n\t\tsignature?: EventSignature\n\t) {\n\t\tconst { skill2, skillFixture, cli } =\n\t\t\tawait this.seedDummySkillRegisterCurrentSkillAndInstallToOrg()\n\n\t\tconst { results, filename } = await this.registerEventAndSync(\n\t\t\tskill2,\n\t\t\tsignature\n\t\t)\n\n\t\treturn {\n\t\t\tskillFixture,\n\t\t\tsyncResults: results,\n\t\t\tcli,\n\t\t\tskill2,\n\t\t\tcontractFileName: filename,\n\t\t}\n\t}\n\n\tprivate static async registerEventAndSync(\n\t\tskill: RegisteredSkill,\n\t\tsignature?: EventSignature\n\t) {\n\t\tconst skillFixture = this.getSkillFixture()\n\t\tconst stamp = new Date().getTime()\n\t\tconst eventName = `cleanup-event-test-${stamp}::${this.todaysVersion.constValue}`\n\t\tconst filename = generateEventContractFileName({\n\t\t\tnameCamel: `cleanupEventTest${stamp}`,\n\t\t\tversion: this.todaysVersion.constValue,\n\t\t})\n\n\t\tawait skillFixture.registerEventContract(skill, {\n\t\t\teventSignatures: {\n\t\t\t\t[eventName]: {\n\t\t\t\t\temitPayloadSchema: buildEmitTargetAndPayloadSchema({\n\t\t\t\t\t\teventName,\n\t\t\t\t\t\ttargetSchema: eventTargetSchema,\n\t\t\t\t\t}),\n\t\t\t\t\t...signature,\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\n\t\tawait this.Service('dependency').add({\n\t\t\tid: skill.id,\n\t\t\tnamespace: skill.slug,\n\t\t})\n\n\t\tconst results = await this.Action('event', 'sync').execute({})\n\n\t\treturn { results, filename }\n\t}\n\n\tprivate static assertCorePayloadSchemasAreCreated(\n\t\tresults: FeatureActionResponse,\n\t\tshouldHaveWritten = true\n\t) {\n\t\tconst filesToCheck = [\n\t\t\t{\n\t\t\t\tname: `unregisterListenersEmitTargetAndPayload.schema.ts`,\n\t\t\t\tpath: `schemas${pathUtil.sep}${MERCURY_API_NAMESPACE}`,\n\t\t\t},\n\t\t]\n\n\t\tthis.assertFilesWereGenerated(filesToCheck, results, shouldHaveWritten)\n\t}\n\n\tprivate static assertFilesWereGenerated(\n\t\tfilesToCheck: { name: string; path: string }[],\n\t\tresults: FeatureActionResponse,\n\t\tshouldHaveWritten = true\n\t) {\n\t\tfor (const file of filesToCheck) {\n\t\t\tconst expected = this.resolveHashSprucePath(\n\t\t\t\t'schemas/mercury/v2020_12_25',\n\t\t\t\tfile.name\n\t\t\t)\n\t\t\tconst doesExist = diskUtil.doesFileExist(expected)\n\n\t\t\tif (shouldHaveWritten) {\n\t\t\t\tassert.isTrue(doesExist, `Expected to find ${file} on the filesystem.`)\n\t\t\t} else {\n\t\t\t\tassert.isFalse(doesExist, `Should not have written ${file}.`)\n\t\t\t}\n\t\t}\n\t}\n}\n"],"file":"KeepingEventsInSync2.test.js"}
@@ -533,25 +533,28 @@ var KeepsSchemasInSyncTest = (_dec = (0, _test.test)(), _dec2 = (0, _test.test)(
533
533
 
534
534
  case 4:
535
535
  createResponse = _context11.sent;
536
+
537
+ _test.assert.isFalsy(createResponse.errors);
538
+
536
539
  builderPath = _test2["default"].assertFileByNameInGeneratedFiles('testSchema.builder.ts', createResponse.files);
537
540
  contents = _spruceSkillUtils.diskUtil.readFile(builderPath).replace("id: 'testSchema'", "id: 'test-schema'");
538
541
 
539
542
  _spruceSkillUtils.diskUtil.writeFile(builderPath, contents);
540
543
 
541
- _context11.next = 10;
544
+ _context11.next = 11;
542
545
  return this.Action('schema', 'sync').execute({});
543
546
 
544
- case 10:
547
+ case 11:
545
548
  syncResults = _context11.sent;
546
549
  testSchema = _test2["default"].assertFileByNameInGeneratedFiles('test-schema.schema.ts', syncResults.files);
547
550
  testSchemaContents = _spruceSkillUtils.diskUtil.readFile(testSchema);
548
551
 
549
552
  _test.assert.doesInclude(testSchemaContents, 'SchemaRegistry');
550
553
 
551
- _context11.next = 16;
554
+ _context11.next = 17;
552
555
  return this.assertValidActionResponseFiles(syncResults);
553
556
 
554
- case 16:
557
+ case 17:
555
558
  case "end":
556
559
  return _context11.stop();
557
560
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/__tests__/behavioral/schemas/KeepingSchemasInSync.test.ts"],"names":["TYPE_FILE_COUNT","SYNC_FILE_COUNT","Object","keys","coreSchemas","length","MOCK_CORE_SYNC_FILE_COUNT","KeepsSchemasInSyncTest","Cli","assert","isFunction","Action","execute","doesThrowAsync","err","errorAssertUtil","assertError","installSchemaFeature","results","isFalsy","errors","testUtil","assertCountsByAction","files","updated","generated","skipped","shouldFetchCoreSchemas","tmpFile","resolveHashSprucePath","isFalse","diskUtil","doesFileExist","copyMockCoreSchemas","coreSyncOptions","isUndefined","isTruthy","isLength","isTrue","coreSchemaTypesFile","assertTypesFileGeneratesArraySelect","syncSchemas","isAbove","typesContents","readFile","doesInclude","RegExp","CORE_NAMESPACE","CORE_SCHEMA_VERSION","constValue","assertValidActionResponseFiles","doesNotInclude","DEFAULT_GLOBAL_SCHEMA_NAMESPACE","orgSchema","assertFileByNameInGeneratedFiles","locationSchemaContents","pkg","Service","set","path","value","nameReadable","nameCamel","createResponse","builderPath","contents","replace","writeFile","syncResults","testSchema","testSchemaContents","values","schema","id","match","version","versionUtil","generateVersion","typeChecker","createAction","matcher","pathUtil","dirname","schemaTypesFile","builderFile","dirValue","schemaFile","check","deleteFile","namespaceFolder","doesDirExist","FeatureFixture","installCachedFeatures","promise","waitForInput","ui","sendInput","schemasDir","resolvePath","copyDir","resolveTestPath","importSchema","fields","phone","minArrayLength","isEqual","favoriteColors","permissions","beforeFolder","afterFolder","Store","setCurrentSkillsNamespace","testSchemaPath","schemaPath","importDefault","imported","importsWhenRemote","typeSuffix","filename","file","typesFile","source","destination","AbstractSchemaTest","shouldGenerateCoreSchemaTypes"],"mappings":"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","sourcesContent":["import pathUtil from 'path'\nimport * as coreSchemas from '@sprucelabs/spruce-core-schemas'\nimport { versionUtil } from '@sprucelabs/spruce-skill-utils'\nimport { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport {\n\tCORE_SCHEMA_VERSION,\n\tCORE_NAMESPACE,\n\tDEFAULT_GLOBAL_SCHEMA_NAMESPACE,\n} from '@sprucelabs/spruce-skill-utils'\nimport { assert, test } from '@sprucelabs/test'\nimport { errorAssertUtil } from '@sprucelabs/test-utils'\nimport AbstractSchemaTest from '../../../tests/AbstractSchemaTest'\nimport testUtil from '../../../tests/utilities/test.utility'\n\n//TODO rethink how to check for count of files and results or where it may make sense to move this test\nconst TYPE_FILE_COUNT = 2 // (only fieldMap and field.types... schema.types checked by +1 in tests)\nconst SYNC_FILE_COUNT = Object.keys(coreSchemas).length + TYPE_FILE_COUNT\nconst MOCK_CORE_SYNC_FILE_COUNT = 4 + TYPE_FILE_COUNT\n\nexport default class KeepsSchemasInSyncTest extends AbstractSchemaTest {\n\tprivate static readonly coreSyncOptions = {\n\t\tshouldGenerateCoreSchemaTypes: true,\n\t}\n\n\t@test()\n\tprotected static async hasSyncSchemaAction() {\n\t\tawait this.Cli()\n\t\tassert.isFunction(this.Action('schema', 'sync').execute)\n\t}\n\n\t@test()\n\tprotected static async failsBecauseSchemasIsNotInstalled() {\n\t\tawait this.Cli()\n\n\t\tconst err = await assert.doesThrowAsync(() =>\n\t\t\tthis.Action('schema', 'sync').execute({})\n\t\t)\n\n\t\terrorAssertUtil.assertError(err, 'FEATURE_NOT_INSTALLED')\n\t}\n\n\t@test()\n\tprotected static async syncingWithNoSchemasSucceeds() {\n\t\tawait this.installSchemaFeature('schemas')\n\n\t\tconst results = await this.Action('schema', 'sync').execute({})\n\n\t\tassert.isFalsy(results.errors)\n\n\t\t//TODO determine better way to count files\n\t\ttestUtil.assertCountsByAction(results.files, {\n\t\t\tupdated: 0,\n\t\t\tgenerated: SYNC_FILE_COUNT,\n\t\t\tskipped: 0,\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async syncingWithNoSchemasAndFetchCoreSchemasFalseSucceeds() {\n\t\tawait this.installSchemaFeature('schemas')\n\n\t\tconst results = await this.Action('schema', 'sync').execute({\n\t\t\tshouldFetchCoreSchemas: false,\n\t\t})\n\n\t\tassert.isFalsy(results.errors)\n\n\t\ttestUtil.assertCountsByAction(results.files, {\n\t\t\tupdated: 0,\n\t\t\tgenerated: TYPE_FILE_COUNT,\n\t\t\tskipped: 0,\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async syncingCleansUpTempFiles() {\n\t\tawait this.installSchemaFeature('schemas')\n\n\t\tconst results = await this.Action('schema', 'sync').execute({})\n\n\t\tassert.isFalsy(results.errors)\n\n\t\tconst tmpFile = this.resolveHashSprucePath(\n\t\t\t'schemas',\n\t\t\t'tmp',\n\t\t\t'valueType.tmp.ts'\n\t\t)\n\n\t\tassert.isFalse(diskUtil.doesFileExist(tmpFile))\n\t}\n\n\t@test()\n\tprotected static async syncingCoreSchemasGeneratesTypesFile() {\n\t\tawait this.installSchemaFeature('schemas')\n\t\tawait this.copyMockCoreSchemas()\n\n\t\tconst results = await this.Action('schema', 'sync').execute(\n\t\t\tthis.coreSyncOptions\n\t\t)\n\n\t\tassert.isUndefined(results.errors)\n\t\tassert.isTruthy(results.files)\n\n\t\tassert.isLength(results.files, MOCK_CORE_SYNC_FILE_COUNT)\n\n\t\ttestUtil.assertCountsByAction(results.files, {\n\t\t\tgenerated: MOCK_CORE_SYNC_FILE_COUNT,\n\t\t\tskipped: 0,\n\t\t\tupdated: 0,\n\t\t})\n\n\t\tassert.isTrue(diskUtil.doesFileExist(this.coreSchemaTypesFile))\n\n\t\tawait this.assertTypesFileGeneratesArraySelect(this.coreSchemaTypesFile)\n\t}\n\n\t@test()\n\tprotected static async syncSchemasTwiceSkipsFiles() {\n\t\tawait this.syncSchemas('schemas', this.coreSyncOptions)\n\t\tconst results = await this.Action('schema', 'sync').execute(\n\t\t\tthis.coreSyncOptions\n\t\t)\n\n\t\tassert.isFalsy(results.errors)\n\t\tassert.isAbove(results.files?.length, 0)\n\n\t\ttestUtil.assertCountsByAction(results.files, {\n\t\t\tgenerated: 0,\n\t\t\tskipped: results.files?.length ?? 0,\n\t\t\tupdated: 0,\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async makeSureSchemaTypesAreVersioned() {\n\t\tawait this.installSchemaFeature('schemas')\n\n\t\tawait this.copyMockCoreSchemas()\n\n\t\tconst results = await this.Action('schema', 'sync').execute(\n\t\t\tthis.coreSyncOptions\n\t\t)\n\n\t\tassert.isFalsy(results.errors)\n\n\t\tconst typesContents = diskUtil.readFile(this.coreSchemaTypesFile)\n\t\tassert.doesInclude(\n\t\t\ttypesContents,\n\t\t\tnew RegExp(\n\t\t\t\t`SpruceSchemas.${CORE_NAMESPACE}.${CORE_SCHEMA_VERSION.constValue}(.*?)interface Person`,\n\t\t\t\t'gis'\n\t\t\t)\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async shouldGenerateCoreSchemaTypesGeneratesValidFiles() {\n\t\tawait this.installSchemaFeature('schemas')\n\n\t\tawait this.copyMockCoreSchemas()\n\n\t\tconst results = await this.Action('schema', 'sync').execute(\n\t\t\tthis.coreSyncOptions\n\t\t)\n\n\t\tassert.isFalsy(results.errors)\n\t\tassert.isTruthy(results.files)\n\n\t\tawait this.assertValidActionResponseFiles(results)\n\n\t\tconst typesContents = diskUtil.readFile(this.coreSchemaTypesFile)\n\n\t\tassert.doesNotInclude(typesContents, /@sprucelabs\\/spruce-core-schemas/gi)\n\t\tassert.doesInclude(\n\t\t\ttypesContents,\n\t\t\tnew RegExp(\n\t\t\t\t`export declare namespace ${DEFAULT_GLOBAL_SCHEMA_NAMESPACE}.${CORE_NAMESPACE}.${CORE_SCHEMA_VERSION.constValue}`,\n\t\t\t\t'gis'\n\t\t\t)\n\t\t)\n\n\t\tconst orgSchema = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'organization.schema.ts',\n\t\t\tresults.files\n\t\t)\n\n\t\tconst locationSchemaContents = diskUtil.readFile(orgSchema)\n\t\tassert.doesInclude(locationSchemaContents, 'SchemaRegistry')\n\t}\n\n\t@test()\n\tprotected static async generateCoreSchemaInCoreSchemasModule() {\n\t\tawait this.installSchemaFeature('schemas')\n\n\t\tconst pkg = this.Service('pkg')\n\t\tpkg.set({ path: 'name', value: '@sprucelabs/spruce-core-schemas' })\n\n\t\tawait this.copyMockCoreSchemas()\n\n\t\tconst results = await this.Action('schema', 'sync').execute({})\n\n\t\tassert.isFalsy(results.errors)\n\t\tassert.isTruthy(results.files)\n\n\t\tconst typesContents = diskUtil.readFile(this.coreSchemaTypesFile)\n\n\t\tassert.doesNotInclude(typesContents, /@sprucelabs\\/spruce-core-schemas/gi)\n\t\tassert.doesInclude(\n\t\t\ttypesContents,\n\t\t\tnew RegExp(\n\t\t\t\t`export declare namespace ${DEFAULT_GLOBAL_SCHEMA_NAMESPACE}.${CORE_NAMESPACE}.${CORE_SCHEMA_VERSION.constValue}`,\n\t\t\t\t'gis'\n\t\t\t)\n\t\t)\n\n\t\tconst orgSchema = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'organization.schema.ts',\n\t\t\tresults.files\n\t\t)\n\n\t\tconst locationSchemaContents = diskUtil.readFile(orgSchema)\n\t\tassert.doesInclude(locationSchemaContents, 'SchemaRegistry')\n\t}\n\n\t@test()\n\tprotected static async canHandleHyphenSchemaIds() {\n\t\tawait this.syncSchemas('schemas')\n\n\t\tconst createResponse = await this.Action('schema', 'create').execute({\n\t\t\tnameReadable: 'Test schema',\n\t\t\tnameCamel: 'testSchema',\n\t\t})\n\n\t\tconst builderPath = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'testSchema.builder.ts',\n\t\t\tcreateResponse.files\n\t\t)\n\n\t\tconst contents = diskUtil\n\t\t\t.readFile(builderPath)\n\t\t\t.replace(\"id: 'testSchema'\", \"id: 'test-schema'\")\n\n\t\tdiskUtil.writeFile(builderPath, contents)\n\n\t\tconst syncResults = await this.Action('schema', 'sync').execute({})\n\n\t\tconst testSchema = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'test-schema.schema.ts',\n\t\t\tsyncResults.files\n\t\t)\n\n\t\tconst testSchemaContents = diskUtil.readFile(testSchema)\n\t\tassert.doesInclude(testSchemaContents, 'SchemaRegistry')\n\n\t\tawait this.assertValidActionResponseFiles(syncResults)\n\t}\n\n\t@test()\n\tprotected static async coreSchemasPullFromCoreSchemasModuleDuringNormalGeneration() {\n\t\tawait this.syncSchemas('schemas')\n\n\t\tconst createResponse = await this.Action('schema', 'create').execute({\n\t\t\tnameReadable: 'Test schema',\n\t\t\tnameCamel: 'testSchema',\n\t\t})\n\n\t\tfor (const schema of Object.values(coreSchemas)) {\n\t\t\tconst id = schema.id\n\t\t\tconst match = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t\t`${id}.schema.ts`,\n\t\t\t\tcreateResponse.files\n\t\t\t)\n\t\t\tconst contents = diskUtil.readFile(match)\n\t\t\tassert.doesInclude(\n\t\t\t\tcontents,\n\t\t\t\t`export { ${id}Schema as default } from '@sprucelabs/spruce-core-schemas'`\n\t\t\t)\n\t\t}\n\t}\n\n\t@test()\n\tprotected static async schemasStayInSyncWhenBuildersAreDeleted() {\n\t\tawait this.syncSchemas('schemas')\n\t\tconst version = versionUtil.generateVersion()\n\t\tconst typeChecker = this.Service('typeChecker')\n\t\tconst createAction = this.Action('schema', 'create')\n\n\t\tconst matcher = new RegExp(\n\t\t\t`SpruceSchemas.TestingSchemas.${version.constValue}(.*?)interface TestSchema`,\n\t\t\t'gis'\n\t\t)\n\n\t\tassert.isTrue(\n\t\t\tdiskUtil.doesFileExist(pathUtil.dirname(this.schemaTypesFile))\n\t\t)\n\n\t\tconst createResponse = await createAction.execute({\n\t\t\tnameReadable: 'Test schema',\n\t\t\tnameCamel: 'testSchema',\n\t\t})\n\n\t\tconst builderFile = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t/testSchema\\.builder/,\n\t\t\tcreateResponse.files\n\t\t)\n\n\t\t// make sure builder is versioned\n\t\tassert.doesInclude(builderFile, version.dirValue)\n\n\t\tconst schemaFile = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t/testSchema\\.schema/,\n\t\t\tcreateResponse.files\n\t\t)\n\n\t\t// make sure this path is versioned\n\t\tassert.doesInclude(schemaFile, version.dirValue)\n\t\tassert.doesInclude(schemaFile, '/testingSchemas/')\n\n\t\t// schema types should be good\n\t\tawait typeChecker.check(this.schemaTypesFile)\n\n\t\t// the types should include our test schema\n\t\tlet typesContents = diskUtil.readFile(this.schemaTypesFile)\n\t\tassert.doesInclude(typesContents, matcher)\n\n\t\t// the schema file should exist\n\t\tassert.isTrue(diskUtil.doesFileExist(schemaFile))\n\n\t\t// DELETE builder and make sure we are cleaned up\n\t\tdiskUtil.deleteFile(builderFile)\n\n\t\t// this should cleanup types and schema files\n\t\tawait this.Action('schema', 'sync').execute({})\n\n\t\tassert.isTrue(diskUtil.doesFileExist(this.schemaTypesFile))\n\n\t\t// and the schema should have been deleted\n\t\tassert.isFalse(diskUtil.doesFileExist(schemaFile))\n\n\t\t// and the namespace folder should have been deleted\n\t\tconst namespaceFolder = this.resolveHashSprucePath(\n\t\t\t'schemas',\n\t\t\t'testingSChemas'\n\t\t)\n\t\tassert.isFalse(diskUtil.doesDirExist(namespaceFolder))\n\t}\n\n\t@test()\n\tprotected static async canSyncSchemasWhenOnlyNodeModuleIsInstalledAfterDecliningToInstallSkill() {\n\t\tawait this.FeatureFixture().installCachedFeatures('schemasInNodeModule')\n\n\t\tconst promise = this.Action('schema', 'sync').execute({})\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\t\tconst results = await promise\n\n\t\tassert.isFalsy(results.errors)\n\t\tawait this.assertValidActionResponseFiles(results)\n\t}\n\n\t@test('syncs minAraryLength, importsWhenRemote')\n\tprotected static async syncsExpectedFields() {\n\t\tawait this.syncSchemas('schemas')\n\n\t\tconst schemasDir = this.resolvePath('src', 'schemas')\n\n\t\tawait diskUtil.copyDir(this.resolveTestPath('test_builders'), schemasDir)\n\n\t\tconst results = await this.Action('schema', 'sync').execute({})\n\t\tconst schema = await this.importSchema(results, 'schemaTwo.schema.ts')\n\n\t\tassert.isUndefined(schema.fields.phone.minArrayLength)\n\t\tassert.isEqual(schema.fields.favoriteColors.minArrayLength, 3)\n\t\tassert.isEqual(schema.fields.permissions.minArrayLength, 0)\n\t}\n\n\t@test()\n\tprotected static async canChangeSkillNamespace() {\n\t\tawait this.syncSchemas('schemas')\n\n\t\tawait this.Action('schema', 'create').execute({\n\t\t\tnameReadable: 'Test schema',\n\t\t\tnameCamel: 'testSchema',\n\t\t})\n\n\t\tconst beforeFolder = this.resolveHashSprucePath('schemas', 'testingSchemas')\n\t\tconst afterFolder = this.resolveHashSprucePath('schemas', 'newNamespace')\n\n\t\tassert.isTrue(diskUtil.doesFileExist(beforeFolder))\n\t\tassert.isFalse(diskUtil.doesFileExist(afterFolder))\n\n\t\tawait this.Store('skill').setCurrentSkillsNamespace('new-namespace')\n\n\t\tawait this.Action('schema', 'sync').execute({})\n\n\t\tassert.isFalse(diskUtil.doesFileExist(beforeFolder))\n\t\tassert.isTrue(diskUtil.doesFileExist(afterFolder))\n\t}\n\n\t@test()\n\tprotected static async generatedSchemasRetainImportsAndTypeSuffix() {\n\t\tawait this.installSchemaFeature('schemas')\n\n\t\tconst results = await this.Action('schema', 'create').execute({\n\t\t\tnameReadable: 'Test schema',\n\t\t\tnameCamel: 'testSchema',\n\t\t})\n\n\t\tconst testSchemaPath = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'testSchema.builder.ts',\n\t\t\tresults.files\n\t\t)\n\n\t\tdiskUtil.writeFile(\n\t\t\ttestSchemaPath,\n\t\t\t`import { buildSchema } from '@sprucelabs/schema'\n\n\t\texport default buildSchema({\n\t\t\tid: 'testSchema',\n\t\t\tname: 'Test schema',\n\t\t\tdescription: '',\n\t\t\timportsWhenLocal: ['import * as Local from \"@sprucelabs/schema\"'],\n\t\t\timportsWhenRemote: ['import * as Remote from \"@sprucelabs/schema\"'],\n\t\t\ttypeSuffix: '<S extends Record<string, any> = Record<string, any>>',\n\t\t\tfields: {\n\t\t\t\tfieldName1: {\n\t\t\t\t\ttype: 'text',\n\t\t\t\t\tlabel: 'First Field',\n\t\t\t\t\tisRequired: true,\n\t\t\t\t},\n\t\t\t\tfieldName2: {\n\t\t\t\t\ttype: 'number',\n\t\t\t\t\tlabel: 'Second Field',\n\t\t\t\t\tisRequired: true,\n\t\t\t\t\thint: 'A hint',\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\t`\n\t\t)\n\n\t\tconst syncResults = await this.Action('schema', 'sync').execute({})\n\n\t\tconst schemaPath = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'testSchema.schema.ts',\n\t\t\tsyncResults.files\n\t\t)\n\n\t\tconst imported = await this.Service('import').importDefault(schemaPath)\n\n\t\tassert.doesInclude(imported, {\n\t\t\timportsWhenRemote: ['import * as Remote from \"@sprucelabs/schema\"'],\n\t\t\ttypeSuffix: '<S extends Record<string, any> = Record<string, any>>',\n\t\t})\n\t}\n\n\tprivate static async importSchema(results: any, filename: string) {\n\t\tconst file = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\tfilename,\n\t\t\tresults.files\n\t\t)\n\n\t\tconst schema = await this.Service('import').importDefault(file)\n\n\t\treturn schema\n\t}\n\n\tprivate static async assertTypesFileGeneratesArraySelect(typesFile: string) {\n\t\tconst contents = diskUtil.readFile(typesFile)\n\t\tassert.doesInclude(contents, `'favoriteColors'?: (\"blue\" | \"red\")[]`)\n\t}\n\n\tprivate static async copyMockCoreSchemas() {\n\t\tconst source = this.resolveTestPath('mock_core_builders')\n\t\tconst destination = this.resolvePath('src', 'schemas')\n\n\t\tawait diskUtil.copyDir(source, destination)\n\t}\n}\n"],"file":"KeepingSchemasInSync.test.js"}
1
+ {"version":3,"sources":["../../../../src/__tests__/behavioral/schemas/KeepingSchemasInSync.test.ts"],"names":["TYPE_FILE_COUNT","SYNC_FILE_COUNT","Object","keys","coreSchemas","length","MOCK_CORE_SYNC_FILE_COUNT","KeepsSchemasInSyncTest","Cli","assert","isFunction","Action","execute","doesThrowAsync","err","errorAssertUtil","assertError","installSchemaFeature","results","isFalsy","errors","testUtil","assertCountsByAction","files","updated","generated","skipped","shouldFetchCoreSchemas","tmpFile","resolveHashSprucePath","isFalse","diskUtil","doesFileExist","copyMockCoreSchemas","coreSyncOptions","isUndefined","isTruthy","isLength","isTrue","coreSchemaTypesFile","assertTypesFileGeneratesArraySelect","syncSchemas","isAbove","typesContents","readFile","doesInclude","RegExp","CORE_NAMESPACE","CORE_SCHEMA_VERSION","constValue","assertValidActionResponseFiles","doesNotInclude","DEFAULT_GLOBAL_SCHEMA_NAMESPACE","orgSchema","assertFileByNameInGeneratedFiles","locationSchemaContents","pkg","Service","set","path","value","nameReadable","nameCamel","createResponse","builderPath","contents","replace","writeFile","syncResults","testSchema","testSchemaContents","values","schema","id","match","version","versionUtil","generateVersion","typeChecker","createAction","matcher","pathUtil","dirname","schemaTypesFile","builderFile","dirValue","schemaFile","check","deleteFile","namespaceFolder","doesDirExist","FeatureFixture","installCachedFeatures","promise","waitForInput","ui","sendInput","schemasDir","resolvePath","copyDir","resolveTestPath","importSchema","fields","phone","minArrayLength","isEqual","favoriteColors","permissions","beforeFolder","afterFolder","Store","setCurrentSkillsNamespace","testSchemaPath","schemaPath","importDefault","imported","importsWhenRemote","typeSuffix","filename","file","typesFile","source","destination","AbstractSchemaTest","shouldGenerateCoreSchemaTypes"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AAOA;;AACA;;AACA;;AACA;;;;;;;;;;;;AAEA;AACA,IAAMA,eAAe,GAAG,CAAxB,C,CAA0B;;AAC1B,IAAMC,eAAe,GAAGC,MAAM,CAACC,IAAP,CAAYC,WAAZ,EAAyBC,MAAzB,GAAkCL,eAA1D;AACA,IAAMM,yBAAyB,GAAG,IAAIN,eAAtC;IAEqBO,sB,WAKnB,iB,UAMA,iB,UAWA,iB,UAgBA,iB,UAiBA,iB,UAiBA,iB,UAyBA,iB,UAiBA,iB,UAsBA,iB,WAmCA,iB,WAkCA,iB,WAmCA,iB,WAuBA,iB,WAmEA,iB,WAoBA,gBAAK,yCAAL,C,WAgBA,iB,WAuBA,iB;;;;;;;;;;;;;+GAhYD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAEO,KAAKC,GAAL,EAFP;;AAAA;AAGCC,6BAAOC,UAAP,CAAkB,KAAKC,MAAL,CAAY,QAAZ,EAAsB,MAAtB,EAA8BC,OAAhD;;AAHD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;6HAMA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAEO,KAAKJ,GAAL,EAFP;;AAAA;AAAA;AAAA,uBAImBC,aAAOI,cAAP,CAAsB;AAAA,yBACvC,KAAI,CAACF,MAAL,CAAY,QAAZ,EAAsB,MAAtB,EAA8BC,OAA9B,CAAsC,EAAtC,CADuC;AAAA,iBAAtB,CAJnB;;AAAA;AAIOE,gBAAAA,GAJP;;AAQCC,2CAAgBC,WAAhB,CAA4BF,GAA5B,EAAiC,uBAAjC;;AARD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;wHAWA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAEO,KAAKG,oBAAL,CAA0B,SAA1B,CAFP;;AAAA;AAAA;AAAA,uBAIuB,KAAKN,MAAL,CAAY,QAAZ,EAAsB,MAAtB,EAA8BC,OAA9B,CAAsC,EAAtC,CAJvB;;AAAA;AAIOM,gBAAAA,OAJP;;AAMCT,6BAAOU,OAAP,CAAeD,OAAO,CAACE,MAAvB,EAND,CAQC;;;AACAC,kCAASC,oBAAT,CAA8BJ,OAAO,CAACK,KAAtC,EAA6C;AAC5CC,kBAAAA,OAAO,EAAE,CADmC;AAE5CC,kBAAAA,SAAS,EAAExB,eAFiC;AAG5CyB,kBAAAA,OAAO,EAAE;AAHmC,iBAA7C;;AATD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;gJAgBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAEO,KAAKT,oBAAL,CAA0B,SAA1B,CAFP;;AAAA;AAAA;AAAA,uBAIuB,KAAKN,MAAL,CAAY,QAAZ,EAAsB,MAAtB,EAA8BC,OAA9B,CAAsC;AAC3De,kBAAAA,sBAAsB,EAAE;AADmC,iBAAtC,CAJvB;;AAAA;AAIOT,gBAAAA,OAJP;;AAQCT,6BAAOU,OAAP,CAAeD,OAAO,CAACE,MAAvB;;AAEAC,kCAASC,oBAAT,CAA8BJ,OAAO,CAACK,KAAtC,EAA6C;AAC5CC,kBAAAA,OAAO,EAAE,CADmC;AAE5CC,kBAAAA,SAAS,EAAEzB,eAFiC;AAG5C0B,kBAAAA,OAAO,EAAE;AAHmC,iBAA7C;;AAVD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;oHAiBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAEO,KAAKT,oBAAL,CAA0B,SAA1B,CAFP;;AAAA;AAAA;AAAA,uBAIuB,KAAKN,MAAL,CAAY,QAAZ,EAAsB,MAAtB,EAA8BC,OAA9B,CAAsC,EAAtC,CAJvB;;AAAA;AAIOM,gBAAAA,OAJP;;AAMCT,6BAAOU,OAAP,CAAeD,OAAO,CAACE,MAAvB;;AAEMQ,gBAAAA,OARP,GAQiB,KAAKC,qBAAL,CACf,SADe,EAEf,KAFe,EAGf,kBAHe,CARjB;;AAcCpB,6BAAOqB,OAAP,CAAeC,2BAASC,aAAT,CAAuBJ,OAAvB,CAAf;;AAdD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;gIAiBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAEO,KAAKX,oBAAL,CAA0B,SAA1B,CAFP;;AAAA;AAAA;AAAA,uBAGO,KAAKgB,mBAAL,EAHP;;AAAA;AAAA;AAAA,uBAKuB,KAAKtB,MAAL,CAAY,QAAZ,EAAsB,MAAtB,EAA8BC,OAA9B,CACrB,KAAKsB,eADgB,CALvB;;AAAA;AAKOhB,gBAAAA,OALP;;AASCT,6BAAO0B,WAAP,CAAmBjB,OAAO,CAACE,MAA3B;;AACAX,6BAAO2B,QAAP,CAAgBlB,OAAO,CAACK,KAAxB;;AAEAd,6BAAO4B,QAAP,CAAgBnB,OAAO,CAACK,KAAxB,EAA+BjB,yBAA/B;;AAEAe,kCAASC,oBAAT,CAA8BJ,OAAO,CAACK,KAAtC,EAA6C;AAC5CE,kBAAAA,SAAS,EAAEnB,yBADiC;AAE5CoB,kBAAAA,OAAO,EAAE,CAFmC;AAG5CF,kBAAAA,OAAO,EAAE;AAHmC,iBAA7C;;AAMAf,6BAAO6B,MAAP,CAAcP,2BAASC,aAAT,CAAuB,KAAKO,mBAA5B,CAAd;;AApBD;AAAA,uBAsBO,KAAKC,mCAAL,CAAyC,KAAKD,mBAA9C,CAtBP;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;sHAyBA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAEO,KAAKE,WAAL,CAAiB,SAAjB,EAA4B,KAAKP,eAAjC,CAFP;;AAAA;AAAA;AAAA,uBAGuB,KAAKvB,MAAL,CAAY,QAAZ,EAAsB,MAAtB,EAA8BC,OAA9B,CACrB,KAAKsB,eADgB,CAHvB;;AAAA;AAGOhB,gBAAAA,OAHP;;AAOCT,6BAAOU,OAAP,CAAeD,OAAO,CAACE,MAAvB;;AACAX,6BAAOiC,OAAP,mBAAexB,OAAO,CAACK,KAAvB,mDAAe,eAAelB,MAA9B,EAAsC,CAAtC;;AAEAgB,kCAASC,oBAAT,CAA8BJ,OAAO,CAACK,KAAtC,EAA6C;AAC5CE,kBAAAA,SAAS,EAAE,CADiC;AAE5CC,kBAAAA,OAAO,8CAAER,OAAO,CAACK,KAAV,oDAAE,gBAAelB,MAAjB,yEAA2B,CAFU;AAG5CmB,kBAAAA,OAAO,EAAE;AAHmC,iBAA7C;;AAVD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;2HAiBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAEO,KAAKP,oBAAL,CAA0B,SAA1B,CAFP;;AAAA;AAAA;AAAA,uBAIO,KAAKgB,mBAAL,EAJP;;AAAA;AAAA;AAAA,uBAMuB,KAAKtB,MAAL,CAAY,QAAZ,EAAsB,MAAtB,EAA8BC,OAA9B,CACrB,KAAKsB,eADgB,CANvB;;AAAA;AAMOhB,gBAAAA,OANP;;AAUCT,6BAAOU,OAAP,CAAeD,OAAO,CAACE,MAAvB;;AAEMuB,gBAAAA,aAZP,GAYuBZ,2BAASa,QAAT,CAAkB,KAAKL,mBAAvB,CAZvB;;AAaC9B,6BAAOoC,WAAP,CACCF,aADD,EAEC,IAAIG,MAAJ,yBACkBC,gCADlB,cACoCC,sCAAoBC,UADxD,4BAEC,KAFD,CAFD;;AAbD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;4IAsBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAEO,KAAKhC,oBAAL,CAA0B,SAA1B,CAFP;;AAAA;AAAA;AAAA,uBAIO,KAAKgB,mBAAL,EAJP;;AAAA;AAAA;AAAA,uBAMuB,KAAKtB,MAAL,CAAY,QAAZ,EAAsB,MAAtB,EAA8BC,OAA9B,CACrB,KAAKsB,eADgB,CANvB;;AAAA;AAMOhB,gBAAAA,OANP;;AAUCT,6BAAOU,OAAP,CAAeD,OAAO,CAACE,MAAvB;;AACAX,6BAAO2B,QAAP,CAAgBlB,OAAO,CAACK,KAAxB;;AAXD;AAAA,uBAaO,KAAK2B,8BAAL,CAAoChC,OAApC,CAbP;;AAAA;AAeOyB,gBAAAA,aAfP,GAeuBZ,2BAASa,QAAT,CAAkB,KAAKL,mBAAvB,CAfvB;;AAiBC9B,6BAAO0C,cAAP,CAAsBR,aAAtB,EAAqC,oCAArC;;AACAlC,6BAAOoC,WAAP,CACCF,aADD,EAEC,IAAIG,MAAJ,oCAC6BM,iDAD7B,cACgEL,gCADhE,cACkFC,sCAAoBC,UADtG,GAEC,KAFD,CAFD;;AAQMI,gBAAAA,SA1BP,GA0BmBhC,kBAASiC,gCAAT,CACjB,wBADiB,EAEjBpC,OAAO,CAACK,KAFS,CA1BnB;AA+BOgC,gBAAAA,sBA/BP,GA+BgCxB,2BAASa,QAAT,CAAkBS,SAAlB,CA/BhC;;AAgCC5C,6BAAOoC,WAAP,CAAmBU,sBAAnB,EAA2C,gBAA3C;;AAhCD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;iIAmCA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAEO,KAAKtC,oBAAL,CAA0B,SAA1B,CAFP;;AAAA;AAIOuC,gBAAAA,GAJP,GAIa,KAAKC,OAAL,CAAa,KAAb,CAJb;AAKCD,gBAAAA,GAAG,CAACE,GAAJ,CAAQ;AAAEC,kBAAAA,IAAI,EAAE,MAAR;AAAgBC,kBAAAA,KAAK,EAAE;AAAvB,iBAAR;AALD;AAAA,uBAOO,KAAK3B,mBAAL,EAPP;;AAAA;AAAA;AAAA,uBASuB,KAAKtB,MAAL,CAAY,QAAZ,EAAsB,MAAtB,EAA8BC,OAA9B,CAAsC,EAAtC,CATvB;;AAAA;AASOM,gBAAAA,OATP;;AAWCT,6BAAOU,OAAP,CAAeD,OAAO,CAACE,MAAvB;;AACAX,6BAAO2B,QAAP,CAAgBlB,OAAO,CAACK,KAAxB;;AAEMoB,gBAAAA,aAdP,GAcuBZ,2BAASa,QAAT,CAAkB,KAAKL,mBAAvB,CAdvB;;AAgBC9B,6BAAO0C,cAAP,CAAsBR,aAAtB,EAAqC,oCAArC;;AACAlC,6BAAOoC,WAAP,CACCF,aADD,EAEC,IAAIG,MAAJ,oCAC6BM,iDAD7B,cACgEL,gCADhE,cACkFC,sCAAoBC,UADtG,GAEC,KAFD,CAFD;;AAQMI,gBAAAA,SAzBP,GAyBmBhC,kBAASiC,gCAAT,CACjB,wBADiB,EAEjBpC,OAAO,CAACK,KAFS,CAzBnB;AA8BOgC,gBAAAA,sBA9BP,GA8BgCxB,2BAASa,QAAT,CAAkBS,SAAlB,CA9BhC;;AA+BC5C,6BAAOoC,WAAP,CAAmBU,sBAAnB,EAA2C,gBAA3C;;AA/BD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;oHAkCA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAEO,KAAKd,WAAL,CAAiB,SAAjB,CAFP;;AAAA;AAAA;AAAA,uBAI8B,KAAK9B,MAAL,CAAY,QAAZ,EAAsB,QAAtB,EAAgCC,OAAhC,CAAwC;AACpEiD,kBAAAA,YAAY,EAAE,aADsD;AAEpEC,kBAAAA,SAAS,EAAE;AAFyD,iBAAxC,CAJ9B;;AAAA;AAIOC,gBAAAA,cAJP;;AASCtD,6BAAOU,OAAP,CAAe4C,cAAc,CAAC3C,MAA9B;;AAEM4C,gBAAAA,WAXP,GAWqB3C,kBAASiC,gCAAT,CACnB,uBADmB,EAEnBS,cAAc,CAACxC,KAFI,CAXrB;AAgBO0C,gBAAAA,QAhBP,GAgBkBlC,2BACfa,QADe,CACNoB,WADM,EAEfE,OAFe,CAEP,kBAFO,EAEa,mBAFb,CAhBlB;;AAoBCnC,2CAASoC,SAAT,CAAmBH,WAAnB,EAAgCC,QAAhC;;AApBD;AAAA,uBAsB2B,KAAKtD,MAAL,CAAY,QAAZ,EAAsB,MAAtB,EAA8BC,OAA9B,CAAsC,EAAtC,CAtB3B;;AAAA;AAsBOwD,gBAAAA,WAtBP;AAwBOC,gBAAAA,UAxBP,GAwBoBhD,kBAASiC,gCAAT,CAClB,uBADkB,EAElBc,WAAW,CAAC7C,KAFM,CAxBpB;AA6BO+C,gBAAAA,kBA7BP,GA6B4BvC,2BAASa,QAAT,CAAkByB,UAAlB,CA7B5B;;AA8BC5D,6BAAOoC,WAAP,CAAmByB,kBAAnB,EAAuC,gBAAvC;;AA9BD;AAAA,uBAgCO,KAAKpB,8BAAL,CAAoCkB,WAApC,CAhCP;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;sJAmCA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAEO,KAAK3B,WAAL,CAAiB,SAAjB,CAFP;;AAAA;AAAA;AAAA,uBAI8B,KAAK9B,MAAL,CAAY,QAAZ,EAAsB,QAAtB,EAAgCC,OAAhC,CAAwC;AACpEiD,kBAAAA,YAAY,EAAE,aADsD;AAEpEC,kBAAAA,SAAS,EAAE;AAFyD,iBAAxC,CAJ9B;;AAAA;AAIOC,gBAAAA,cAJP;;AASC,8CAAqB7D,MAAM,CAACqE,MAAP,CAAcnE,WAAd,CAArB,oCAAiD;AAAtCoE,kBAAAA,MAAsC;AAC1CC,kBAAAA,EAD0C,GACrCD,MAAM,CAACC,EAD8B;AAE1CC,kBAAAA,KAF0C,GAElCrD,kBAASiC,gCAAT,WACVmB,EADU,iBAEbV,cAAc,CAACxC,KAFF,CAFkC;AAM1C0C,kBAAAA,QAN0C,GAM/BlC,2BAASa,QAAT,CAAkB8B,KAAlB,CAN+B;;AAOhDjE,+BAAOoC,WAAP,CACCoB,QADD,qBAEaQ,EAFb;AAIA;;AApBF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;mIAuBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAEO,KAAKhC,WAAL,CAAiB,SAAjB,CAFP;;AAAA;AAGOkC,gBAAAA,OAHP,GAGiBC,8BAAYC,eAAZ,EAHjB;AAIOC,gBAAAA,WAJP,GAIqB,KAAKrB,OAAL,CAAa,aAAb,CAJrB;AAKOsB,gBAAAA,YALP,GAKsB,KAAKpE,MAAL,CAAY,QAAZ,EAAsB,QAAtB,CALtB;AAOOqE,gBAAAA,OAPP,GAOiB,IAAIlC,MAAJ,wCACiB6B,OAAO,CAAC1B,UADzB,gCAEf,KAFe,CAPjB;;AAYCxC,6BAAO6B,MAAP,CACCP,2BAASC,aAAT,CAAuBiD,iBAASC,OAAT,CAAiB,KAAKC,eAAtB,CAAvB,CADD;;AAZD;AAAA,uBAgB8BJ,YAAY,CAACnE,OAAb,CAAqB;AACjDiD,kBAAAA,YAAY,EAAE,aADmC;AAEjDC,kBAAAA,SAAS,EAAE;AAFsC,iBAArB,CAhB9B;;AAAA;AAgBOC,gBAAAA,cAhBP;AAqBOqB,gBAAAA,WArBP,GAqBqB/D,kBAASiC,gCAAT,CACnB,qBADmB,EAEnBS,cAAc,CAACxC,KAFI,CArBrB,EA0BC;;AACAd,6BAAOoC,WAAP,CAAmBuC,WAAnB,EAAgCT,OAAO,CAACU,QAAxC;;AAEMC,gBAAAA,UA7BP,GA6BoBjE,kBAASiC,gCAAT,CAClB,oBADkB,EAElBS,cAAc,CAACxC,KAFG,CA7BpB,EAkCC;;AACAd,6BAAOoC,WAAP,CAAmByC,UAAnB,EAA+BX,OAAO,CAACU,QAAvC;;AACA5E,6BAAOoC,WAAP,CAAmByC,UAAnB,EAA+B,kBAA/B,EApCD,CAsCC;;;AAtCD;AAAA,uBAuCOR,WAAW,CAACS,KAAZ,CAAkB,KAAKJ,eAAvB,CAvCP;;AAAA;AAyCC;AACIxC,gBAAAA,aA1CL,GA0CqBZ,2BAASa,QAAT,CAAkB,KAAKuC,eAAvB,CA1CrB;;AA2CC1E,6BAAOoC,WAAP,CAAmBF,aAAnB,EAAkCqC,OAAlC,EA3CD,CA6CC;;;AACAvE,6BAAO6B,MAAP,CAAcP,2BAASC,aAAT,CAAuBsD,UAAvB,CAAd,EA9CD,CAgDC;;;AACAvD,2CAASyD,UAAT,CAAoBJ,WAApB,EAjDD,CAmDC;;;AAnDD;AAAA,uBAoDO,KAAKzE,MAAL,CAAY,QAAZ,EAAsB,MAAtB,EAA8BC,OAA9B,CAAsC,EAAtC,CApDP;;AAAA;AAsDCH,6BAAO6B,MAAP,CAAcP,2BAASC,aAAT,CAAuB,KAAKmD,eAA5B,CAAd,EAtDD,CAwDC;;;AACA1E,6BAAOqB,OAAP,CAAeC,2BAASC,aAAT,CAAuBsD,UAAvB,CAAf,EAzDD,CA2DC;;;AACMG,gBAAAA,eA5DP,GA4DyB,KAAK5D,qBAAL,CACvB,SADuB,EAEvB,gBAFuB,CA5DzB;;AAgECpB,6BAAOqB,OAAP,CAAeC,2BAAS2D,YAAT,CAAsBD,eAAtB,CAAf;;AAhED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;mKAmEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAEO,KAAKE,cAAL,GAAsBC,qBAAtB,CAA4C,qBAA5C,CAFP;;AAAA;AAIOC,gBAAAA,OAJP,GAIiB,KAAKlF,MAAL,CAAY,QAAZ,EAAsB,MAAtB,EAA8BC,OAA9B,CAAsC,EAAtC,CAJjB;AAAA;AAAA,uBAMO,KAAKkF,YAAL,EANP;;AAAA;AAAA;AAAA,uBAQO,KAAKC,EAAL,CAAQC,SAAR,CAAkB,GAAlB,CARP;;AAAA;AAAA;AAAA,uBAUO,KAAKF,YAAL,EAVP;;AAAA;AAAA;AAAA,uBAYO,KAAKC,EAAL,CAAQC,SAAR,CAAkB,EAAlB,CAZP;;AAAA;AAAA;AAAA,uBAcuBH,OAdvB;;AAAA;AAcO3E,gBAAAA,OAdP;;AAgBCT,6BAAOU,OAAP,CAAeD,OAAO,CAACE,MAAvB;;AAhBD;AAAA,uBAiBO,KAAK8B,8BAAL,CAAoChC,OAApC,CAjBP;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;+GAoBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAEO,KAAKuB,WAAL,CAAiB,SAAjB,CAFP;;AAAA;AAIOwD,gBAAAA,UAJP,GAIoB,KAAKC,WAAL,CAAiB,KAAjB,EAAwB,SAAxB,CAJpB;AAAA;AAAA,uBAMOnE,2BAASoE,OAAT,CAAiB,KAAKC,eAAL,CAAqB,eAArB,CAAjB,EAAwDH,UAAxD,CANP;;AAAA;AAAA;AAAA,uBAQuB,KAAKtF,MAAL,CAAY,QAAZ,EAAsB,MAAtB,EAA8BC,OAA9B,CAAsC,EAAtC,CARvB;;AAAA;AAQOM,gBAAAA,OARP;AAAA;AAAA,uBASsB,KAAKmF,YAAL,CAAkBnF,OAAlB,EAA2B,qBAA3B,CATtB;;AAAA;AASOsD,gBAAAA,MATP;;AAWC/D,6BAAO0B,WAAP,CAAmBqC,MAAM,CAAC8B,MAAP,CAAcC,KAAd,CAAoBC,cAAvC;;AACA/F,6BAAOgG,OAAP,CAAejC,MAAM,CAAC8B,MAAP,CAAcI,cAAd,CAA6BF,cAA5C,EAA4D,CAA5D;;AACA/F,6BAAOgG,OAAP,CAAejC,MAAM,CAAC8B,MAAP,CAAcK,WAAd,CAA0BH,cAAzC,EAAyD,CAAzD;;AAbD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;mHAgBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAEO,KAAK/D,WAAL,CAAiB,SAAjB,CAFP;;AAAA;AAAA;AAAA,uBAIO,KAAK9B,MAAL,CAAY,QAAZ,EAAsB,QAAtB,EAAgCC,OAAhC,CAAwC;AAC7CiD,kBAAAA,YAAY,EAAE,aAD+B;AAE7CC,kBAAAA,SAAS,EAAE;AAFkC,iBAAxC,CAJP;;AAAA;AASO8C,gBAAAA,YATP,GASsB,KAAK/E,qBAAL,CAA2B,SAA3B,EAAsC,gBAAtC,CATtB;AAUOgF,gBAAAA,WAVP,GAUqB,KAAKhF,qBAAL,CAA2B,SAA3B,EAAsC,cAAtC,CAVrB;;AAYCpB,6BAAO6B,MAAP,CAAcP,2BAASC,aAAT,CAAuB4E,YAAvB,CAAd;;AACAnG,6BAAOqB,OAAP,CAAeC,2BAASC,aAAT,CAAuB6E,WAAvB,CAAf;;AAbD;AAAA,uBAeO,KAAKC,KAAL,CAAW,OAAX,EAAoBC,yBAApB,CAA8C,eAA9C,CAfP;;AAAA;AAAA;AAAA,uBAiBO,KAAKpG,MAAL,CAAY,QAAZ,EAAsB,MAAtB,EAA8BC,OAA9B,CAAsC,EAAtC,CAjBP;;AAAA;AAmBCH,6BAAOqB,OAAP,CAAeC,2BAASC,aAAT,CAAuB4E,YAAvB,CAAf;;AACAnG,6BAAO6B,MAAP,CAAcP,2BAASC,aAAT,CAAuB6E,WAAvB,CAAd;;AApBD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;sIAuBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAEO,KAAK5F,oBAAL,CAA0B,SAA1B,CAFP;;AAAA;AAAA;AAAA,uBAIuB,KAAKN,MAAL,CAAY,QAAZ,EAAsB,QAAtB,EAAgCC,OAAhC,CAAwC;AAC7DiD,kBAAAA,YAAY,EAAE,aAD+C;AAE7DC,kBAAAA,SAAS,EAAE;AAFkD,iBAAxC,CAJvB;;AAAA;AAIO5C,gBAAAA,OAJP;AASO8F,gBAAAA,cATP,GASwB3F,kBAASiC,gCAAT,CACtB,uBADsB,EAEtBpC,OAAO,CAACK,KAFc,CATxB;;AAcCQ,2CAASoC,SAAT,CACC6C,cADD;;AAdD;AAAA,uBA0C2B,KAAKrG,MAAL,CAAY,QAAZ,EAAsB,MAAtB,EAA8BC,OAA9B,CAAsC,EAAtC,CA1C3B;;AAAA;AA0COwD,gBAAAA,WA1CP;AA4CO6C,gBAAAA,UA5CP,GA4CoB5F,kBAASiC,gCAAT,CAClB,sBADkB,EAElBc,WAAW,CAAC7C,KAFM,CA5CpB;AAAA;AAAA,uBAiDwB,KAAKkC,OAAL,CAAa,QAAb,EAAuByD,aAAvB,CAAqCD,UAArC,CAjDxB;;AAAA;AAiDOE,gBAAAA,QAjDP;;AAmDC1G,6BAAOoC,WAAP,CAAmBsE,QAAnB,EAA6B;AAC5BC,kBAAAA,iBAAiB,EAAE,CAAC,8CAAD,CADS;AAE5BC,kBAAAA,UAAU,EAAE;AAFgB,iBAA7B;;AAnDD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;wGAyDA,mBAAkCnG,OAAlC,EAAgDoG,QAAhD;AAAA;AAAA;AAAA;AAAA;AAAA;AACOC,gBAAAA,IADP,GACclG,kBAASiC,gCAAT,CACZgE,QADY,EAEZpG,OAAO,CAACK,KAFI,CADd;AAAA;AAAA,uBAMsB,KAAKkC,OAAL,CAAa,QAAb,EAAuByD,aAAvB,CAAqCK,IAArC,CANtB;;AAAA;AAMO/C,gBAAAA,MANP;AAAA,mDAQQA,MARR;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;+HAWA,mBAAyDgD,SAAzD;AAAA;AAAA;AAAA;AAAA;AAAA;AACOvD,gBAAAA,QADP,GACkBlC,2BAASa,QAAT,CAAkB4E,SAAlB,CADlB;;AAEC/G,6BAAOoC,WAAP,CAAmBoB,QAAnB;;AAFD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;+GAKA;AAAA;AAAA;AAAA;AAAA;AAAA;AACOwD,gBAAAA,MADP,GACgB,KAAKrB,eAAL,CAAqB,oBAArB,CADhB;AAEOsB,gBAAAA,WAFP,GAEqB,KAAKxB,WAAL,CAAiB,KAAjB,EAAwB,SAAxB,CAFrB;AAAA;AAAA,uBAIOnE,2BAASoE,OAAT,CAAiBsB,MAAjB,EAAyBC,WAAzB,CAJP;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;EA9cmDC,+B,gEACT;AACzCC,EAAAA,6BAA6B,EAAE;AADU,C","sourcesContent":["import pathUtil from 'path'\nimport * as coreSchemas from '@sprucelabs/spruce-core-schemas'\nimport { versionUtil } from '@sprucelabs/spruce-skill-utils'\nimport { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport {\n\tCORE_SCHEMA_VERSION,\n\tCORE_NAMESPACE,\n\tDEFAULT_GLOBAL_SCHEMA_NAMESPACE,\n} from '@sprucelabs/spruce-skill-utils'\nimport { assert, test } from '@sprucelabs/test'\nimport { errorAssertUtil } from '@sprucelabs/test-utils'\nimport AbstractSchemaTest from '../../../tests/AbstractSchemaTest'\nimport testUtil from '../../../tests/utilities/test.utility'\n\n//TODO rethink how to check for count of files and results or where it may make sense to move this test\nconst TYPE_FILE_COUNT = 2 // (only fieldMap and field.types... schema.types checked by +1 in tests)\nconst SYNC_FILE_COUNT = Object.keys(coreSchemas).length + TYPE_FILE_COUNT\nconst MOCK_CORE_SYNC_FILE_COUNT = 4 + TYPE_FILE_COUNT\n\nexport default class KeepsSchemasInSyncTest extends AbstractSchemaTest {\n\tprivate static readonly coreSyncOptions = {\n\t\tshouldGenerateCoreSchemaTypes: true,\n\t}\n\n\t@test()\n\tprotected static async hasSyncSchemaAction() {\n\t\tawait this.Cli()\n\t\tassert.isFunction(this.Action('schema', 'sync').execute)\n\t}\n\n\t@test()\n\tprotected static async failsBecauseSchemasIsNotInstalled() {\n\t\tawait this.Cli()\n\n\t\tconst err = await assert.doesThrowAsync(() =>\n\t\t\tthis.Action('schema', 'sync').execute({})\n\t\t)\n\n\t\terrorAssertUtil.assertError(err, 'FEATURE_NOT_INSTALLED')\n\t}\n\n\t@test()\n\tprotected static async syncingWithNoSchemasSucceeds() {\n\t\tawait this.installSchemaFeature('schemas')\n\n\t\tconst results = await this.Action('schema', 'sync').execute({})\n\n\t\tassert.isFalsy(results.errors)\n\n\t\t//TODO determine better way to count files\n\t\ttestUtil.assertCountsByAction(results.files, {\n\t\t\tupdated: 0,\n\t\t\tgenerated: SYNC_FILE_COUNT,\n\t\t\tskipped: 0,\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async syncingWithNoSchemasAndFetchCoreSchemasFalseSucceeds() {\n\t\tawait this.installSchemaFeature('schemas')\n\n\t\tconst results = await this.Action('schema', 'sync').execute({\n\t\t\tshouldFetchCoreSchemas: false,\n\t\t})\n\n\t\tassert.isFalsy(results.errors)\n\n\t\ttestUtil.assertCountsByAction(results.files, {\n\t\t\tupdated: 0,\n\t\t\tgenerated: TYPE_FILE_COUNT,\n\t\t\tskipped: 0,\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async syncingCleansUpTempFiles() {\n\t\tawait this.installSchemaFeature('schemas')\n\n\t\tconst results = await this.Action('schema', 'sync').execute({})\n\n\t\tassert.isFalsy(results.errors)\n\n\t\tconst tmpFile = this.resolveHashSprucePath(\n\t\t\t'schemas',\n\t\t\t'tmp',\n\t\t\t'valueType.tmp.ts'\n\t\t)\n\n\t\tassert.isFalse(diskUtil.doesFileExist(tmpFile))\n\t}\n\n\t@test()\n\tprotected static async syncingCoreSchemasGeneratesTypesFile() {\n\t\tawait this.installSchemaFeature('schemas')\n\t\tawait this.copyMockCoreSchemas()\n\n\t\tconst results = await this.Action('schema', 'sync').execute(\n\t\t\tthis.coreSyncOptions\n\t\t)\n\n\t\tassert.isUndefined(results.errors)\n\t\tassert.isTruthy(results.files)\n\n\t\tassert.isLength(results.files, MOCK_CORE_SYNC_FILE_COUNT)\n\n\t\ttestUtil.assertCountsByAction(results.files, {\n\t\t\tgenerated: MOCK_CORE_SYNC_FILE_COUNT,\n\t\t\tskipped: 0,\n\t\t\tupdated: 0,\n\t\t})\n\n\t\tassert.isTrue(diskUtil.doesFileExist(this.coreSchemaTypesFile))\n\n\t\tawait this.assertTypesFileGeneratesArraySelect(this.coreSchemaTypesFile)\n\t}\n\n\t@test()\n\tprotected static async syncSchemasTwiceSkipsFiles() {\n\t\tawait this.syncSchemas('schemas', this.coreSyncOptions)\n\t\tconst results = await this.Action('schema', 'sync').execute(\n\t\t\tthis.coreSyncOptions\n\t\t)\n\n\t\tassert.isFalsy(results.errors)\n\t\tassert.isAbove(results.files?.length, 0)\n\n\t\ttestUtil.assertCountsByAction(results.files, {\n\t\t\tgenerated: 0,\n\t\t\tskipped: results.files?.length ?? 0,\n\t\t\tupdated: 0,\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async makeSureSchemaTypesAreVersioned() {\n\t\tawait this.installSchemaFeature('schemas')\n\n\t\tawait this.copyMockCoreSchemas()\n\n\t\tconst results = await this.Action('schema', 'sync').execute(\n\t\t\tthis.coreSyncOptions\n\t\t)\n\n\t\tassert.isFalsy(results.errors)\n\n\t\tconst typesContents = diskUtil.readFile(this.coreSchemaTypesFile)\n\t\tassert.doesInclude(\n\t\t\ttypesContents,\n\t\t\tnew RegExp(\n\t\t\t\t`SpruceSchemas.${CORE_NAMESPACE}.${CORE_SCHEMA_VERSION.constValue}(.*?)interface Person`,\n\t\t\t\t'gis'\n\t\t\t)\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async shouldGenerateCoreSchemaTypesGeneratesValidFiles() {\n\t\tawait this.installSchemaFeature('schemas')\n\n\t\tawait this.copyMockCoreSchemas()\n\n\t\tconst results = await this.Action('schema', 'sync').execute(\n\t\t\tthis.coreSyncOptions\n\t\t)\n\n\t\tassert.isFalsy(results.errors)\n\t\tassert.isTruthy(results.files)\n\n\t\tawait this.assertValidActionResponseFiles(results)\n\n\t\tconst typesContents = diskUtil.readFile(this.coreSchemaTypesFile)\n\n\t\tassert.doesNotInclude(typesContents, /@sprucelabs\\/spruce-core-schemas/gi)\n\t\tassert.doesInclude(\n\t\t\ttypesContents,\n\t\t\tnew RegExp(\n\t\t\t\t`export declare namespace ${DEFAULT_GLOBAL_SCHEMA_NAMESPACE}.${CORE_NAMESPACE}.${CORE_SCHEMA_VERSION.constValue}`,\n\t\t\t\t'gis'\n\t\t\t)\n\t\t)\n\n\t\tconst orgSchema = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'organization.schema.ts',\n\t\t\tresults.files\n\t\t)\n\n\t\tconst locationSchemaContents = diskUtil.readFile(orgSchema)\n\t\tassert.doesInclude(locationSchemaContents, 'SchemaRegistry')\n\t}\n\n\t@test()\n\tprotected static async generateCoreSchemaInCoreSchemasModule() {\n\t\tawait this.installSchemaFeature('schemas')\n\n\t\tconst pkg = this.Service('pkg')\n\t\tpkg.set({ path: 'name', value: '@sprucelabs/spruce-core-schemas' })\n\n\t\tawait this.copyMockCoreSchemas()\n\n\t\tconst results = await this.Action('schema', 'sync').execute({})\n\n\t\tassert.isFalsy(results.errors)\n\t\tassert.isTruthy(results.files)\n\n\t\tconst typesContents = diskUtil.readFile(this.coreSchemaTypesFile)\n\n\t\tassert.doesNotInclude(typesContents, /@sprucelabs\\/spruce-core-schemas/gi)\n\t\tassert.doesInclude(\n\t\t\ttypesContents,\n\t\t\tnew RegExp(\n\t\t\t\t`export declare namespace ${DEFAULT_GLOBAL_SCHEMA_NAMESPACE}.${CORE_NAMESPACE}.${CORE_SCHEMA_VERSION.constValue}`,\n\t\t\t\t'gis'\n\t\t\t)\n\t\t)\n\n\t\tconst orgSchema = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'organization.schema.ts',\n\t\t\tresults.files\n\t\t)\n\n\t\tconst locationSchemaContents = diskUtil.readFile(orgSchema)\n\t\tassert.doesInclude(locationSchemaContents, 'SchemaRegistry')\n\t}\n\n\t@test()\n\tprotected static async canHandleHyphenSchemaIds() {\n\t\tawait this.syncSchemas('schemas')\n\n\t\tconst createResponse = await this.Action('schema', 'create').execute({\n\t\t\tnameReadable: 'Test schema',\n\t\t\tnameCamel: 'testSchema',\n\t\t})\n\n\t\tassert.isFalsy(createResponse.errors)\n\n\t\tconst builderPath = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'testSchema.builder.ts',\n\t\t\tcreateResponse.files\n\t\t)\n\n\t\tconst contents = diskUtil\n\t\t\t.readFile(builderPath)\n\t\t\t.replace(\"id: 'testSchema'\", \"id: 'test-schema'\")\n\n\t\tdiskUtil.writeFile(builderPath, contents)\n\n\t\tconst syncResults = await this.Action('schema', 'sync').execute({})\n\n\t\tconst testSchema = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'test-schema.schema.ts',\n\t\t\tsyncResults.files\n\t\t)\n\n\t\tconst testSchemaContents = diskUtil.readFile(testSchema)\n\t\tassert.doesInclude(testSchemaContents, 'SchemaRegistry')\n\n\t\tawait this.assertValidActionResponseFiles(syncResults)\n\t}\n\n\t@test()\n\tprotected static async coreSchemasPullFromCoreSchemasModuleDuringNormalGeneration() {\n\t\tawait this.syncSchemas('schemas')\n\n\t\tconst createResponse = await this.Action('schema', 'create').execute({\n\t\t\tnameReadable: 'Test schema',\n\t\t\tnameCamel: 'testSchema',\n\t\t})\n\n\t\tfor (const schema of Object.values(coreSchemas)) {\n\t\t\tconst id = schema.id\n\t\t\tconst match = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t\t`${id}.schema.ts`,\n\t\t\t\tcreateResponse.files\n\t\t\t)\n\t\t\tconst contents = diskUtil.readFile(match)\n\t\t\tassert.doesInclude(\n\t\t\t\tcontents,\n\t\t\t\t`export { ${id}Schema as default } from '@sprucelabs/spruce-core-schemas'`\n\t\t\t)\n\t\t}\n\t}\n\n\t@test()\n\tprotected static async schemasStayInSyncWhenBuildersAreDeleted() {\n\t\tawait this.syncSchemas('schemas')\n\t\tconst version = versionUtil.generateVersion()\n\t\tconst typeChecker = this.Service('typeChecker')\n\t\tconst createAction = this.Action('schema', 'create')\n\n\t\tconst matcher = new RegExp(\n\t\t\t`SpruceSchemas.TestingSchemas.${version.constValue}(.*?)interface TestSchema`,\n\t\t\t'gis'\n\t\t)\n\n\t\tassert.isTrue(\n\t\t\tdiskUtil.doesFileExist(pathUtil.dirname(this.schemaTypesFile))\n\t\t)\n\n\t\tconst createResponse = await createAction.execute({\n\t\t\tnameReadable: 'Test schema',\n\t\t\tnameCamel: 'testSchema',\n\t\t})\n\n\t\tconst builderFile = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t/testSchema\\.builder/,\n\t\t\tcreateResponse.files\n\t\t)\n\n\t\t// make sure builder is versioned\n\t\tassert.doesInclude(builderFile, version.dirValue)\n\n\t\tconst schemaFile = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t/testSchema\\.schema/,\n\t\t\tcreateResponse.files\n\t\t)\n\n\t\t// make sure this path is versioned\n\t\tassert.doesInclude(schemaFile, version.dirValue)\n\t\tassert.doesInclude(schemaFile, '/testingSchemas/')\n\n\t\t// schema types should be good\n\t\tawait typeChecker.check(this.schemaTypesFile)\n\n\t\t// the types should include our test schema\n\t\tlet typesContents = diskUtil.readFile(this.schemaTypesFile)\n\t\tassert.doesInclude(typesContents, matcher)\n\n\t\t// the schema file should exist\n\t\tassert.isTrue(diskUtil.doesFileExist(schemaFile))\n\n\t\t// DELETE builder and make sure we are cleaned up\n\t\tdiskUtil.deleteFile(builderFile)\n\n\t\t// this should cleanup types and schema files\n\t\tawait this.Action('schema', 'sync').execute({})\n\n\t\tassert.isTrue(diskUtil.doesFileExist(this.schemaTypesFile))\n\n\t\t// and the schema should have been deleted\n\t\tassert.isFalse(diskUtil.doesFileExist(schemaFile))\n\n\t\t// and the namespace folder should have been deleted\n\t\tconst namespaceFolder = this.resolveHashSprucePath(\n\t\t\t'schemas',\n\t\t\t'testingSChemas'\n\t\t)\n\t\tassert.isFalse(diskUtil.doesDirExist(namespaceFolder))\n\t}\n\n\t@test()\n\tprotected static async canSyncSchemasWhenOnlyNodeModuleIsInstalledAfterDecliningToInstallSkill() {\n\t\tawait this.FeatureFixture().installCachedFeatures('schemasInNodeModule')\n\n\t\tconst promise = this.Action('schema', 'sync').execute({})\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\t\tconst results = await promise\n\n\t\tassert.isFalsy(results.errors)\n\t\tawait this.assertValidActionResponseFiles(results)\n\t}\n\n\t@test('syncs minAraryLength, importsWhenRemote')\n\tprotected static async syncsExpectedFields() {\n\t\tawait this.syncSchemas('schemas')\n\n\t\tconst schemasDir = this.resolvePath('src', 'schemas')\n\n\t\tawait diskUtil.copyDir(this.resolveTestPath('test_builders'), schemasDir)\n\n\t\tconst results = await this.Action('schema', 'sync').execute({})\n\t\tconst schema = await this.importSchema(results, 'schemaTwo.schema.ts')\n\n\t\tassert.isUndefined(schema.fields.phone.minArrayLength)\n\t\tassert.isEqual(schema.fields.favoriteColors.minArrayLength, 3)\n\t\tassert.isEqual(schema.fields.permissions.minArrayLength, 0)\n\t}\n\n\t@test()\n\tprotected static async canChangeSkillNamespace() {\n\t\tawait this.syncSchemas('schemas')\n\n\t\tawait this.Action('schema', 'create').execute({\n\t\t\tnameReadable: 'Test schema',\n\t\t\tnameCamel: 'testSchema',\n\t\t})\n\n\t\tconst beforeFolder = this.resolveHashSprucePath('schemas', 'testingSchemas')\n\t\tconst afterFolder = this.resolveHashSprucePath('schemas', 'newNamespace')\n\n\t\tassert.isTrue(diskUtil.doesFileExist(beforeFolder))\n\t\tassert.isFalse(diskUtil.doesFileExist(afterFolder))\n\n\t\tawait this.Store('skill').setCurrentSkillsNamespace('new-namespace')\n\n\t\tawait this.Action('schema', 'sync').execute({})\n\n\t\tassert.isFalse(diskUtil.doesFileExist(beforeFolder))\n\t\tassert.isTrue(diskUtil.doesFileExist(afterFolder))\n\t}\n\n\t@test()\n\tprotected static async generatedSchemasRetainImportsAndTypeSuffix() {\n\t\tawait this.installSchemaFeature('schemas')\n\n\t\tconst results = await this.Action('schema', 'create').execute({\n\t\t\tnameReadable: 'Test schema',\n\t\t\tnameCamel: 'testSchema',\n\t\t})\n\n\t\tconst testSchemaPath = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'testSchema.builder.ts',\n\t\t\tresults.files\n\t\t)\n\n\t\tdiskUtil.writeFile(\n\t\t\ttestSchemaPath,\n\t\t\t`import { buildSchema } from '@sprucelabs/schema'\n\n\t\texport default buildSchema({\n\t\t\tid: 'testSchema',\n\t\t\tname: 'Test schema',\n\t\t\tdescription: '',\n\t\t\timportsWhenLocal: ['import * as Local from \"@sprucelabs/schema\"'],\n\t\t\timportsWhenRemote: ['import * as Remote from \"@sprucelabs/schema\"'],\n\t\t\ttypeSuffix: '<S extends Record<string, any> = Record<string, any>>',\n\t\t\tfields: {\n\t\t\t\tfieldName1: {\n\t\t\t\t\ttype: 'text',\n\t\t\t\t\tlabel: 'First Field',\n\t\t\t\t\tisRequired: true,\n\t\t\t\t},\n\t\t\t\tfieldName2: {\n\t\t\t\t\ttype: 'number',\n\t\t\t\t\tlabel: 'Second Field',\n\t\t\t\t\tisRequired: true,\n\t\t\t\t\thint: 'A hint',\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t\t`\n\t\t)\n\n\t\tconst syncResults = await this.Action('schema', 'sync').execute({})\n\n\t\tconst schemaPath = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'testSchema.schema.ts',\n\t\t\tsyncResults.files\n\t\t)\n\n\t\tconst imported = await this.Service('import').importDefault(schemaPath)\n\n\t\tassert.doesInclude(imported, {\n\t\t\timportsWhenRemote: ['import * as Remote from \"@sprucelabs/schema\"'],\n\t\t\ttypeSuffix: '<S extends Record<string, any> = Record<string, any>>',\n\t\t})\n\t}\n\n\tprivate static async importSchema(results: any, filename: string) {\n\t\tconst file = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\tfilename,\n\t\t\tresults.files\n\t\t)\n\n\t\tconst schema = await this.Service('import').importDefault(file)\n\n\t\treturn schema\n\t}\n\n\tprivate static async assertTypesFileGeneratesArraySelect(typesFile: string) {\n\t\tconst contents = diskUtil.readFile(typesFile)\n\t\tassert.doesInclude(contents, `'favoriteColors'?: (\"blue\" | \"red\")[]`)\n\t}\n\n\tprivate static async copyMockCoreSchemas() {\n\t\tconst source = this.resolveTestPath('mock_core_builders')\n\t\tconst destination = this.resolvePath('src', 'schemas')\n\n\t\tawait diskUtil.copyDir(source, destination)\n\t}\n}\n"],"file":"KeepingSchemasInSync.test.js"}
@@ -259,7 +259,7 @@ var UpgradingASkillTest = (_dec = (0, _test.test)(), _dec2 = (0, _test.test)(),
259
259
  return this.assertFailedHealthCheck(cli);
260
260
 
261
261
  case 8:
262
- last = this.ui.lastInvocation();
262
+ last = this.ui.getLastInvocation();
263
263
 
264
264
  _test.assert.doesInclude(last, {
265
265
  'options.options.choices[].value': _constants.FILE_ACTION_OVERWRITE
@@ -539,7 +539,7 @@ var UpgradingASkillTest = (_dec = (0, _test.test)(), _dec2 = (0, _test.test)(),
539
539
  return this.waitForInput();
540
540
 
541
541
  case 7:
542
- last = this.ui.lastInvocation();
542
+ last = this.ui.getLastInvocation();
543
543
 
544
544
  _test.assert.isEqual(last.command, 'prompt');
545
545
 
@@ -606,7 +606,7 @@ var UpgradingASkillTest = (_dec = (0, _test.test)(), _dec2 = (0, _test.test)(),
606
606
  return this.waitForInput();
607
607
 
608
608
  case 8:
609
- last = this.ui.lastInvocation();
609
+ last = this.ui.getLastInvocation();
610
610
 
611
611
  _test.assert.isEqual(last.command, 'prompt');
612
612
 
@@ -618,7 +618,7 @@ var UpgradingASkillTest = (_dec = (0, _test.test)(), _dec2 = (0, _test.test)(),
618
618
  return this.waitForInput();
619
619
 
620
620
  case 14:
621
- last = this.ui.lastInvocation();
621
+ last = this.ui.getLastInvocation();
622
622
 
623
623
  _test.assert.isEqual(last.command, 'prompt');
624
624
 
@@ -675,7 +675,7 @@ var UpgradingASkillTest = (_dec = (0, _test.test)(), _dec2 = (0, _test.test)(),
675
675
  return this.waitForInput();
676
676
 
677
677
  case 8:
678
- last = this.ui.lastInvocation();
678
+ last = this.ui.getLastInvocation();
679
679
 
680
680
  _test.assert.isEqual(last.command, 'prompt');
681
681
 
@@ -728,7 +728,7 @@ var UpgradingASkillTest = (_dec = (0, _test.test)(), _dec2 = (0, _test.test)(),
728
728
  return this.waitForInput();
729
729
 
730
730
  case 7:
731
- last = this.ui.lastInvocation();
731
+ last = this.ui.getLastInvocation();
732
732
 
733
733
  _test.assert.isEqual(last.command, 'prompt');
734
734
 
@@ -954,7 +954,7 @@ var UpgradingASkillTest = (_dec = (0, _test.test)(), _dec2 = (0, _test.test)(),
954
954
  return this.waitForInput();
955
955
 
956
956
  case 5:
957
- last = this.ui.lastInvocation();
957
+ last = this.ui.getLastInvocation();
958
958
  return _context16.abrupt("return", {
959
959
  last: last,
960
960
  promise: promise
@@ -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 ?? [], '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"}
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","getLastInvocation","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.getLastInvocation()\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.getLastInvocation()\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.getLastInvocation()\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.getLastInvocation()\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.getLastInvocation()\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.getLastInvocation()\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.getLastInvocation()\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"}
@@ -241,7 +241,7 @@ var UpgradingASkillTest = (_dec = (0, _test.test)(), _dec2 = (0, _test.test)(),
241
241
  return this.waitForInput();
242
242
 
243
243
  case 8:
244
- last = this.ui.lastInvocation();
244
+ last = this.ui.getLastInvocation();
245
245
 
246
246
  _test.assert.isEqual(last.command, 'prompt');
247
247
 
@@ -249,7 +249,7 @@ var UpgradingASkillTest = (_dec = (0, _test.test)(), _dec2 = (0, _test.test)(),
249
249
  return this.ui.sendInput('overwrite');
250
250
 
251
251
  case 12:
252
- last = this.ui.lastInvocation();
252
+ last = this.ui.getLastInvocation();
253
253
 
254
254
  _test.assert.isEqual(last.command, 'prompt');
255
255
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/__tests__/behavioral/skill/UpgradingASkill3.test.ts"],"names":["UpgradingASkillTest","CommandService","setMockResponse","RegExp","code","FeatureFixture","installCachedFeatures","features","Service","process","cwd","get","pkg","checks","feat","nodeModule","path","resolveHashSprucePath","plugin","diskUtil","doesFileExist","undefined","push","check","unset","deleteFile","Action","execute","assert","isTruthy","isTrue","cli","skillFeature","getFeature","scripts","isEqual","assertSandboxListenerNotWritten","set","value","promise","waitForInput","last","ui","lastInvocation","command","sendInput","isNotEqual","listeners","resolvePath","doesDirExist","matches","fsUtil","readdirSync","isLength","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 CommandService from '../../../services/CommandService'\nimport AbstractCliTest from '../../../tests/AbstractCliTest'\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 restoresMissingPackagesAndPlugins() {\n\t\tawait this.FeatureFixture().installCachedFeatures('views')\n\n\t\tconst features = this.Service('pkg', process.cwd()).get(\n\t\t\t'testSkillCache.everything'\n\t\t)\n\n\t\tconst pkg = this.Service('pkg')\n\t\tconst checks: { nodeModule?: string; plugin?: string }[] = []\n\n\t\tfor (const feat of features) {\n\t\t\tconst { code } = feat\n\t\t\tconst nodeModule = `@sprucelabs/spruce-${code}-plugin`\n\t\t\tconst path = this.resolveHashSprucePath('features', `${code}.plugin.ts`)\n\t\t\tconst plugin = diskUtil.doesFileExist(path) ? path : undefined\n\n\t\t\tchecks.push({\n\t\t\t\tnodeModule: pkg.get(['dependencies', nodeModule])\n\t\t\t\t\t? nodeModule\n\t\t\t\t\t: undefined,\n\t\t\t\tplugin,\n\t\t\t})\n\t\t}\n\n\t\tfor (const check of checks) {\n\t\t\tif (check.nodeModule) {\n\t\t\t\tpkg.unset(['dependencies', check.nodeModule])\n\t\t\t}\n\t\t\tif (check.plugin) {\n\t\t\t\tdiskUtil.deleteFile(check.plugin)\n\t\t\t}\n\t\t}\n\n\t\tCommandService.setMockResponse(/yarn clean/, { code: 0 })\n\t\tCommandService.setMockResponse(/yarn build.dev/, { code: 0 })\n\n\t\tawait this.Action('node', 'upgrade').execute({})\n\n\t\tfor (const check of checks) {\n\t\t\tif (check.nodeModule) {\n\t\t\t\tassert.isTruthy(\n\t\t\t\t\tpkg.get(['dependencies', check.nodeModule]),\n\t\t\t\t\t`${check.nodeModule} was not added back as a dependencies.`\n\t\t\t\t)\n\t\t\t}\n\t\t\tif (check.plugin) {\n\t\t\t\tassert.isTrue(\n\t\t\t\t\tdiskUtil.doesFileExist(check.plugin),\n\t\t\t\t\t`${check.plugin} was not rewritten.`\n\t\t\t\t)\n\t\t\t}\n\t\t}\n\t}\n\n\t@test()\n\tprotected static async doesNotAskIfNewScriptsAreAddedToSkillFeature() {\n\t\tconst cli = await this.FeatureFixture().installCachedFeatures('skills')\n\n\t\tconst pkg = this.Service('pkg')\n\n\t\tconst skillFeature = cli.getFeature('skill')\n\t\t//@ts-ignore\n\t\tskillFeature.scripts['taco'] = 'bravo'\n\n\t\tawait this.Action('node', 'upgrade').execute({})\n\n\t\tassert.isEqual(pkg.get(['scripts', 'taco']), 'bravo')\n\n\t\tthis.assertSandboxListenerNotWritten()\n\t}\n\n\t@test()\n\tprotected static async canOverwriteMultipleChangedScript() {\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('overwrite')\n\n\t\tlast = 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\tassert.isNotEqual(pkg.get(['scripts', 'watch.build.dev']), 'taco')\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"],"file":"UpgradingASkill3.test.js"}
1
+ {"version":3,"sources":["../../../../src/__tests__/behavioral/skill/UpgradingASkill3.test.ts"],"names":["UpgradingASkillTest","CommandService","setMockResponse","RegExp","code","FeatureFixture","installCachedFeatures","features","Service","process","cwd","get","pkg","checks","feat","nodeModule","path","resolveHashSprucePath","plugin","diskUtil","doesFileExist","undefined","push","check","unset","deleteFile","Action","execute","assert","isTruthy","isTrue","cli","skillFeature","getFeature","scripts","isEqual","assertSandboxListenerNotWritten","set","value","promise","waitForInput","last","ui","getLastInvocation","command","sendInput","isNotEqual","listeners","resolvePath","doesDirExist","matches","fsUtil","readdirSync","isLength","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 CommandService from '../../../services/CommandService'\nimport AbstractCliTest from '../../../tests/AbstractCliTest'\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 restoresMissingPackagesAndPlugins() {\n\t\tawait this.FeatureFixture().installCachedFeatures('views')\n\n\t\tconst features = this.Service('pkg', process.cwd()).get(\n\t\t\t'testSkillCache.everything'\n\t\t)\n\n\t\tconst pkg = this.Service('pkg')\n\t\tconst checks: { nodeModule?: string; plugin?: string }[] = []\n\n\t\tfor (const feat of features) {\n\t\t\tconst { code } = feat\n\t\t\tconst nodeModule = `@sprucelabs/spruce-${code}-plugin`\n\t\t\tconst path = this.resolveHashSprucePath('features', `${code}.plugin.ts`)\n\t\t\tconst plugin = diskUtil.doesFileExist(path) ? path : undefined\n\n\t\t\tchecks.push({\n\t\t\t\tnodeModule: pkg.get(['dependencies', nodeModule])\n\t\t\t\t\t? nodeModule\n\t\t\t\t\t: undefined,\n\t\t\t\tplugin,\n\t\t\t})\n\t\t}\n\n\t\tfor (const check of checks) {\n\t\t\tif (check.nodeModule) {\n\t\t\t\tpkg.unset(['dependencies', check.nodeModule])\n\t\t\t}\n\t\t\tif (check.plugin) {\n\t\t\t\tdiskUtil.deleteFile(check.plugin)\n\t\t\t}\n\t\t}\n\n\t\tCommandService.setMockResponse(/yarn clean/, { code: 0 })\n\t\tCommandService.setMockResponse(/yarn build.dev/, { code: 0 })\n\n\t\tawait this.Action('node', 'upgrade').execute({})\n\n\t\tfor (const check of checks) {\n\t\t\tif (check.nodeModule) {\n\t\t\t\tassert.isTruthy(\n\t\t\t\t\tpkg.get(['dependencies', check.nodeModule]),\n\t\t\t\t\t`${check.nodeModule} was not added back as a dependencies.`\n\t\t\t\t)\n\t\t\t}\n\t\t\tif (check.plugin) {\n\t\t\t\tassert.isTrue(\n\t\t\t\t\tdiskUtil.doesFileExist(check.plugin),\n\t\t\t\t\t`${check.plugin} was not rewritten.`\n\t\t\t\t)\n\t\t\t}\n\t\t}\n\t}\n\n\t@test()\n\tprotected static async doesNotAskIfNewScriptsAreAddedToSkillFeature() {\n\t\tconst cli = await this.FeatureFixture().installCachedFeatures('skills')\n\n\t\tconst pkg = this.Service('pkg')\n\n\t\tconst skillFeature = cli.getFeature('skill')\n\t\t//@ts-ignore\n\t\tskillFeature.scripts['taco'] = 'bravo'\n\n\t\tawait this.Action('node', 'upgrade').execute({})\n\n\t\tassert.isEqual(pkg.get(['scripts', 'taco']), 'bravo')\n\n\t\tthis.assertSandboxListenerNotWritten()\n\t}\n\n\t@test()\n\tprotected static async canOverwriteMultipleChangedScript() {\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.getLastInvocation()\n\n\t\tassert.isEqual(last.command, 'prompt')\n\t\tawait this.ui.sendInput('overwrite')\n\n\t\tlast = this.ui.getLastInvocation()\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\tassert.isNotEqual(pkg.get(['scripts', 'watch.build.dev']), 'taco')\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"],"file":"UpgradingASkill3.test.js"}