@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,15 +1,26 @@
1
1
  import { SchemaError } from '@sprucelabs/schema'
2
+ // import { ESLint } from 'eslint'
2
3
  import fs from 'fs-extra'
3
4
  import SpruceError from '../errors/SpruceError'
4
5
  import CommandService from './CommandService'
5
6
 
6
7
  export default class LintService {
7
8
  public cwd: string
8
- private command: CommandService
9
+ private getCommand: () => CommandService
9
10
 
10
- public constructor(cwd: string, command: CommandService) {
11
+ private static isLintingEnabled = true
12
+
13
+ public static disableLinting() {
14
+ this.isLintingEnabled = false
15
+ }
16
+
17
+ public static enableLinting() {
18
+ this.isLintingEnabled = true
19
+ }
20
+
21
+ public constructor(cwd: string, commandServiceFactory: () => CommandService) {
11
22
  this.cwd = cwd
12
- this.command = command
23
+ this.getCommand = commandServiceFactory
13
24
  }
14
25
 
15
26
  public fix = async (pattern: string): Promise<string[]> => {
@@ -20,12 +31,19 @@ export default class LintService {
20
31
  })
21
32
  }
22
33
 
34
+ if (!LintService.isLintingEnabled) {
35
+ return []
36
+ }
37
+
23
38
  let fixedFiles: any = {}
24
39
  const fixedPaths: string[] = []
40
+
25
41
  try {
42
+ // const cli = new ESLint({ fix: true, cwd: this.cwd, cache: true })
43
+ // fixedFiles = await cli.lintFiles([pattern])
26
44
  const script = `"(async function lint() { try { const { ESLint } = require('eslint'); const cli = new ESLint({ fix: true, cwd: '${this.cwd}', }); const result = await cli.lintFiles(['${pattern}']); console.log(JSON.stringify(result)); } catch (err) { console.log(err.toString()); }})()"`
27
45
 
28
- const { stdout } = await this.command.execute('node', {
46
+ const { stdout } = await this.getCommand().execute('node', {
29
47
  args: ['-e', script],
30
48
  })
31
49
 
@@ -41,9 +59,20 @@ export default class LintService {
41
59
  if (fixedFiles) {
42
60
  for (let i = 0; i < fixedFiles.length; i += 1) {
43
61
  const fixedFile = fixedFiles[i]
44
- if (fixedFile && fixedFile.output) {
62
+
63
+ if (fixedFile?.output) {
45
64
  await fs.writeFile(fixedFile.filePath, fixedFile.output)
46
65
  fixedPaths.push(fixedFile.filePath)
66
+ } else if (fixedFile?.messages && fixedFile?.errorCount > 0) {
67
+ throw new SpruceError({
68
+ code: 'LINT_FAILED',
69
+ pattern,
70
+ friendlyMessage: `Lint error with '${
71
+ fixedFile.filePath
72
+ }':\n\n${fixedFile.messages
73
+ .map((m: any) => m?.message)
74
+ .join('\n')}`,
75
+ })
47
76
  }
48
77
  }
49
78
  }
@@ -39,7 +39,10 @@ export default class ServiceFactory {
39
39
  public Service<S extends Service>(cwd: string, type: S): ServiceMap[S] {
40
40
  switch (type) {
41
41
  case 'auth':
42
- return new AuthService(new EnvService(cwd)) as ServiceMap[S]
42
+ return new AuthService(
43
+ new EnvService(cwd),
44
+ new PkgService(cwd)
45
+ ) as ServiceMap[S]
43
46
  case 'pkg':
44
47
  return new PkgService(cwd) as ServiceMap[S]
45
48
  case 'env':
@@ -52,7 +55,9 @@ export default class ServiceFactory {
52
55
  command: new CommandService(cwd),
53
56
  }) as ServiceMap[S]
54
57
  case 'lint':
55
- return new LintService(cwd, new CommandService(cwd)) as ServiceMap[S]
58
+ return new LintService(cwd, () =>
59
+ this.Service(cwd, 'command')
60
+ ) as ServiceMap[S]
56
61
  case 'command': {
57
62
  return new CommandService(cwd) as ServiceMap[S]
58
63
  }
@@ -74,7 +79,7 @@ export default class ServiceFactory {
74
79
  const commandService = new CommandService(cwd)
75
80
  return new BuildService(
76
81
  commandService,
77
- new LintService(cwd, commandService)
82
+ new LintService(cwd, () => this.Service(cwd, 'command'))
78
83
  ) as ServiceMap[S]
79
84
  }
80
85
  case 'eventSettings':
@@ -1,5 +1,6 @@
1
1
  import ConversationStore from '../features/conversation/stores/ConversationStore'
2
2
  import EventStore from '../features/event/stores/EventStore'
3
+ import ListenerStore from '../features/event/stores/ListenerStore'
3
4
  import OnboardingStore from '../features/onboard/stores/OnboardingStore'
4
5
  import OrganizationStore from '../features/organization/stores/OrganizationStore'
5
6
  import SchemaStore from '../features/schema/stores/SchemaStore'
@@ -20,6 +21,7 @@ export interface StoreMap {
20
21
  conversation: ConversationStore
21
22
  store: StoreStore
22
23
  view: ViewStore
24
+ listener: ListenerStore
23
25
  }
24
26
 
25
27
  export type StoreCode = keyof StoreMap
@@ -33,6 +35,7 @@ const storeMap = {
33
35
  conversation: ConversationStore,
34
36
  store: StoreStore,
35
37
  view: ViewStore,
38
+ listener: ListenerStore,
36
39
  }
37
40
 
38
41
  export interface StoreFactoryMethodOptions {
@@ -23,6 +23,7 @@ import CliGlobalEmitter, { GlobalEmitter } from '../GlobalEmitter'
23
23
  import SpyInterface from '../interfaces/SpyInterface'
24
24
  import CommandService from '../services/CommandService'
25
25
  import ImportService from '../services/ImportService'
26
+ import LintService from '../services/LintService'
26
27
  import ServiceFactory, { Service, ServiceMap } from '../services/ServiceFactory'
27
28
  import StoreFactory, {
28
29
  StoreCode,
@@ -32,7 +33,6 @@ import StoreFactory, {
32
33
  } from '../stores/StoreFactory'
33
34
  import { ApiClientFactoryOptions } from '../types/apiClient.types'
34
35
  import { OptionOverrides } from '../types/cli.types'
35
- import AbstractWriter from '../writers/AbstractWriter'
36
36
  import WriterFactory from '../writers/WriterFactory'
37
37
  import FeatureFixture, {
38
38
  FeatureFixtureOptions,
@@ -66,7 +66,7 @@ export default abstract class AbstractCliTest extends AbstractSpruceTest {
66
66
  await super.beforeAll()
67
67
  await this.cleanTestDirsAndFiles()
68
68
 
69
- AbstractWriter.disableLinting()
69
+ LintService.disableLinting()
70
70
 
71
71
  ImportService.setCacheDir(diskUtil.createRandomTempDir())
72
72
  ImportService.enableCaching()
@@ -39,7 +39,6 @@ export default abstract class AbstractWriter {
39
39
  private upgradeMode: UpgradeMode
40
40
  private fileDescriptions: FileDescription[] = []
41
41
  private shouldConfirmBeforeWriting = true
42
- private static isLintingEnabled = true
43
42
  private firstFileWriteMessage?: string
44
43
  private hasShownFirstWriteMessage = false
45
44
  private settings: SettingsService<string>
@@ -54,18 +53,8 @@ export default abstract class AbstractWriter {
54
53
  }
55
54
 
56
55
  protected async lint(file: string) {
57
- if (AbstractWriter.isLintingEnabled) {
58
- this.ui.startLoading(`Linting ${pathUtil.basename(file)}...`)
59
- await this.linter?.fix(file).catch(() => {})
60
- }
61
- }
62
-
63
- public static disableLinting() {
64
- this.isLintingEnabled = false
65
- }
66
-
67
- public static enableLinting() {
68
- this.isLintingEnabled = true
56
+ this.ui.startLoading(`Linting ${pathUtil.basename(file)}...`)
57
+ await this.linter?.fix(file).catch(() => {})
69
58
  }
70
59
 
71
60
  protected async writeDirectoryTemplate(
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/__tests__/behavioral/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,8 +0,0 @@
1
-
2
- # Behavioral tests
3
-
4
- These are the tests that matter. They should test everything just under the interface. Interface tests can go into implementation since they'll often change.
5
-
6
- If all these pass, we ship.
7
-
8
-
@@ -1,5 +0,0 @@
1
- # Implementation Tests
2
-
3
- These tests help you build whatever you're building to solve the behavioral tests.
4
-
5
- Implementation tests can safely be deleted when they break when you are changing the implementation. At that point, you can create new ones.
@@ -1,5 +0,0 @@
1
- # Components
2
-
3
- Components are ways to collect lots of input form a user that you can reuse in multiple Commands.
4
-
5
- Commands and components are the only places you should be asking for input.
@@ -1,8 +0,0 @@
1
-
2
- # Behavioral tests
3
-
4
- These are the tests that matter. They should test everything just under the interface. Interface tests can go into implementation since they'll often change.
5
-
6
- If all these pass, we ship.
7
-
8
-
@@ -1,5 +0,0 @@
1
- # Implementation Tests
2
-
3
- These tests help you build whatever you're building to solve the behavioral tests.
4
-
5
- Implementation tests can safely be deleted when they break when you are changing the implementation. At that point, you can create new ones.
@@ -1,5 +0,0 @@
1
- # Components
2
-
3
- Components are ways to collect lots of input form a user that you can reuse in multiple Commands.
4
-
5
- Commands and components are the only places you should be asking for input.