@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.
- package/CHANGELOG.md +38 -0
- package/build/.spruce/errors/errors.types.d.ts +19 -0
- package/build/.spruce/errors/options.types.d.ts +4 -1
- package/build/.spruce/errors/spruceCli/dependencyExists.schema.d.ts +3 -0
- package/build/.spruce/errors/spruceCli/dependencyExists.schema.js +28 -0
- package/build/.spruce/errors/spruceCli/dependencyExists.schema.js.map +1 -0
- package/build/__tests__/behavioral/AddingADependency.test.d.ts +6 -3
- package/build/__tests__/behavioral/AddingADependency.test.js +116 -44
- package/build/__tests__/behavioral/AddingADependency.test.js.map +1 -1
- package/build/__tests__/behavioral/InstallingASkillAtAnOrg.test.js +2 -2
- package/build/__tests__/behavioral/InstallingASkillAtAnOrg.test.js.map +1 -1
- package/build/__tests__/behavioral/LoggingInAsASkill.test.js +4 -4
- package/build/__tests__/behavioral/LoggingInAsASkill.test.js.map +1 -1
- package/build/__tests__/behavioral/ManagingDependencies.test.js +3 -3
- package/build/__tests__/behavioral/ManagingDependencies.test.js.map +1 -1
- package/build/__tests__/behavioral/RememberingUpgradeSelections.test.js +1 -1
- package/build/__tests__/behavioral/RememberingUpgradeSelections.test.js.map +1 -1
- package/build/__tests__/behavioral/SettingRemote.test.js +1 -1
- package/build/__tests__/behavioral/SettingRemote.test.js.map +1 -1
- package/build/__tests__/behavioral/SettingUpVscode.test.js +3 -3
- package/build/__tests__/behavioral/SettingUpVscode.test.js.map +1 -1
- package/build/__tests__/behavioral/TestingDataStores.test.js +2 -2
- package/build/__tests__/behavioral/TestingDataStores.test.js.map +1 -1
- package/build/__tests__/behavioral/UpgradingANodeModule.test.d.ts +1 -0
- package/build/__tests__/behavioral/UpgradingANodeModule.test.js +50 -3
- package/build/__tests__/behavioral/UpgradingANodeModule.test.js.map +1 -1
- package/build/__tests__/behavioral/events/CreatingAListener.test.js +2 -2
- package/build/__tests__/behavioral/events/CreatingAListener.test.js.map +1 -1
- package/build/__tests__/behavioral/events/CreatingAnEvent.test.d.ts +3 -2
- package/build/__tests__/behavioral/events/CreatingAnEvent.test.js +156 -106
- package/build/__tests__/behavioral/events/CreatingAnEvent.test.js.map +1 -1
- package/build/__tests__/behavioral/events/KeepingEventsInSync2.test.js +6 -9
- package/build/__tests__/behavioral/events/KeepingEventsInSync2.test.js.map +1 -1
- package/build/__tests__/behavioral/schemas/KeepingSchemasInSync.test.js +7 -4
- package/build/__tests__/behavioral/schemas/KeepingSchemasInSync.test.js.map +1 -1
- package/build/__tests__/behavioral/skill/UpgradingASkill.test.js +7 -7
- package/build/__tests__/behavioral/skill/UpgradingASkill.test.js.map +1 -1
- package/build/__tests__/behavioral/skill/UpgradingASkill3.test.js +2 -2
- package/build/__tests__/behavioral/skill/UpgradingASkill3.test.js.map +1 -1
- package/build/__tests__/behavioral/tests/SelectingAnAbstractTestClass.test.js +1 -1
- package/build/__tests__/behavioral/tests/SelectingAnAbstractTestClass.test.js.map +1 -1
- package/build/__tests__/behavioral/views/CreatingASkillView.test.js +3 -3
- package/build/__tests__/behavioral/views/CreatingASkillView.test.js.map +1 -1
- package/build/__tests__/behavioral/views/TestingViewControllers.test.js +2 -2
- package/build/__tests__/behavioral/views/TestingViewControllers.test.js.map +1 -1
- package/build/__tests__/implementation/ActionExecuter2.test.js +3 -3
- package/build/__tests__/implementation/ActionExecuter2.test.js.map +1 -1
- package/build/errors/SpruceError.js +4 -0
- package/build/errors/SpruceError.js.map +1 -1
- package/build/errors/dependencyExists.builder.d.ts +11 -0
- package/build/errors/dependencyExists.builder.js +22 -0
- package/build/errors/dependencyExists.builder.js.map +1 -0
- package/build/features/AbstractAction.js +1 -1
- package/build/features/AbstractAction.js.map +1 -1
- package/build/features/dependencies/actions/AddAction.js +22 -15
- package/build/features/dependencies/actions/AddAction.js.map +1 -1
- package/build/features/event/actions/CreateAction.js +1 -1
- package/build/features/event/actions/CreateAction.js.map +1 -1
- package/build/features/node/NodeFeature.d.ts +1 -0
- package/build/features/node/NodeFeature.js +83 -64
- package/build/features/node/NodeFeature.js.map +1 -1
- package/build/features/node/actions/UpgradeAction.js +20 -9
- package/build/features/node/actions/UpgradeAction.js.map +1 -1
- package/build/features/node/writers/NodeWriter.d.ts +5 -2
- package/build/features/node/writers/NodeWriter.js +37 -22
- package/build/features/node/writers/NodeWriter.js.map +1 -1
- package/build/features/skill/updaters/Updater.js +3 -1
- package/build/features/skill/updaters/Updater.js.map +1 -1
- package/build/interfaces/SpyInterface.d.ts +1 -1
- package/build/interfaces/SpyInterface.js +2 -2
- package/build/interfaces/SpyInterface.js.map +1 -1
- package/build/services/DependencyService.d.ts +1 -0
- package/build/services/DependencyService.js +18 -0
- package/build/services/DependencyService.js.map +1 -1
- package/build/tests/AbstractCliTest.js +1 -1
- package/build/tests/AbstractCliTest.js.map +1 -1
- package/build/tests/utilities/uiAssert.utility.d.ts +7 -0
- package/build/tests/utilities/uiAssert.utility.js +85 -0
- package/build/tests/utilities/uiAssert.utility.js.map +1 -0
- package/build/writers/AbstractWriter.d.ts +10 -10
- package/build/writers/AbstractWriter.js.map +1 -1
- package/package.json +34 -32
- package/src/.spruce/errors/errors.types.ts +29 -0
- package/src/.spruce/errors/options.types.ts +4 -1
- package/src/.spruce/errors/spruceCli/dependencyExists.schema.ts +22 -0
- package/src/__tests__/behavioral/AddingADependency.test.ts +45 -8
- package/src/__tests__/behavioral/InstallingASkillAtAnOrg.test.ts +3 -3
- package/src/__tests__/behavioral/LoggingInAsASkill.test.ts +4 -4
- package/src/__tests__/behavioral/ManagingDependencies.test.ts +3 -3
- package/src/__tests__/behavioral/RememberingUpgradeSelections.test.ts +1 -1
- package/src/__tests__/behavioral/SettingRemote.test.ts +1 -1
- package/src/__tests__/behavioral/SettingUpVscode.test.ts +3 -3
- package/src/__tests__/behavioral/TestingDataStores.test.ts +2 -2
- package/src/__tests__/behavioral/UpgradingANodeModule.test.ts +24 -0
- package/src/__tests__/behavioral/events/CreatingAListener.test.ts +2 -2
- package/src/__tests__/behavioral/events/CreatingAnEvent.test.ts +44 -22
- package/src/__tests__/behavioral/events/KeepingEventsInSync2.test.ts +1 -1
- package/src/__tests__/behavioral/schemas/KeepingSchemasInSync.test.ts +2 -0
- package/src/__tests__/behavioral/skill/UpgradingASkill.test.ts +7 -7
- package/src/__tests__/behavioral/skill/UpgradingASkill3.test.ts +2 -2
- package/src/__tests__/behavioral/tests/SelectingAnAbstractTestClass.test.ts +1 -1
- package/src/__tests__/behavioral/views/CreatingASkillView.test.ts +3 -3
- package/src/__tests__/behavioral/views/TestingViewControllers.test.ts +2 -2
- package/src/__tests__/implementation/ActionExecuter2.test.ts +3 -3
- package/src/errors/SpruceError.ts +4 -0
- package/src/errors/dependencyExists.builder.ts +12 -0
- package/src/features/AbstractAction.ts +1 -4
- package/src/features/dependencies/actions/AddAction.ts +12 -5
- package/src/features/event/actions/CreateAction.ts +4 -1
- package/src/features/node/NodeFeature.ts +31 -25
- package/src/features/node/actions/UpgradeAction.ts +8 -1
- package/src/features/node/writers/NodeWriter.ts +38 -23
- package/src/features/skill/updaters/Updater.ts +2 -1
- package/src/interfaces/SpyInterface.ts +1 -1
- package/src/services/DependencyService.ts +14 -0
- package/src/tests/AbstractCliTest.ts +1 -1
- package/src/tests/utilities/uiAssert.utility.ts +45 -0
- 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 =
|
|
544
|
+
_context11.next = 11;
|
|
542
545
|
return this.Action('schema', 'sync').execute({});
|
|
543
546
|
|
|
544
|
-
case
|
|
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 =
|
|
554
|
+
_context11.next = 17;
|
|
552
555
|
return this.assertValidActionResponseFiles(syncResults);
|
|
553
556
|
|
|
554
|
-
case
|
|
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":"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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\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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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","
|
|
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"}
|