@sprucelabs/spruce-cli 14.28.8 → 14.29.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (139) hide show
  1. package/CHANGELOG.md +35 -0
  2. package/build/__tests__/behavioral/SettingLogTransportsInASkill.test.js +13 -9
  3. package/build/__tests__/behavioral/SettingLogTransportsInASkill.test.js.map +1 -1
  4. package/build/__tests__/behavioral/SyncingEventsOnlyFromDependencies.test.d.ts +1 -1
  5. package/build/__tests__/behavioral/SyncingEventsOnlyFromDependencies.test.js +24 -14
  6. package/build/__tests__/behavioral/SyncingEventsOnlyFromDependencies.test.js.map +1 -1
  7. package/build/__tests__/behavioral/TestingDataStores.test.js +15 -11
  8. package/build/__tests__/behavioral/TestingDataStores.test.js.map +1 -1
  9. package/build/__tests__/behavioral/eventContract/PullingMercuryEventContract.test.js +3 -1
  10. package/build/__tests__/behavioral/eventContract/PullingMercuryEventContract.test.js.map +1 -1
  11. package/build/__tests__/behavioral/events/CreatingAListener.test.d.ts +3 -0
  12. package/build/__tests__/behavioral/events/CreatingAListener.test.js +200 -81
  13. package/build/__tests__/behavioral/events/CreatingAListener.test.js.map +1 -1
  14. package/build/__tests__/behavioral/events/KeepingListenersInSync.test.d.ts +7 -0
  15. package/build/__tests__/behavioral/events/KeepingListenersInSync.test.js +171 -0
  16. package/build/__tests__/behavioral/events/KeepingListenersInSync.test.js.map +1 -0
  17. package/build/__tests__/behavioral/{ListeningToAnEventYouCreate.test.d.ts → events/ListeningToAnEventYouCreate.test.d.ts} +1 -1
  18. package/build/__tests__/behavioral/{ListeningToAnEventYouCreate.test.js → events/ListeningToAnEventYouCreate.test.js} +2 -2
  19. package/build/__tests__/behavioral/events/ListeningToAnEventYouCreate.test.js.map +1 -0
  20. package/build/__tests__/behavioral/events/SkillEmitsBootEvents.test.d.ts +1 -0
  21. package/build/__tests__/behavioral/events/SkillEmitsBootEvents.test.js +53 -21
  22. package/build/__tests__/behavioral/events/SkillEmitsBootEvents.test.js.map +1 -1
  23. package/build/__tests__/behavioral/skill/UpgradingWithListeners.test.d.ts +5 -0
  24. package/build/__tests__/behavioral/skill/UpgradingWithListeners.test.js +137 -0
  25. package/build/__tests__/behavioral/skill/UpgradingWithListeners.test.js.map +1 -0
  26. package/build/__tests__/behavioral/stores/KeepingDataStoresInSync.test.d.ts +3 -0
  27. package/build/__tests__/behavioral/stores/KeepingDataStoresInSync.test.js +105 -16
  28. package/build/__tests__/behavioral/stores/KeepingDataStoresInSync.test.js.map +1 -1
  29. package/build/__tests__/behavioral/tests/CreatingATest.test.js +14 -10
  30. package/build/__tests__/behavioral/tests/CreatingATest.test.js.map +1 -1
  31. package/build/__tests__/behavioral/views/TestingViewControllers.test.d.ts +1 -0
  32. package/build/__tests__/behavioral/views/TestingViewControllers.test.js +67 -35
  33. package/build/__tests__/behavioral/views/TestingViewControllers.test.js.map +1 -1
  34. package/build/__tests__/implementation/AuthService.test.d.ts +1 -0
  35. package/build/__tests__/implementation/AuthService.test.js +8 -0
  36. package/build/__tests__/implementation/AuthService.test.js.map +1 -1
  37. package/build/__tests__/implementation/EventStore.test.js +3 -1
  38. package/build/__tests__/implementation/EventStore.test.js.map +1 -1
  39. package/build/__tests__/implementation/LintService.test.d.ts +5 -0
  40. package/build/__tests__/implementation/LintService.test.js +130 -0
  41. package/build/__tests__/implementation/LintService.test.js.map +1 -0
  42. package/build/__tests__/implementation/StoreFeature.test.d.ts +4 -0
  43. package/build/__tests__/implementation/StoreFeature.test.js +132 -0
  44. package/build/__tests__/implementation/StoreFeature.test.js.map +1 -0
  45. package/build/errors/SpruceError.js +8 -4
  46. package/build/errors/SpruceError.js.map +1 -1
  47. package/build/features/event/EventFeature.d.ts +2 -2
  48. package/build/features/event/EventFeature.js +53 -13
  49. package/build/features/event/EventFeature.js.map +1 -1
  50. package/build/features/event/actions/ListenAction.d.ts +1 -0
  51. package/build/features/event/actions/ListenAction.js +60 -31
  52. package/build/features/event/actions/ListenAction.js.map +1 -1
  53. package/build/features/event/actions/SyncListenersAction.d.ts +15 -0
  54. package/build/features/event/actions/SyncListenersAction.js +115 -0
  55. package/build/features/event/actions/SyncListenersAction.js.map +1 -0
  56. package/build/features/event/builders/ListenerTemplateItemBuilder.d.ts +8 -0
  57. package/build/features/event/builders/ListenerTemplateItemBuilder.js +65 -0
  58. package/build/features/event/builders/ListenerTemplateItemBuilder.js.map +1 -0
  59. package/build/features/event/stores/EventStore.js +2 -2
  60. package/build/features/event/stores/EventStore.js.map +1 -1
  61. package/build/features/event/stores/ListenerStore.d.ts +9 -0
  62. package/build/features/event/stores/ListenerStore.js +122 -0
  63. package/build/features/event/stores/ListenerStore.js.map +1 -0
  64. package/build/features/event/writers/EventWriter.d.ts +4 -1
  65. package/build/features/event/writers/EventWriter.js +42 -8
  66. package/build/features/event/writers/EventWriter.js.map +1 -1
  67. package/build/features/node/NodeFeature.js +1 -1
  68. package/build/features/node/NodeFeature.js.map +1 -1
  69. package/build/features/skill/SkillFeature.js +1 -1
  70. package/build/features/skill/SkillFeature.js.map +1 -1
  71. package/build/features/skill/stores/SkillStore.js +4 -8
  72. package/build/features/skill/stores/SkillStore.js.map +1 -1
  73. package/build/features/store/StoreFeature.d.ts +1 -1
  74. package/build/features/store/StoreFeature.js +16 -11
  75. package/build/features/store/StoreFeature.js.map +1 -1
  76. package/build/schemas/v2020_07_22/personWithToken.builder.js +1 -0
  77. package/build/schemas/v2020_07_22/personWithToken.builder.js.map +1 -1
  78. package/build/services/AuthService.d.ts +4 -1
  79. package/build/services/AuthService.js +15 -4
  80. package/build/services/AuthService.js.map +1 -1
  81. package/build/services/GameService.js +14 -10
  82. package/build/services/GameService.js.map +1 -1
  83. package/build/services/LintService.d.ts +5 -2
  84. package/build/services/LintService.js +137 -92
  85. package/build/services/LintService.js.map +1 -1
  86. package/build/services/ServiceFactory.js +9 -3
  87. package/build/services/ServiceFactory.js.map +1 -1
  88. package/build/stores/StoreFactory.d.ts +2 -0
  89. package/build/stores/StoreFactory.js +4 -1
  90. package/build/stores/StoreFactory.js.map +1 -1
  91. package/build/tests/AbstractCliTest.js +3 -3
  92. package/build/tests/AbstractCliTest.js.map +1 -1
  93. package/build/writers/AbstractWriter.d.ts +0 -3
  94. package/build/writers/AbstractWriter.js +2 -18
  95. package/build/writers/AbstractWriter.js.map +1 -1
  96. package/package.json +11 -9
  97. package/src/__tests__/behavioral/SettingLogTransportsInASkill.test.ts +2 -0
  98. package/src/__tests__/behavioral/SyncingEventsOnlyFromDependencies.test.ts +10 -5
  99. package/src/__tests__/behavioral/TestingDataStores.test.ts +2 -0
  100. package/src/__tests__/behavioral/eventContract/PullingMercuryEventContract.test.ts +1 -0
  101. package/src/__tests__/behavioral/events/CreatingAListener.test.ts +48 -9
  102. package/src/__tests__/behavioral/events/KeepingListenersInSync.test.ts +47 -0
  103. package/src/__tests__/behavioral/{ListeningToAnEventYouCreate.test.ts → events/ListeningToAnEventYouCreate.test.ts} +2 -2
  104. package/src/__tests__/behavioral/events/SkillEmitsBootEvents.test.ts +6 -0
  105. package/src/__tests__/behavioral/skill/UpgradingWithListeners.test.ts +59 -0
  106. package/src/__tests__/behavioral/stores/KeepingDataStoresInSync.test.ts +31 -2
  107. package/src/__tests__/behavioral/tests/CreatingATest.test.ts +2 -0
  108. package/src/__tests__/behavioral/views/TestingViewControllers.test.ts +6 -0
  109. package/src/__tests__/implementation/AuthService.test.ts +6 -0
  110. package/src/__tests__/implementation/EventStore.test.ts +1 -0
  111. package/src/__tests__/implementation/LintService.test.ts +34 -0
  112. package/src/__tests__/implementation/StoreFeature.test.ts +40 -0
  113. package/src/errors/SpruceError.ts +9 -5
  114. package/src/features/event/EventFeature.ts +21 -4
  115. package/src/features/event/actions/ListenAction.ts +9 -3
  116. package/src/features/event/actions/SyncListenersAction.ts +38 -0
  117. package/src/features/event/builders/ListenerTemplateItemBuilder.ts +27 -0
  118. package/src/features/event/stores/EventStore.ts +1 -1
  119. package/src/features/event/stores/ListenerStore.ts +32 -0
  120. package/src/features/event/writers/EventWriter.ts +19 -0
  121. package/src/features/node/NodeFeature.ts +2 -1
  122. package/src/features/skill/SkillFeature.ts +1 -1
  123. package/src/features/skill/stores/SkillStore.ts +4 -3
  124. package/src/features/store/StoreFeature.ts +7 -4
  125. package/src/schemas/v2020_07_22/personWithToken.builder.ts +1 -0
  126. package/src/services/AuthService.ts +15 -5
  127. package/src/services/GameService.ts +1 -0
  128. package/src/services/LintService.ts +34 -5
  129. package/src/services/ServiceFactory.ts +8 -3
  130. package/src/stores/StoreFactory.ts +3 -0
  131. package/src/tests/AbstractCliTest.ts +2 -2
  132. package/src/writers/AbstractWriter.ts +2 -13
  133. package/build/__tests__/behavioral/ListeningToAnEventYouCreate.test.js.map +0 -1
  134. package/build/__tests__/behavioral/README.md +0 -8
  135. package/build/__tests__/implementation/README.md +0 -5
  136. package/build/components/README.md +0 -5
  137. package/src/__tests__/behavioral/README.md +0 -8
  138. package/src/__tests__/implementation/README.md +0 -5
  139. package/src/components/README.md +0 -5
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/__tests__/behavioral/events/CreatingAListener.test.ts"],"names":["CreatingAListenerTest","installEventFeature","Action","execute","namespace","results","assert","isTruthy","errors","err","errorAssertUtil","assertError","namespaces","eventName","parameters","cli","version","isFalsy","match","testUtil","assertFileByNameInGeneratedFiles","files","doesInclude","Service","check","checkHealth","health","skill","isUndefined","event","listeners","eventNamespace","waitForInput","lastInvocation","ui","getLastInvocation","isEqual","command","options","label","sendInput","MERCURY_API_NAMESPACE","reset","setupSkillsInstallAtOrgRegisterEventContractAndGenerateListener","isGlobal","contents","emitPayloadSchema","targetSchema","eventTargetSchema","payloadSchema","id","fields","booleanField","type","skill2","slug","expectedVersion","organizationId","isRequired","responsePayloadSchema","currentSkill","eventContract","org","connectToApi","shouldAuthAsCurrentSkill","currentClient","disconnect","local","boot","wait","skillId","apiKey","client","mixinContract","eventSignatures","emit","target","payload","totalContracts","totalErrors","totalResponses","meta","promise","fail","stack","kill","error","doesThrow","eventResponseUtil","getFirstResponseOrThrow","eventAssertUtil","responderRef","responses","eventSignature","seedDummySkillRegisterCurrentSkillAndInstallToOrg","skillFixture","registerEventContract","add","listener","diskUtil","readFile","listenerPath","AbstractEventTest","versionUtil","generateVersion","constValue"],"mappings":"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","sourcesContent":["import { EventSignature } from '@sprucelabs/mercury-types'\nimport { buildSchema } from '@sprucelabs/schema'\nimport {\n\tbuildEmitTargetAndPayloadSchema,\n\teventAssertUtil,\n\teventResponseUtil,\n\teventTargetSchema,\n} from '@sprucelabs/spruce-event-utils'\nimport {\n\tdiskUtil,\n\tMERCURY_API_NAMESPACE,\n\tversionUtil,\n} from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test'\nimport { errorAssertUtil } from '@sprucelabs/test-utils'\nimport AbstractEventTest from '../../../tests/AbstractEventTest'\nimport testUtil from '../../../tests/utilities/test.utility'\n\nexport default class CreatingAListenerTest extends AbstractEventTest {\n\tprivate static readonly expectedVersion =\n\t\tversionUtil.generateVersion().constValue\n\n\t@test()\n\tprotected static async throwsWithBadNamespace() {\n\t\tawait this.installEventFeature('events')\n\t\tconst results = await this.Action('event', 'listen').execute({\n\t\t\tnamespace: 'taco-bell',\n\t\t})\n\n\t\tassert.isTruthy(results.errors)\n\t\tconst err = results.errors[0]\n\n\t\terrorAssertUtil.assertError(err, 'INVALID_NAMESPACES', {\n\t\t\tnamespaces: ['taco-bell'],\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async throwsWithBadEventName() {\n\t\tawait this.installEventFeature('events')\n\t\tconst results = await this.Action('event', 'listen').execute({\n\t\t\tnamespace: 'heartwood',\n\t\t\teventName: 'bad-time',\n\t\t})\n\n\t\tassert.isTruthy(results.errors)\n\t\tconst err = results.errors[0]\n\n\t\terrorAssertUtil.assertError(err, 'INVALID_PARAMETERS', {\n\t\t\tparameters: ['eventName'],\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async createsValidListener() {\n\t\tconst cli = await this.installEventFeature('events')\n\n\t\tconst version = 'v2020_01_01'\n\n\t\tconst results = await this.Action('event', 'listen').execute({\n\t\t\tnamespace: 'skill',\n\t\t\teventName: 'will-boot',\n\t\t\tversion,\n\t\t})\n\n\t\tassert.isFalsy(results.errors)\n\n\t\tconst match = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t`will-boot.${version}.listener.ts`,\n\t\t\tresults.files\n\t\t)\n\n\t\tassert.doesInclude(match, version)\n\n\t\tawait this.Service('typeChecker').check(match)\n\n\t\tconst health = await cli.checkHealth()\n\n\t\tassert.isTruthy(health.skill)\n\n\t\tassert.isUndefined(health.skill.errors)\n\t\tassert.isTruthy(health.event)\n\n\t\tassert.doesInclude(health.event.listeners, {\n\t\t\teventName: 'will-boot',\n\t\t\teventNamespace: 'skill',\n\t\t\tversion,\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async creatingANewListenerAsksWhichEventToListenTo() {\n\t\tawait this.installEventFeature('events')\n\n\t\tvoid this.Action('event', 'listen').execute({})\n\n\t\tawait this.waitForInput()\n\n\t\tlet lastInvocation = this.ui.getLastInvocation()\n\n\t\tassert.isEqual(lastInvocation.command, 'prompt')\n\t\tassert.doesInclude(lastInvocation.options.label, 'namespace')\n\n\t\tawait this.ui.sendInput(MERCURY_API_NAMESPACE)\n\n\t\tawait this.waitForInput()\n\n\t\tlastInvocation = this.ui.getLastInvocation()\n\n\t\tassert.doesInclude(lastInvocation.options.label, 'event')\n\n\t\tthis.ui.reset()\n\t}\n\n\t@test()\n\tprotected static async generatesTypedListenerWithoutPayloads() {\n\t\tconst { contents } =\n\t\t\tawait this.setupSkillsInstallAtOrgRegisterEventContractAndGenerateListener(\n\t\t\t\t{\n\t\t\t\t\tisGlobal: true,\n\t\t\t\t}\n\t\t\t)\n\n\t\tassert.doesInclude(\n\t\t\tcontents,\n\t\t\t'export default async (event: SpruceEvent): SpruceEventResponse'\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async generatesTypedListenerWithEmitPayload() {\n\t\tconst { contents, skill2 } =\n\t\t\tawait this.setupSkillsInstallAtOrgRegisterEventContractAndGenerateListener(\n\t\t\t\t{\n\t\t\t\t\temitPayloadSchema: buildEmitTargetAndPayloadSchema({\n\t\t\t\t\t\teventName: 'my-new-event',\n\t\t\t\t\t\ttargetSchema: eventTargetSchema,\n\t\t\t\t\t\tpayloadSchema: {\n\t\t\t\t\t\t\tid: 'myNewEventEmitPayload',\n\t\t\t\t\t\t\tfields: {\n\t\t\t\t\t\t\t\tbooleanField: {\n\t\t\t\t\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t}),\n\t\t\t\t}\n\t\t\t)\n\n\t\tassert.doesInclude(\n\t\t\tcontents,\n\t\t\t'event: SpruceEvent<SkillEventContract, EmitPayload>'\n\t\t)\n\n\t\tassert.doesInclude(\n\t\t\tcontents,\n\t\t\t`fullyQualifiedEventName: '${skill2.slug}.my-new-event::${this.expectedVersion}'`\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async emittingEventTriggersListenerAndCrashesWithListenerNotImplemented() {\n\t\tconst { currentSkill, skill2, eventContract, org } =\n\t\t\tawait this.setupSkillsInstallAtOrgRegisterEventContractAndGenerateListener(\n\t\t\t\t{\n\t\t\t\t\temitPayloadSchema: buildEmitTargetAndPayloadSchema({\n\t\t\t\t\t\teventName: 'my-new-event',\n\t\t\t\t\t\ttargetSchema: {\n\t\t\t\t\t\t\tid: 'myNewEventEmitTarget',\n\t\t\t\t\t\t\tfields: {\n\t\t\t\t\t\t\t\torganizationId: {\n\t\t\t\t\t\t\t\t\ttype: 'id',\n\t\t\t\t\t\t\t\t\tisRequired: true,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tpayloadSchema: {\n\t\t\t\t\t\t\tid: 'myNewEventEmitPayload',\n\t\t\t\t\t\t\tfields: {\n\t\t\t\t\t\t\t\tbooleanField: {\n\t\t\t\t\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t}),\n\t\t\t\t\tresponsePayloadSchema: buildSchema({\n\t\t\t\t\t\tid: 'myNewEventResponsePayload',\n\t\t\t\t\t\tfields: {\n\t\t\t\t\t\t\tbooleanField: {\n\t\t\t\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t}),\n\t\t\t\t}\n\t\t\t)\n\n\t\tconst currentClient = await this.connectToApi({\n\t\t\tshouldAuthAsCurrentSkill: true,\n\t\t})\n\n\t\tawait currentClient.disconnect()\n\n\t\tconst boot = await this.Action('skill', 'boot').execute({ local: true })\n\n\t\tassert.isFalsy(boot.errors)\n\n\t\t//give the skill time to boot\n\t\tawait this.wait(20000)\n\n\t\tconst client = (await this.connectToApi({\n\t\t\tskillId: skill2.id,\n\t\t\tapiKey: skill2.apiKey,\n\t\t})) as any\n\n\t\tconst eventName = `${skill2.slug}.my-new-event::${this.expectedVersion}`\n\n\t\tclient.mixinContract({\n\t\t\teventSignatures: {\n\t\t\t\t[eventName]:\n\t\t\t\t\teventContract.eventSignatures[\n\t\t\t\t\t\t`my-new-event::${this.expectedVersion}`\n\t\t\t\t\t],\n\t\t\t},\n\t\t})\n\n\t\tlet results: any\n\n\t\tdo {\n\t\t\tawait this.wait(5000)\n\n\t\t\tresults = await client.emit(eventName, {\n\t\t\t\ttarget: {\n\t\t\t\t\torganizationId: org.id,\n\t\t\t\t},\n\t\t\t\tpayload: {\n\t\t\t\t\tbooleanField: true,\n\t\t\t\t},\n\t\t\t})\n\t\t} while (results.totalContracts < 1)\n\n\t\tassert.isEqual(results.totalContracts, 1)\n\t\tassert.isEqual(results.totalErrors, 1)\n\t\tassert.isEqual(results.totalResponses, 1)\n\n\t\tboot.meta?.promise?.catch((err: Error) => {\n\t\t\tassert.fail(err.stack)\n\t\t})\n\n\t\tawait boot.meta?.kill()\n\n\t\tconst error = assert.doesThrow(() =>\n\t\t\teventResponseUtil.getFirstResponseOrThrow(results)\n\t\t)\n\n\t\teventAssertUtil.assertError(error, 'LISTENER_NOT_IMPLEMENTED')\n\n\t\tconst responderRef = results.responses[0].responderRef\n\t\tassert.isEqual(\n\t\t\tresponderRef,\n\t\t\t`skill:${currentSkill.id}:${currentSkill.slug}`\n\t\t)\n\t}\n\n\tprivate static async setupSkillsInstallAtOrgRegisterEventContractAndGenerateListener(\n\t\teventSignature: EventSignature\n\t) {\n\t\tconst expectedVersion = this.expectedVersion\n\n\t\tconst eventContract = {\n\t\t\teventSignatures: {\n\t\t\t\t[`my-new-event::${expectedVersion}`]: eventSignature,\n\t\t\t},\n\t\t} as const\n\n\t\tconst { skillFixture, skill2, currentSkill, cli, org } =\n\t\t\tawait this.seedDummySkillRegisterCurrentSkillAndInstallToOrg()\n\n\t\tawait skillFixture.registerEventContract(skill2, eventContract)\n\n\t\tthis.Service('dependency').add({\n\t\t\tid: skill2.id,\n\t\t\tnamespace: skill2.slug,\n\t\t})\n\n\t\tconst results = await this.Action('event', 'listen').execute({\n\t\t\tnamespace: skill2.slug,\n\t\t\teventName: `my-new-event`,\n\t\t\tversion: expectedVersion,\n\t\t})\n\n\t\tassert.isFalsy(results.errors)\n\n\t\tconst listener = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t`my-new-event.${expectedVersion}.listener.ts`,\n\t\t\tresults.files\n\t\t)\n\n\t\tawait this.Service('typeChecker').check(listener)\n\n\t\tconst contents = diskUtil.readFile(listener)\n\n\t\treturn {\n\t\t\tcontents,\n\t\t\tskill2,\n\t\t\tlistenerPath: listener,\n\t\t\tcli,\n\t\t\teventContract,\n\t\t\torg,\n\t\t\tcurrentSkill,\n\t\t}\n\t}\n}\n"],"file":"CreatingAListener.test.js"}
1
+ {"version":3,"sources":["../../../../src/__tests__/behavioral/events/CreatingAListener.test.ts"],"names":["CreatingAListenerTest","installEventFeature","Action","execute","namespace","results","assert","isTruthy","errors","err","errorAssertUtil","assertError","namespaces","eventName","parameters","installEventsAndCreateListener","match","testUtil","assertFileByNameInGeneratedFiles","files","Service","check","version","cli","doesInclude","checkHealth","health","isFalsy","event","skill","isUndefined","listeners","eventNamespace","waitForInput","lastInvocation","ui","getLastInvocation","isEqual","command","options","label","sendInput","MERCURY_API_NAMESPACE","reset","setupSkillsInstallAtOrgRegisterEventContractAndGenerateListener","isGlobal","contents","emitPayloadSchema","targetSchema","eventTargetSchema","payloadSchema","id","fields","booleanField","type","skill2","slug","expectedVersion","organizationId","isRequired","responsePayloadSchema","currentSkill","eventContract","org","connectToApi","shouldAuthAsCurrentSkill","currentClient","disconnect","local","boot","wait","skillId","apiKey","client","mixinContract","eventSignatures","emit","target","payload","totalContracts","totalErrors","totalResponses","meta","promise","fail","stack","kill","error","doesThrow","eventResponseUtil","getFirstResponseOrThrow","eventAssertUtil","responderRef","responses","listenerPath","eventSignature","seedDummySkillRegisterCurrentSkillAndInstallToOrg","skillFixture","registerEventContract","add","listener","diskUtil","readFile","AbstractEventTest","versionUtil","generateVersion","constValue"],"mappings":"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","sourcesContent":["import { EventSignature } from '@sprucelabs/mercury-types'\nimport { buildSchema } from '@sprucelabs/schema'\nimport {\n\tbuildEmitTargetAndPayloadSchema,\n\teventAssertUtil,\n\teventResponseUtil,\n\teventTargetSchema,\n} from '@sprucelabs/spruce-event-utils'\nimport {\n\tdiskUtil,\n\tMERCURY_API_NAMESPACE,\n\tversionUtil,\n} from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test'\nimport { errorAssertUtil } from '@sprucelabs/test-utils'\nimport AbstractEventTest from '../../../tests/AbstractEventTest'\nimport testUtil from '../../../tests/utilities/test.utility'\n\nexport default class CreatingAListenerTest extends AbstractEventTest {\n\tprivate static readonly expectedVersion =\n\t\tversionUtil.generateVersion().constValue\n\n\t@test()\n\tprotected static async throwsWithBadNamespace() {\n\t\tawait this.installEventFeature('events')\n\t\tconst results = await this.Action('event', 'listen').execute({\n\t\t\tnamespace: 'taco-bell',\n\t\t})\n\n\t\tassert.isTruthy(results.errors)\n\t\tconst err = results.errors[0]\n\n\t\terrorAssertUtil.assertError(err, 'INVALID_NAMESPACES', {\n\t\t\tnamespaces: ['taco-bell'],\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async throwsWithBadEventName() {\n\t\tawait this.installEventFeature('events')\n\t\tconst results = await this.Action('event', 'listen').execute({\n\t\t\tnamespace: 'heartwood',\n\t\t\teventName: 'bad-time',\n\t\t})\n\n\t\tassert.isTruthy(results.errors)\n\t\tconst err = results.errors[0]\n\n\t\terrorAssertUtil.assertError(err, 'INVALID_PARAMETERS', {\n\t\t\tparameters: ['eventName'],\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async generatesMapFile() {\n\t\tconst { results } = await this.installEventsAndCreateListener()\n\n\t\tconst match = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t`listeners.ts`,\n\t\t\tresults.files\n\t\t)\n\n\t\tawait this.Service('typeChecker').check(match)\n\t}\n\n\t@test()\n\tprotected static async createsValidListener() {\n\t\tconst { version, results, cli } =\n\t\t\tawait this.installEventsAndCreateListener()\n\n\t\tconst match = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t`will-boot.${version}.listener.ts`,\n\t\t\tresults.files\n\t\t)\n\n\t\tassert.doesInclude(match, version)\n\n\t\tawait this.Service('typeChecker').check(match)\n\n\t\tconst health = await cli.checkHealth()\n\n\t\tassert.isFalsy(health?.event?.errors)\n\t\tassert.isTruthy(health.skill)\n\n\t\tassert.isUndefined(health.skill.errors)\n\t\tassert.isTruthy(health.event)\n\n\t\tassert.doesInclude(health.event.listeners, {\n\t\t\teventName: 'will-boot',\n\t\t\teventNamespace: 'skill',\n\t\t\tversion,\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async creatingANewListenerAsksWhichEventToListenTo() {\n\t\tawait this.installEventFeature('events')\n\n\t\tvoid this.Action('event', 'listen').execute({})\n\n\t\tawait this.waitForInput()\n\n\t\tlet lastInvocation = this.ui.getLastInvocation()\n\n\t\tassert.isEqual(lastInvocation.command, 'prompt')\n\t\tassert.doesInclude(lastInvocation.options.label, 'namespace')\n\n\t\tawait this.ui.sendInput(MERCURY_API_NAMESPACE)\n\n\t\tawait this.waitForInput()\n\n\t\tlastInvocation = this.ui.getLastInvocation()\n\n\t\tassert.doesInclude(lastInvocation.options.label, 'event')\n\n\t\tthis.ui.reset()\n\t}\n\n\t@test()\n\tprotected static async generatesTypedListenerWithoutPayloads() {\n\t\tconst { contents } =\n\t\t\tawait this.setupSkillsInstallAtOrgRegisterEventContractAndGenerateListener(\n\t\t\t\t{\n\t\t\t\t\tisGlobal: true,\n\t\t\t\t}\n\t\t\t)\n\n\t\tassert.doesInclude(\n\t\t\tcontents,\n\t\t\t'export default async (event: SpruceEvent): SpruceEventResponse'\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async generatesTypedListenerWithEmitPayload() {\n\t\tconst { contents, skill2 } =\n\t\t\tawait this.setupSkillsInstallAtOrgRegisterEventContractAndGenerateListener(\n\t\t\t\t{\n\t\t\t\t\temitPayloadSchema: buildEmitTargetAndPayloadSchema({\n\t\t\t\t\t\teventName: 'my-new-event',\n\t\t\t\t\t\ttargetSchema: eventTargetSchema,\n\t\t\t\t\t\tpayloadSchema: {\n\t\t\t\t\t\t\tid: 'myNewEventEmitPayload',\n\t\t\t\t\t\t\tfields: {\n\t\t\t\t\t\t\t\tbooleanField: {\n\t\t\t\t\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t}),\n\t\t\t\t}\n\t\t\t)\n\n\t\tassert.doesInclude(\n\t\t\tcontents,\n\t\t\t'event: SpruceEvent<SkillEventContract, EmitPayload>'\n\t\t)\n\n\t\tassert.doesInclude(\n\t\t\tcontents,\n\t\t\t`fullyQualifiedEventName: '${skill2.slug}.my-new-event::${this.expectedVersion}'`\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async emittingEventTriggersListenerAndCrashesWithListenerNotImplemented() {\n\t\tconst { currentSkill, skill2, eventContract, org } =\n\t\t\tawait this.setupSkillsInstallAtOrgRegisterEventContractAndGenerateListener(\n\t\t\t\t{\n\t\t\t\t\temitPayloadSchema: buildEmitTargetAndPayloadSchema({\n\t\t\t\t\t\teventName: 'my-new-event',\n\t\t\t\t\t\ttargetSchema: {\n\t\t\t\t\t\t\tid: 'myNewEventEmitTarget',\n\t\t\t\t\t\t\tfields: {\n\t\t\t\t\t\t\t\torganizationId: {\n\t\t\t\t\t\t\t\t\ttype: 'id',\n\t\t\t\t\t\t\t\t\tisRequired: true,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tpayloadSchema: {\n\t\t\t\t\t\t\tid: 'myNewEventEmitPayload',\n\t\t\t\t\t\t\tfields: {\n\t\t\t\t\t\t\t\tbooleanField: {\n\t\t\t\t\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t}),\n\t\t\t\t\tresponsePayloadSchema: buildSchema({\n\t\t\t\t\t\tid: 'myNewEventResponsePayload',\n\t\t\t\t\t\tfields: {\n\t\t\t\t\t\t\tbooleanField: {\n\t\t\t\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t}),\n\t\t\t\t}\n\t\t\t)\n\n\t\tconst currentClient = await this.connectToApi({\n\t\t\tshouldAuthAsCurrentSkill: true,\n\t\t})\n\n\t\tawait currentClient.disconnect()\n\n\t\tconst boot = await this.Action('skill', 'boot').execute({ local: true })\n\n\t\tassert.isFalsy(boot.errors)\n\n\t\t//give the skill time to boot\n\t\tawait this.wait(20000)\n\n\t\tconst client = (await this.connectToApi({\n\t\t\tskillId: skill2.id,\n\t\t\tapiKey: skill2.apiKey,\n\t\t})) as any\n\n\t\tconst eventName = `${skill2.slug}.my-new-event::${this.expectedVersion}`\n\n\t\tclient.mixinContract({\n\t\t\teventSignatures: {\n\t\t\t\t[eventName]:\n\t\t\t\t\teventContract.eventSignatures[\n\t\t\t\t\t\t`my-new-event::${this.expectedVersion}`\n\t\t\t\t\t],\n\t\t\t},\n\t\t})\n\n\t\tlet results: any\n\n\t\tdo {\n\t\t\tawait this.wait(5000)\n\n\t\t\tresults = await client.emit(eventName, {\n\t\t\t\ttarget: {\n\t\t\t\t\torganizationId: org.id,\n\t\t\t\t},\n\t\t\t\tpayload: {\n\t\t\t\t\tbooleanField: true,\n\t\t\t\t},\n\t\t\t})\n\t\t} while (results.totalContracts < 1)\n\n\t\tassert.isEqual(results.totalContracts, 1)\n\t\tassert.isEqual(results.totalErrors, 1)\n\t\tassert.isEqual(results.totalResponses, 1)\n\n\t\tboot.meta?.promise?.catch((err: Error) => {\n\t\t\tassert.fail(err.stack)\n\t\t})\n\n\t\tawait boot.meta?.kill()\n\n\t\tconst error = assert.doesThrow(() =>\n\t\t\teventResponseUtil.getFirstResponseOrThrow(results)\n\t\t)\n\n\t\teventAssertUtil.assertError(error, 'LISTENER_NOT_IMPLEMENTED')\n\n\t\tconst responderRef = results.responses[0].responderRef\n\t\tassert.isEqual(\n\t\t\tresponderRef,\n\t\t\t`skill:${currentSkill.id}:${currentSkill.slug}`\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async listeningToAnEventWithNoEmitTargetOrPayloadGeneratesValidListener() {\n\t\tconst { listenerPath } =\n\t\t\tawait this.setupSkillsInstallAtOrgRegisterEventContractAndGenerateListener(\n\t\t\t\t{\n\t\t\t\t\tisGlobal: true,\n\t\t\t\t\tresponsePayloadSchema: {\n\t\t\t\t\t\tid: 'test',\n\t\t\t\t\t\tfields: {\n\t\t\t\t\t\t\tid: {\n\t\t\t\t\t\t\t\ttype: 'id',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t)\n\n\t\tawait this.Service('typeChecker').check(listenerPath)\n\t}\n\n\tprivate static async installEventsAndCreateListener() {\n\t\tconst cli = await this.installEventFeature('events')\n\n\t\tconst version = 'v2020_01_01'\n\n\t\tconst results = await this.Action('event', 'listen').execute({\n\t\t\tnamespace: 'skill',\n\t\t\teventName: 'will-boot',\n\t\t\tversion,\n\t\t})\n\n\t\tassert.isFalsy(results.errors)\n\t\treturn { version, results, cli }\n\t}\n\n\tprivate static async setupSkillsInstallAtOrgRegisterEventContractAndGenerateListener(\n\t\teventSignature: EventSignature\n\t) {\n\t\tconst expectedVersion = this.expectedVersion\n\n\t\tconst eventContract = {\n\t\t\teventSignatures: {\n\t\t\t\t[`my-new-event::${expectedVersion}`]: eventSignature,\n\t\t\t},\n\t\t} as const\n\n\t\tconst { skillFixture, skill2, currentSkill, cli, org } =\n\t\t\tawait this.seedDummySkillRegisterCurrentSkillAndInstallToOrg()\n\n\t\tawait skillFixture.registerEventContract(skill2, eventContract)\n\n\t\tthis.Service('dependency').add({\n\t\t\tid: skill2.id,\n\t\t\tnamespace: skill2.slug,\n\t\t})\n\n\t\tconst results = await this.Action('event', 'listen').execute({\n\t\t\tnamespace: skill2.slug,\n\t\t\teventName: `my-new-event`,\n\t\t\tversion: expectedVersion,\n\t\t})\n\n\t\tassert.isFalsy(results.errors)\n\n\t\tconst listener = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t`my-new-event.${expectedVersion}.listener.ts`,\n\t\t\tresults.files\n\t\t)\n\n\t\tawait this.Service('typeChecker').check(listener)\n\n\t\tconst contents = diskUtil.readFile(listener)\n\n\t\treturn {\n\t\t\tcontents,\n\t\t\tskill2,\n\t\t\tlistenerPath: listener,\n\t\t\tcli,\n\t\t\teventContract,\n\t\t\torg,\n\t\t\tcurrentSkill,\n\t\t}\n\t}\n}\n"],"file":"CreatingAListener.test.js"}
@@ -0,0 +1,7 @@
1
+ import AbstractEventTest from '../../../tests/AbstractEventTest';
2
+ export default class KeepingListenersInSyncTest extends AbstractEventTest {
3
+ protected static hasSyncAction(): Promise<void>;
4
+ protected static deletingAListener(): Promise<void>;
5
+ private static deleteLastFile;
6
+ private static createBootListener;
7
+ }
@@ -0,0 +1,171 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports["default"] = void 0;
9
+
10
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
11
+
12
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
13
+
14
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
15
+
16
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
17
+
18
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
19
+
20
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
21
+
22
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
23
+
24
+ var _applyDecoratedDescriptor2 = _interopRequireDefault(require("@babel/runtime/helpers/applyDecoratedDescriptor"));
25
+
26
+ var _spruceSkillUtils = require("@sprucelabs/spruce-skill-utils");
27
+
28
+ var _test = require("@sprucelabs/test");
29
+
30
+ var _AbstractEventTest2 = _interopRequireDefault(require("../../../tests/AbstractEventTest"));
31
+
32
+ var _test2 = _interopRequireDefault(require("../../../tests/utilities/test.utility"));
33
+
34
+ var _dec, _dec2, _class;
35
+
36
+ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
37
+
38
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
39
+
40
+ var KeepingListenersInSyncTest = (_dec = (0, _test.test)(), _dec2 = (0, _test.test)(), (_class = /*#__PURE__*/function (_AbstractEventTest) {
41
+ (0, _inherits2["default"])(KeepingListenersInSyncTest, _AbstractEventTest);
42
+
43
+ var _super = _createSuper(KeepingListenersInSyncTest);
44
+
45
+ function KeepingListenersInSyncTest() {
46
+ (0, _classCallCheck2["default"])(this, KeepingListenersInSyncTest);
47
+ return _super.apply(this, arguments);
48
+ }
49
+
50
+ (0, _createClass2["default"])(KeepingListenersInSyncTest, null, [{
51
+ key: "hasSyncAction",
52
+ value: function () {
53
+ var _hasSyncAction = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
54
+ return _regenerator["default"].wrap(function _callee$(_context) {
55
+ while (1) {
56
+ switch (_context.prev = _context.next) {
57
+ case 0:
58
+ _test.assert.isFunction(this.Action('event', 'sync.listeners').execute);
59
+
60
+ case 1:
61
+ case "end":
62
+ return _context.stop();
63
+ }
64
+ }
65
+ }, _callee, this);
66
+ }));
67
+
68
+ function hasSyncAction() {
69
+ return _hasSyncAction.apply(this, arguments);
70
+ }
71
+
72
+ return hasSyncAction;
73
+ }()
74
+ }, {
75
+ key: "deletingAListener",
76
+ value: function () {
77
+ var _deletingAListener = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
78
+ var results, syncResults, listenerMap;
79
+ return _regenerator["default"].wrap(function _callee2$(_context2) {
80
+ while (1) {
81
+ switch (_context2.prev = _context2.next) {
82
+ case 0:
83
+ _context2.next = 2;
84
+ return this.FeatureFixture().installCachedFeatures('events');
85
+
86
+ case 2:
87
+ _context2.next = 4;
88
+ return this.createBootListener('did-boot');
89
+
90
+ case 4:
91
+ _context2.next = 6;
92
+ return this.createBootListener('will-boot');
93
+
94
+ case 6:
95
+ results = _context2.sent;
96
+ this.deleteLastFile(results);
97
+ _context2.next = 10;
98
+ return this.Action('event', 'sync.listeners').execute({});
99
+
100
+ case 10:
101
+ syncResults = _context2.sent;
102
+ listenerMap = _test2["default"].assertFileByNameInGeneratedFiles('listeners.ts', syncResults.files);
103
+ _context2.next = 14;
104
+ return this.Service('typeChecker').check(listenerMap);
105
+
106
+ case 14:
107
+ case "end":
108
+ return _context2.stop();
109
+ }
110
+ }
111
+ }, _callee2, this);
112
+ }));
113
+
114
+ function deletingAListener() {
115
+ return _deletingAListener.apply(this, arguments);
116
+ }
117
+
118
+ return deletingAListener;
119
+ }()
120
+ }, {
121
+ key: "deleteLastFile",
122
+ value: function deleteLastFile(results) {
123
+ var _results$files, _results$files$pop;
124
+
125
+ var path = (_results$files = results.files) === null || _results$files === void 0 ? void 0 : (_results$files$pop = _results$files.pop()) === null || _results$files$pop === void 0 ? void 0 : _results$files$pop.path;
126
+
127
+ _test.assert.isString(path);
128
+
129
+ _spruceSkillUtils.diskUtil.deleteFile(path);
130
+ }
131
+ }, {
132
+ key: "createBootListener",
133
+ value: function () {
134
+ var _createBootListener = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(name) {
135
+ var results;
136
+ return _regenerator["default"].wrap(function _callee3$(_context3) {
137
+ while (1) {
138
+ switch (_context3.prev = _context3.next) {
139
+ case 0:
140
+ _context3.next = 2;
141
+ return this.Action('event', 'listen').execute({
142
+ namespace: 'skill',
143
+ eventName: name
144
+ });
145
+
146
+ case 2:
147
+ results = _context3.sent;
148
+
149
+ _test.assert.isFalsy(results.errors);
150
+
151
+ return _context3.abrupt("return", results);
152
+
153
+ case 5:
154
+ case "end":
155
+ return _context3.stop();
156
+ }
157
+ }
158
+ }, _callee3, this);
159
+ }));
160
+
161
+ function createBootListener(_x) {
162
+ return _createBootListener.apply(this, arguments);
163
+ }
164
+
165
+ return createBootListener;
166
+ }()
167
+ }]);
168
+ return KeepingListenersInSyncTest;
169
+ }(_AbstractEventTest2["default"]), ((0, _applyDecoratedDescriptor2["default"])(_class, "hasSyncAction", [_dec], Object.getOwnPropertyDescriptor(_class, "hasSyncAction"), _class), (0, _applyDecoratedDescriptor2["default"])(_class, "deletingAListener", [_dec2], Object.getOwnPropertyDescriptor(_class, "deletingAListener"), _class)), _class));
170
+ exports["default"] = KeepingListenersInSyncTest;
171
+ //# sourceMappingURL=KeepingListenersInSync.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/__tests__/behavioral/events/KeepingListenersInSync.test.ts"],"names":["KeepingListenersInSyncTest","assert","isFunction","Action","execute","FeatureFixture","installCachedFeatures","createBootListener","results","deleteLastFile","syncResults","listenerMap","testUtil","assertFileByNameInGeneratedFiles","files","Service","check","path","pop","isString","diskUtil","deleteFile","name","namespace","eventName","isFalsy","errors","AbstractEventTest"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AAEA;;AACA;;;;;;;;IAEqBA,0B,WACnB,iB,UAKA,iB;;;;;;;;;;;;;yGALD;AAAA;AAAA;AAAA;AAAA;AAECC,6BAAOC,UAAP,CAAkB,KAAKC,MAAL,CAAY,OAAZ,EAAqB,gBAArB,EAAuCC,OAAzD;;AAFD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;6GAKA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAEO,KAAKC,cAAL,GAAsBC,qBAAtB,CAA4C,QAA5C,CAFP;;AAAA;AAAA;AAAA,uBAIO,KAAKC,kBAAL,CAAwB,UAAxB,CAJP;;AAAA;AAAA;AAAA,uBAKuB,KAAKA,kBAAL,CAAwB,WAAxB,CALvB;;AAAA;AAKOC,gBAAAA,OALP;AAOC,qBAAKC,cAAL,CAAoBD,OAApB;AAPD;AAAA,uBAS2B,KAAKL,MAAL,CAAY,OAAZ,EAAqB,gBAArB,EAAuCC,OAAvC,CAA+C,EAA/C,CAT3B;;AAAA;AASOM,gBAAAA,WATP;AAWOC,gBAAAA,WAXP,GAWqBC,kBAASC,gCAAT,CACnB,cADmB,EAEnBH,WAAW,CAACI,KAFO,CAXrB;AAAA;AAAA,uBAgBO,KAAKC,OAAL,CAAa,aAAb,EAA4BC,KAA5B,CAAkCL,WAAlC,CAhBP;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;WAmBA,wBAA8BH,OAA9B,EAA8D;AAAA;;AAC7D,UAAMS,IAAI,qBAAGT,OAAO,CAACM,KAAX,yEAAG,eAAeI,GAAf,EAAH,uDAAG,mBAAsBD,IAAnC;;AACAhB,mBAAOkB,QAAP,CAAgBF,IAAhB;;AAEAG,iCAASC,UAAT,CAAoBJ,IAApB;AACA;;;;8GAED,kBAAwCK,IAAxC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBACuB,KAAKnB,MAAL,CAAY,OAAZ,EAAqB,QAArB,EAA+BC,OAA/B,CAAuC;AAC5DmB,kBAAAA,SAAS,EAAE,OADiD;AAE5DC,kBAAAA,SAAS,EAAEF;AAFiD,iBAAvC,CADvB;;AAAA;AACOd,gBAAAA,OADP;;AAKCP,6BAAOwB,OAAP,CAAejB,OAAO,CAACkB,MAAvB;;AALD,kDAMQlB,OANR;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;EAhCuDmB,8B","sourcesContent":["import { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test'\nimport { FeatureActionResponse } from '../../../features/features.types'\nimport AbstractEventTest from '../../../tests/AbstractEventTest'\nimport testUtil from '../../../tests/utilities/test.utility'\n\nexport default class KeepingListenersInSyncTest extends AbstractEventTest {\n\t@test()\n\tprotected static async hasSyncAction() {\n\t\tassert.isFunction(this.Action('event', 'sync.listeners').execute)\n\t}\n\n\t@test()\n\tprotected static async deletingAListener() {\n\t\tawait this.FeatureFixture().installCachedFeatures('events')\n\n\t\tawait this.createBootListener('did-boot')\n\t\tconst results = await this.createBootListener('will-boot')\n\n\t\tthis.deleteLastFile(results)\n\n\t\tconst syncResults = await this.Action('event', 'sync.listeners').execute({})\n\n\t\tconst listenerMap = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'listeners.ts',\n\t\t\tsyncResults.files\n\t\t)\n\n\t\tawait this.Service('typeChecker').check(listenerMap)\n\t}\n\n\tprivate static deleteLastFile(results: FeatureActionResponse) {\n\t\tconst path = results.files?.pop()?.path\n\t\tassert.isString(path)\n\n\t\tdiskUtil.deleteFile(path)\n\t}\n\n\tprivate static async createBootListener(name: 'will-boot' | 'did-boot') {\n\t\tconst results = await this.Action('event', 'listen').execute({\n\t\t\tnamespace: 'skill',\n\t\t\teventName: name,\n\t\t})\n\t\tassert.isFalsy(results.errors)\n\t\treturn results\n\t}\n}\n"],"file":"KeepingListenersInSync.test.js"}
@@ -1,4 +1,4 @@
1
- import AbstractEventTest from '../../tests/AbstractEventTest';
1
+ import AbstractEventTest from '../../../tests/AbstractEventTest';
2
2
  export default class ListeningToAnEventYouCreateTest extends AbstractEventTest {
3
3
  protected static canListenToEventWeCreated(): Promise<void>;
4
4
  private static assertClientIsProperlyTyped;
@@ -29,9 +29,9 @@ var _spruceSkillUtils = require("@sprucelabs/spruce-skill-utils");
29
29
 
30
30
  var _test = require("@sprucelabs/test");
31
31
 
32
- var _AbstractEventTest2 = _interopRequireDefault(require("../../tests/AbstractEventTest"));
32
+ var _AbstractEventTest2 = _interopRequireDefault(require("../../../tests/AbstractEventTest"));
33
33
 
34
- var _test2 = _interopRequireDefault(require("../../tests/utilities/test.utility"));
34
+ var _test2 = _interopRequireDefault(require("../../../tests/utilities/test.utility"));
35
35
 
36
36
  var _dec, _class;
37
37
 
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/__tests__/behavioral/events/ListeningToAnEventYouCreate.test.ts"],"names":["ListeningToAnEventYouCreateTest","registerCurrentSkillAndInstallToOrg","currentSkill","eventName","version","fqen","eventNameUtil","join","eventNamespace","slug","source","resolveTestPath","destination","resolvePath","diskUtil","copyDir","listenPromise","Action","execute","waitForInput","ui","sendInput","results","assert","isFalsy","errors","match","testUtil","assertFileByNameInGeneratedFiles","files","doesInclude","assertClientIsProperlyTyped","sourceFile","contents","readFile","replace","destinationFile","writeFile","Service","check","AbstractEventTest"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;;;;;;;IAEqBA,+B,WACnB,iB;;;;;;;;;;;;;qHAAD;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAEgC,KAAKC,mCAAL,EAFhC;;AAAA;AAAA;AAESC,gBAAAA,YAFT,yBAESA,YAFT;AAIOC,gBAAAA,SAJP,GAImB,sBAJnB;AAKOC,gBAAAA,OALP,GAKiB,aALjB;AAOOC,gBAAAA,IAPP,GAOcC,gCAAcC,IAAd,CAAmB;AAC/BJ,kBAAAA,SAAS,EAATA,SAD+B;AAE/BK,kBAAAA,cAAc,EAAEN,YAAY,CAACO,IAFE;AAG/BL,kBAAAA,OAAO,EAAPA;AAH+B,iBAAnB,CAPd;AAaOM,gBAAAA,MAbP,GAagB,KAAKC,eAAL,CAAqB,sCAArB,CAbhB;AAcOC,gBAAAA,WAdP,GAcqB,KAAKC,WAAL,CAAiB,KAAjB,CAdrB;AAAA;AAAA,uBAgBOC,2BAASC,OAAT,CAAiBL,MAAjB,EAAyBE,WAAzB,CAhBP;;AAAA;AAkBOI,gBAAAA,aAlBP,GAkBuB,KAAKC,MAAL,CAAY,OAAZ,EAAqB,QAArB,EAA+BC,OAA/B,CAAuC,EAAvC,CAlBvB;AAAA;AAAA,uBAoBO,KAAKC,YAAL,EApBP;;AAAA;AAAA;AAAA,uBAqBO,KAAKC,EAAL,CAAQC,SAAR,CAAkBnB,YAAY,CAACO,IAA/B,CArBP;;AAAA;AAAA;AAAA,uBAuBO,KAAKU,YAAL,EAvBP;;AAAA;AAAA;AAAA,uBAwBO,KAAKC,EAAL,CAAQC,SAAR,CAAkBhB,IAAlB,CAxBP;;AAAA;AAAA;AAAA,uBA0BuBW,aA1BvB;;AAAA;AA0BOM,gBAAAA,OA1BP;;AA4BCC,6BAAOC,OAAP,CAAeF,OAAO,CAACG,MAAvB;;AAEMC,gBAAAA,KA9BP,GA8BeC,kBAASC,gCAAT,WACVzB,SADU,cACGC,OADH,mBAEbkB,OAAO,CAACO,KAFK,CA9Bf;;AAmCCN,6BAAOO,WAAP,CACCJ,KADD,EAECZ,2BAASD,WAAT,CAAqB,WAArB,EAAkCX,YAAY,CAACO,IAA/C,CAFD;;AAnCD;AAAA,uBAwCO,KAAKsB,2BAAL,CAAiC7B,YAAY,CAACO,IAA9C,CAxCP;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;uHA2CA,kBAAiDD,cAAjD;AAAA;AAAA;AAAA;AAAA;AAAA;AACOwB,gBAAAA,UADP,GACoB,KAAKnB,WAAL,CAAiB,6BAAjB,CADpB;AAEOoB,gBAAAA,QAFP,GAEkBnB,2BACfoB,QADe,CACNF,UADM,EAEfG,OAFe,CAEP,oBAFO,EAEe3B,cAFf,CAFlB;AAMO4B,gBAAAA,eANP,GAMyB,KAAKvB,WAAL,CAAiB,yBAAjB,CANzB;;AAOCC,2CAASuB,SAAT,CAAmBD,eAAnB,EAAoCH,QAApC;;AAPD;AAAA,uBASO,KAAKK,OAAL,CAAa,aAAb,EAA4BC,KAA5B,CAAkCH,eAAlC,CATP;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;EA5C4DI,8B","sourcesContent":["import { eventNameUtil } from '@sprucelabs/spruce-event-utils'\nimport { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test'\nimport AbstractEventTest from '../../../tests/AbstractEventTest'\nimport testUtil from '../../../tests/utilities/test.utility'\n\nexport default class ListeningToAnEventYouCreateTest extends AbstractEventTest {\n\t@test()\n\tprotected static async canListenToEventWeCreated() {\n\t\tconst { currentSkill } = await this.registerCurrentSkillAndInstallToOrg()\n\n\t\tconst eventName = 'register-skill-views'\n\t\tconst version = 'v2021_04_11'\n\n\t\tconst fqen = eventNameUtil.join({\n\t\t\teventName,\n\t\t\teventNamespace: currentSkill.slug,\n\t\t\tversion,\n\t\t})\n\n\t\tconst source = this.resolveTestPath('skill_register_skill_views_event/src')\n\t\tconst destination = this.resolvePath('src')\n\n\t\tawait diskUtil.copyDir(source, destination)\n\n\t\tconst listenPromise = this.Action('event', 'listen').execute({})\n\n\t\tawait this.waitForInput()\n\t\tawait this.ui.sendInput(currentSkill.slug)\n\n\t\tawait this.waitForInput()\n\t\tawait this.ui.sendInput(fqen)\n\n\t\tconst results = await listenPromise\n\n\t\tassert.isFalsy(results.errors)\n\n\t\tconst match = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t`${eventName}.${version}.listener.ts`,\n\t\t\tresults.files\n\t\t)\n\n\t\tassert.doesInclude(\n\t\t\tmatch,\n\t\t\tdiskUtil.resolvePath('listeners', currentSkill.slug)\n\t\t)\n\n\t\tawait this.assertClientIsProperlyTyped(currentSkill.slug)\n\t}\n\n\tprivate static async assertClientIsProperlyTyped(eventNamespace: string) {\n\t\tconst sourceFile = this.resolvePath('src/client-type-test.ts.hbs')\n\t\tconst contents = diskUtil\n\t\t\t.readFile(sourceFile)\n\t\t\t.replace('{{eventNamespace}}', eventNamespace)\n\n\t\tconst destinationFile = this.resolvePath('src/client-type-test.ts')\n\t\tdiskUtil.writeFile(destinationFile, contents)\n\n\t\tawait this.Service('typeChecker').check(destinationFile)\n\t}\n}\n"],"file":"ListeningToAnEventYouCreate.test.js"}
@@ -1,5 +1,6 @@
1
1
  import AbstractEventTest from '../../../tests/AbstractEventTest';
2
2
  export default class SkillEmitsBootEventsTest extends AbstractEventTest {
3
+ protected static beforeEach(): Promise<void>;
3
4
  protected static skillEmitsWillBootEvents(): Promise<void>;
4
5
  protected static skillEmitsDidBootEventsThatErrorAfterBoot(): Promise<void>;
5
6
  }
@@ -15,6 +15,8 @@ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/cl
15
15
 
16
16
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
17
17
 
18
+ var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
19
+
18
20
  var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
19
21
 
20
22
  var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
@@ -27,6 +29,8 @@ var _test = require("@sprucelabs/test");
27
29
 
28
30
  var _testUtils = require("@sprucelabs/test-utils");
29
31
 
32
+ var _LintService = _interopRequireDefault(require("../../../services/LintService"));
33
+
30
34
  var _AbstractEventTest2 = _interopRequireDefault(require("../../../tests/AbstractEventTest"));
31
35
 
32
36
  var _dec, _dec2, _class;
@@ -46,20 +50,48 @@ var SkillEmitsBootEventsTest = (_dec = (0, _test.test)(), _dec2 = (0, _test.test
46
50
  }
47
51
 
48
52
  (0, _createClass2["default"])(SkillEmitsBootEventsTest, null, [{
49
- key: "skillEmitsWillBootEvents",
53
+ key: "beforeEach",
50
54
  value: function () {
51
- var _skillEmitsWillBootEvents = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
52
- var version, response;
55
+ var _beforeEach = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
53
56
  return _regenerator["default"].wrap(function _callee$(_context) {
54
57
  while (1) {
55
58
  switch (_context.prev = _context.next) {
56
59
  case 0:
57
60
  _context.next = 2;
61
+ return (0, _get2["default"])((0, _getPrototypeOf2["default"])(SkillEmitsBootEventsTest), "beforeEach", this).call(this);
62
+
63
+ case 2:
64
+ _LintService["default"].enableLinting();
65
+
66
+ case 3:
67
+ case "end":
68
+ return _context.stop();
69
+ }
70
+ }
71
+ }, _callee, this);
72
+ }));
73
+
74
+ function beforeEach() {
75
+ return _beforeEach.apply(this, arguments);
76
+ }
77
+
78
+ return beforeEach;
79
+ }()
80
+ }, {
81
+ key: "skillEmitsWillBootEvents",
82
+ value: function () {
83
+ var _skillEmitsWillBootEvents = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
84
+ var version, response;
85
+ return _regenerator["default"].wrap(function _callee2$(_context2) {
86
+ while (1) {
87
+ switch (_context2.prev = _context2.next) {
88
+ case 0:
89
+ _context2.next = 2;
58
90
  return this.installEventFeature('events');
59
91
 
60
92
  case 2:
61
93
  version = 'v2020_01_01';
62
- _context.next = 5;
94
+ _context2.next = 5;
63
95
  return this.Action('event', 'listen').execute({
64
96
  namespace: 'skill',
65
97
  eventName: 'will-boot',
@@ -67,15 +99,15 @@ var SkillEmitsBootEventsTest = (_dec = (0, _test.test)(), _dec2 = (0, _test.test
67
99
  });
68
100
 
69
101
  case 5:
70
- _context.next = 7;
102
+ _context2.next = 7;
71
103
  return this.Service('build').build();
72
104
 
73
105
  case 7:
74
- _context.next = 9;
106
+ _context2.next = 9;
75
107
  return this.Action('skill', 'boot').execute({});
76
108
 
77
109
  case 9:
78
- response = _context.sent;
110
+ response = _context2.sent;
79
111
 
80
112
  _test.assert.isTruthy(response.errors);
81
113
 
@@ -83,10 +115,10 @@ var SkillEmitsBootEventsTest = (_dec = (0, _test.test)(), _dec2 = (0, _test.test
83
115
 
84
116
  case 12:
85
117
  case "end":
86
- return _context.stop();
118
+ return _context2.stop();
87
119
  }
88
120
  }
89
- }, _callee, this);
121
+ }, _callee2, this);
90
122
  }));
91
123
 
92
124
  function skillEmitsWillBootEvents() {
@@ -98,18 +130,18 @@ var SkillEmitsBootEventsTest = (_dec = (0, _test.test)(), _dec2 = (0, _test.test
98
130
  }, {
99
131
  key: "skillEmitsDidBootEventsThatErrorAfterBoot",
100
132
  value: function () {
101
- var _skillEmitsDidBootEventsThatErrorAfterBoot = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
133
+ var _skillEmitsDidBootEventsThatErrorAfterBoot = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3() {
102
134
  var version, response, err;
103
- return _regenerator["default"].wrap(function _callee2$(_context2) {
135
+ return _regenerator["default"].wrap(function _callee3$(_context3) {
104
136
  while (1) {
105
- switch (_context2.prev = _context2.next) {
137
+ switch (_context3.prev = _context3.next) {
106
138
  case 0:
107
- _context2.next = 2;
139
+ _context3.next = 2;
108
140
  return this.installEventFeature('events');
109
141
 
110
142
  case 2:
111
143
  version = 'v2020_01_01';
112
- _context2.next = 5;
144
+ _context3.next = 5;
113
145
  return this.Action('event', 'listen').execute({
114
146
  namespace: 'skill',
115
147
  eventName: 'did-boot',
@@ -117,16 +149,16 @@ var SkillEmitsBootEventsTest = (_dec = (0, _test.test)(), _dec2 = (0, _test.test
117
149
  });
118
150
 
119
151
  case 5:
120
- _context2.next = 7;
152
+ _context3.next = 7;
121
153
  return this.Service('build').build();
122
154
 
123
155
  case 7:
124
- _context2.next = 9;
156
+ _context3.next = 9;
125
157
  return this.Action('skill', 'boot').execute({});
126
158
 
127
159
  case 9:
128
- response = _context2.sent;
129
- _context2.next = 12;
160
+ response = _context3.sent;
161
+ _context3.next = 12;
130
162
  return _test.assert.doesThrowAsync(function () {
131
163
  var _response$meta;
132
164
 
@@ -134,16 +166,16 @@ var SkillEmitsBootEventsTest = (_dec = (0, _test.test)(), _dec2 = (0, _test.test
134
166
  });
135
167
 
136
168
  case 12:
137
- err = _context2.sent;
169
+ err = _context3.sent;
138
170
 
139
171
  _testUtils.errorAssertUtil.assertError(err, 'LISTENER_NOT_IMPLEMENTED');
140
172
 
141
173
  case 14:
142
174
  case "end":
143
- return _context2.stop();
175
+ return _context3.stop();
144
176
  }
145
177
  }
146
- }, _callee2, this);
178
+ }, _callee3, this);
147
179
  }));
148
180
 
149
181
  function skillEmitsDidBootEventsThatErrorAfterBoot() {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/__tests__/behavioral/events/SkillEmitsBootEvents.test.ts"],"names":["SkillEmitsBootEventsTest","installEventFeature","version","Action","execute","namespace","eventName","Service","build","response","assert","isTruthy","errors","errorAssertUtil","assertError","doesThrowAsync","meta","promise","err","AbstractEventTest"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;;;;;;;IAEqBA,wB,WACnB,iB,UAkBA,iB;;;;;;;;;;;;;oHAlBD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAEO,KAAKC,mBAAL,CAAyB,QAAzB,CAFP;;AAAA;AAGOC,gBAAAA,OAHP,GAGiB,aAHjB;AAAA;AAAA,uBAKO,KAAKC,MAAL,CAAY,OAAZ,EAAqB,QAArB,EAA+BC,OAA/B,CAAuC;AAC5CC,kBAAAA,SAAS,EAAE,OADiC;AAE5CC,kBAAAA,SAAS,EAAE,WAFiC;AAG5CJ,kBAAAA,OAAO,EAAPA;AAH4C,iBAAvC,CALP;;AAAA;AAAA;AAAA,uBAWO,KAAKK,OAAL,CAAa,OAAb,EAAsBC,KAAtB,EAXP;;AAAA;AAAA;AAAA,uBAawB,KAAKL,MAAL,CAAY,OAAZ,EAAqB,MAArB,EAA6BC,OAA7B,CAAqC,EAArC,CAbxB;;AAAA;AAaOK,gBAAAA,QAbP;;AAcCC,6BAAOC,QAAP,CAAgBF,QAAQ,CAACG,MAAzB;;AACAC,2CAAgBC,WAAhB,CAA4BL,QAAQ,CAACG,MAAT,CAAgB,CAAhB,CAA5B,EAAgD,0BAAhD;;AAfD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;qIAkBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAEO,KAAKX,mBAAL,CAAyB,QAAzB,CAFP;;AAAA;AAGOC,gBAAAA,OAHP,GAGiB,aAHjB;AAAA;AAAA,uBAKO,KAAKC,MAAL,CAAY,OAAZ,EAAqB,QAArB,EAA+BC,OAA/B,CAAuC;AAC5CC,kBAAAA,SAAS,EAAE,OADiC;AAE5CC,kBAAAA,SAAS,EAAE,UAFiC;AAG5CJ,kBAAAA,OAAO,EAAPA;AAH4C,iBAAvC,CALP;;AAAA;AAAA;AAAA,uBAWO,KAAKK,OAAL,CAAa,OAAb,EAAsBC,KAAtB,EAXP;;AAAA;AAAA;AAAA,uBAawB,KAAKL,MAAL,CAAY,OAAZ,EAAqB,MAArB,EAA6BC,OAA7B,CAAqC,EAArC,CAbxB;;AAAA;AAaOK,gBAAAA,QAbP;AAAA;AAAA,uBAcmBC,aAAOK,cAAP,CAAsB;AAAA;;AAAA,2CAAMN,QAAQ,CAACO,IAAf,mDAAM,eAAeC,OAArB;AAAA,iBAAtB,CAdnB;;AAAA;AAcOC,gBAAAA,GAdP;;AAeCL,2CAAgBC,WAAhB,CAA4BI,GAA5B,EAAiC,0BAAjC;;AAfD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;EAnBqDC,8B","sourcesContent":["import { test, assert } from '@sprucelabs/test'\nimport { errorAssertUtil } from '@sprucelabs/test-utils'\nimport AbstractEventTest from '../../../tests/AbstractEventTest'\n\nexport default class SkillEmitsBootEventsTest extends AbstractEventTest {\n\t@test()\n\tprotected static async skillEmitsWillBootEvents() {\n\t\tawait this.installEventFeature('events')\n\t\tconst version = 'v2020_01_01'\n\n\t\tawait this.Action('event', 'listen').execute({\n\t\t\tnamespace: 'skill',\n\t\t\teventName: 'will-boot',\n\t\t\tversion,\n\t\t})\n\n\t\tawait this.Service('build').build()\n\n\t\tconst response = await this.Action('skill', 'boot').execute({})\n\t\tassert.isTruthy(response.errors)\n\t\terrorAssertUtil.assertError(response.errors[0], 'LISTENER_NOT_IMPLEMENTED')\n\t}\n\n\t@test()\n\tprotected static async skillEmitsDidBootEventsThatErrorAfterBoot() {\n\t\tawait this.installEventFeature('events')\n\t\tconst version = 'v2020_01_01'\n\n\t\tawait this.Action('event', 'listen').execute({\n\t\t\tnamespace: 'skill',\n\t\t\teventName: 'did-boot',\n\t\t\tversion,\n\t\t})\n\n\t\tawait this.Service('build').build()\n\n\t\tconst response = await this.Action('skill', 'boot').execute({})\n\t\tconst err = await assert.doesThrowAsync(() => response.meta?.promise)\n\t\terrorAssertUtil.assertError(err, 'LISTENER_NOT_IMPLEMENTED')\n\t}\n}\n"],"file":"SkillEmitsBootEvents.test.js"}
1
+ {"version":3,"sources":["../../../../src/__tests__/behavioral/events/SkillEmitsBootEvents.test.ts"],"names":["SkillEmitsBootEventsTest","LintService","enableLinting","installEventFeature","version","Action","execute","namespace","eventName","Service","build","response","assert","isTruthy","errors","errorAssertUtil","assertError","doesThrowAsync","meta","promise","err","AbstractEventTest"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;;;;;;;IAEqBA,wB,WAMnB,iB,UAkBA,iB;;;;;;;;;;;;;sGAvBD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAECC,wCAAYC,aAAZ;;AAFD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;oHAKA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAEO,KAAKC,mBAAL,CAAyB,QAAzB,CAFP;;AAAA;AAGOC,gBAAAA,OAHP,GAGiB,aAHjB;AAAA;AAAA,uBAKO,KAAKC,MAAL,CAAY,OAAZ,EAAqB,QAArB,EAA+BC,OAA/B,CAAuC;AAC5CC,kBAAAA,SAAS,EAAE,OADiC;AAE5CC,kBAAAA,SAAS,EAAE,WAFiC;AAG5CJ,kBAAAA,OAAO,EAAPA;AAH4C,iBAAvC,CALP;;AAAA;AAAA;AAAA,uBAWO,KAAKK,OAAL,CAAa,OAAb,EAAsBC,KAAtB,EAXP;;AAAA;AAAA;AAAA,uBAawB,KAAKL,MAAL,CAAY,OAAZ,EAAqB,MAArB,EAA6BC,OAA7B,CAAqC,EAArC,CAbxB;;AAAA;AAaOK,gBAAAA,QAbP;;AAcCC,6BAAOC,QAAP,CAAgBF,QAAQ,CAACG,MAAzB;;AACAC,2CAAgBC,WAAhB,CAA4BL,QAAQ,CAACG,MAAT,CAAgB,CAAhB,CAA5B,EAAgD,0BAAhD;;AAfD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;qIAkBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAEO,KAAKX,mBAAL,CAAyB,QAAzB,CAFP;;AAAA;AAGOC,gBAAAA,OAHP,GAGiB,aAHjB;AAAA;AAAA,uBAKO,KAAKC,MAAL,CAAY,OAAZ,EAAqB,QAArB,EAA+BC,OAA/B,CAAuC;AAC5CC,kBAAAA,SAAS,EAAE,OADiC;AAE5CC,kBAAAA,SAAS,EAAE,UAFiC;AAG5CJ,kBAAAA,OAAO,EAAPA;AAH4C,iBAAvC,CALP;;AAAA;AAAA;AAAA,uBAWO,KAAKK,OAAL,CAAa,OAAb,EAAsBC,KAAtB,EAXP;;AAAA;AAAA;AAAA,uBAawB,KAAKL,MAAL,CAAY,OAAZ,EAAqB,MAArB,EAA6BC,OAA7B,CAAqC,EAArC,CAbxB;;AAAA;AAaOK,gBAAAA,QAbP;AAAA;AAAA,uBAcmBC,aAAOK,cAAP,CAAsB;AAAA;;AAAA,2CAAMN,QAAQ,CAACO,IAAf,mDAAM,eAAeC,OAArB;AAAA,iBAAtB,CAdnB;;AAAA;AAcOC,gBAAAA,GAdP;;AAeCL,2CAAgBC,WAAhB,CAA4BI,GAA5B,EAAiC,0BAAjC;;AAfD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;EAxBqDC,8B","sourcesContent":["import { test, assert } from '@sprucelabs/test'\nimport { errorAssertUtil } from '@sprucelabs/test-utils'\nimport LintService from '../../../services/LintService'\nimport AbstractEventTest from '../../../tests/AbstractEventTest'\n\nexport default class SkillEmitsBootEventsTest extends AbstractEventTest {\n\tprotected static async beforeEach() {\n\t\tawait super.beforeEach()\n\t\tLintService.enableLinting()\n\t}\n\n\t@test()\n\tprotected static async skillEmitsWillBootEvents() {\n\t\tawait this.installEventFeature('events')\n\t\tconst version = 'v2020_01_01'\n\n\t\tawait this.Action('event', 'listen').execute({\n\t\t\tnamespace: 'skill',\n\t\t\teventName: 'will-boot',\n\t\t\tversion,\n\t\t})\n\n\t\tawait this.Service('build').build()\n\n\t\tconst response = await this.Action('skill', 'boot').execute({})\n\t\tassert.isTruthy(response.errors)\n\t\terrorAssertUtil.assertError(response.errors[0], 'LISTENER_NOT_IMPLEMENTED')\n\t}\n\n\t@test()\n\tprotected static async skillEmitsDidBootEventsThatErrorAfterBoot() {\n\t\tawait this.installEventFeature('events')\n\t\tconst version = 'v2020_01_01'\n\n\t\tawait this.Action('event', 'listen').execute({\n\t\t\tnamespace: 'skill',\n\t\t\teventName: 'did-boot',\n\t\t\tversion,\n\t\t})\n\n\t\tawait this.Service('build').build()\n\n\t\tconst response = await this.Action('skill', 'boot').execute({})\n\t\tconst err = await assert.doesThrowAsync(() => response.meta?.promise)\n\t\terrorAssertUtil.assertError(err, 'LISTENER_NOT_IMPLEMENTED')\n\t}\n}\n"],"file":"SkillEmitsBootEvents.test.js"}
@@ -0,0 +1,5 @@
1
+ import { FeatureCode } from '../../../features/features.types';
2
+ import AbstractCliTest from '../../../tests/AbstractCliTest';
3
+ export default class UpgradingWithListeners extends AbstractCliTest {
4
+ protected static upgradingSyncsListeners(featureCode: FeatureCode, shouldHit: boolean, actionCode?: string): Promise<void>;
5
+ }