@sprucelabs/spruce-cli 15.4.12 → 17.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (461) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/build/.spruce/errors/spruceCli/actionCancelled.schema.js.map +1 -1
  3. package/build/.spruce/errors/spruceCli/bootError.schema.js.map +1 -1
  4. package/build/.spruce/errors/spruceCli/buildFailed.schema.js.map +1 -1
  5. package/build/.spruce/errors/spruceCli/cacheNotEnabled.schema.js.map +1 -1
  6. package/build/.spruce/errors/spruceCli/commandAborted.schema.js.map +1 -1
  7. package/build/.spruce/errors/spruceCli/commandBlocked.schema.js.map +1 -1
  8. package/build/.spruce/errors/spruceCli/commandNotImplemented.schema.js.map +1 -1
  9. package/build/.spruce/errors/spruceCli/createAutoloaderFailed.schema.js.map +1 -1
  10. package/build/.spruce/errors/spruceCli/dependencyExists.schema.js.map +1 -1
  11. package/build/.spruce/errors/spruceCli/deployFailed.schema.js.map +1 -1
  12. package/build/.spruce/errors/spruceCli/directoryEmpty.schema.js.map +1 -1
  13. package/build/.spruce/errors/spruceCli/directoryNotSkill.schema.js.map +1 -1
  14. package/build/.spruce/errors/spruceCli/dockerNotStarted.schema.js.map +1 -1
  15. package/build/.spruce/errors/spruceCli/executingCommandFailed.schema.js.map +1 -1
  16. package/build/.spruce/errors/spruceCli/failedToImport.schema.js.map +1 -1
  17. package/build/.spruce/errors/spruceCli/featureNotInstalled.schema.js.map +1 -1
  18. package/build/.spruce/errors/spruceCli/fileExists.schema.js.map +1 -1
  19. package/build/.spruce/errors/spruceCli/generic.schema.js.map +1 -1
  20. package/build/.spruce/errors/spruceCli/invalidCommand.schema.js.map +1 -1
  21. package/build/.spruce/errors/spruceCli/invalidEventContract.schema.js.map +1 -1
  22. package/build/.spruce/errors/spruceCli/invalidFeatureCode.schema.js.map +1 -1
  23. package/build/.spruce/errors/spruceCli/invalidTestDirectory.schema.js.map +1 -1
  24. package/build/.spruce/errors/spruceCli/lintFailed.schema.js.map +1 -1
  25. package/build/.spruce/errors/spruceCli/mercuryResponseError.schema.js.map +1 -1
  26. package/build/.spruce/errors/spruceCli/missingDependencies.schema.js.map +1 -1
  27. package/build/.spruce/errors/spruceCli/missingDependenciesDependency.schema.js.map +1 -1
  28. package/build/.spruce/errors/spruceCli/noOrganizationsFound.schema.js.map +1 -1
  29. package/build/.spruce/errors/spruceCli/noSkillsRegistered.schema.js.map +1 -1
  30. package/build/.spruce/errors/spruceCli/notImplemented.schema.js.map +1 -1
  31. package/build/.spruce/errors/spruceCli/notLoggedIn.schema.js.map +1 -1
  32. package/build/.spruce/errors/spruceCli/schemaExists.schema.js.map +1 -1
  33. package/build/.spruce/errors/spruceCli/schemaFailedToImport.schema.js.map +1 -1
  34. package/build/.spruce/errors/spruceCli/schemaTemplateItemBuildingFailed.schema.js.map +1 -1
  35. package/build/.spruce/errors/spruceCli/skillNotFound.schema.js.map +1 -1
  36. package/build/.spruce/errors/spruceCli/skillNotRegistered.schema.js.map +1 -1
  37. package/build/.spruce/errors/spruceCli/skillViewExists.schema.js.map +1 -1
  38. package/build/.spruce/errors/spruceCli/storeExists.schema.js.map +1 -1
  39. package/build/.spruce/errors/spruceCli/testFailed.schema.js.map +1 -1
  40. package/build/.spruce/errors/spruceCli/themeExists.schema.js.map +1 -1
  41. package/build/.spruce/errors/spruceCli/transportAlreadyExists.schema.js.map +1 -1
  42. package/build/.spruce/errors/spruceCli/vscodeNotInstalled.schema.js.map +1 -1
  43. package/build/.spruce/events/heartwood/didRegisterSkillViews.v2021_02_11.contract.js.map +1 -1
  44. package/build/.spruce/events/heartwood/generateUrl.v2021_02_11.contract.js.map +1 -1
  45. package/build/.spruce/events/heartwood/getSkillViews.v2021_02_11.contract.js.map +1 -1
  46. package/build/.spruce/events/heartwood/listViews.v2021_02_11.contract.js.map +1 -1
  47. package/build/.spruce/events/heartwood/registerSkillViews.v2021_02_11.contract.js.map +1 -1
  48. package/build/.spruce/schemas/heartwood/v2021_02_11/didRegisterSkillViewsEmitPayload.schema.js.map +1 -1
  49. package/build/.spruce/schemas/heartwood/v2021_02_11/didRegisterSkillViewsEmitTarget.schema.js.map +1 -1
  50. package/build/.spruce/schemas/heartwood/v2021_02_11/didRegisterSkillViewsEmitTargetAndPayload.schema.js.map +1 -1
  51. package/build/.spruce/schemas/heartwood/v2021_02_11/generateUrlEmitPayload.schema.js.map +1 -1
  52. package/build/.spruce/schemas/heartwood/v2021_02_11/generateUrlEmitTarget.schema.js.map +1 -1
  53. package/build/.spruce/schemas/heartwood/v2021_02_11/generateUrlEmitTargetAndPayload.schema.js.map +1 -1
  54. package/build/.spruce/schemas/heartwood/v2021_02_11/generateUrlResponsePayload.schema.js.map +1 -1
  55. package/build/.spruce/schemas/heartwood/v2021_02_11/getSkillViewsEmitTargetAndPayload.schema.js.map +1 -1
  56. package/build/.spruce/schemas/heartwood/v2021_02_11/getSkillViewsResponsePayload.schema.js.map +1 -1
  57. package/build/.spruce/schemas/heartwood/v2021_02_11/getViewControllersEmitTarget.schema.js.map +1 -1
  58. package/build/.spruce/schemas/heartwood/v2021_02_11/listViewsResponsePayload.schema.js.map +1 -1
  59. package/build/.spruce/schemas/heartwood/v2021_02_11/listViewsResult.schema.js.map +1 -1
  60. package/build/.spruce/schemas/heartwood/v2021_02_11/registerSkillViewsEmitPayload.schema.js.map +1 -1
  61. package/build/.spruce/schemas/heartwood/v2021_02_11/registerSkillViewsEmitTargetAndPayload.schema.js.map +1 -1
  62. package/build/.spruce/schemas/heartwood/v2021_02_11/registerSkillViewsResponsePayload.schema.js.map +1 -1
  63. package/build/.spruce/schemas/spruceCli/v2020_07_22/bootSkillOptions.schema.js.map +1 -1
  64. package/build/.spruce/schemas/spruceCli/v2020_07_22/createConversationTopicOptions.schema.js.map +1 -1
  65. package/build/.spruce/schemas/spruceCli/v2020_07_22/createErrorOptions.schema.js.map +1 -1
  66. package/build/.spruce/schemas/spruceCli/v2020_07_22/createOrganizationOptions.schema.js.map +1 -1
  67. package/build/.spruce/schemas/spruceCli/v2020_07_22/createSchemaOptions.schema.js.map +1 -1
  68. package/build/.spruce/schemas/spruceCli/v2020_07_22/createTestOptions.schema.js.map +1 -1
  69. package/build/.spruce/schemas/spruceCli/v2020_07_22/generatedDir.schema.js.map +1 -1
  70. package/build/.spruce/schemas/spruceCli/v2020_07_22/generatedFile.schema.js.map +1 -1
  71. package/build/.spruce/schemas/spruceCli/v2020_07_22/installSkillAtOrganizationOptions.schema.js.map +1 -1
  72. package/build/.spruce/schemas/spruceCli/v2020_07_22/listenEventOptions.schema.js.map +1 -1
  73. package/build/.spruce/schemas/spruceCli/v2020_07_22/namedTemplateItem.schema.js.map +1 -1
  74. package/build/.spruce/schemas/spruceCli/v2020_07_22/nodeFeatureOptions.schema.js.map +1 -1
  75. package/build/.spruce/schemas/spruceCli/v2020_07_22/onboardOptions.schema.js.map +1 -1
  76. package/build/.spruce/schemas/spruceCli/v2020_07_22/onboarding.schema.js.map +1 -1
  77. package/build/.spruce/schemas/spruceCli/v2020_07_22/personWithToken.schema.js.map +1 -1
  78. package/build/.spruce/schemas/spruceCli/v2020_07_22/registerDashboardWidgetsEmitPayloadSchema.schema.js.map +1 -1
  79. package/build/.spruce/schemas/spruceCli/v2020_07_22/setupTestsOptions.schema.js.map +1 -1
  80. package/build/.spruce/schemas/spruceCli/v2020_07_22/setupVscodeOptions.schema.js.map +1 -1
  81. package/build/.spruce/schemas/spruceCli/v2020_07_22/skillFeature.schema.js.map +1 -1
  82. package/build/.spruce/schemas/spruceCli/v2020_07_22/syncErrorOptions.schema.js.map +1 -1
  83. package/build/.spruce/schemas/spruceCli/v2020_07_22/syncEventOptions.schema.js.map +1 -1
  84. package/build/.spruce/schemas/spruceCli/v2020_07_22/syncSchemaFieldsOptions.schema.js.map +1 -1
  85. package/build/.spruce/schemas/spruceCli/v2020_07_22/syncSchemasOptions.schema.js.map +1 -1
  86. package/build/.spruce/schemas/spruceCli/v2020_07_22/testOptions.schema.js.map +1 -1
  87. package/build/.spruce/schemas/spruceCli/v2020_07_22/upgradeSkillOptions.schema.js.map +1 -1
  88. package/build/.spruce/schemas/spruceCli/v2020_07_22/watcherDidDetectChangesEmitPayload.schema.js.map +1 -1
  89. package/build/GlobalEmitter.js.map +1 -1
  90. package/build/__tests__/behavioral/AddingADependency.test.js.map +1 -1
  91. package/build/__tests__/behavioral/BlockingCommands.test.js.map +1 -1
  92. package/build/__tests__/behavioral/BootingTheCli.test.js.map +1 -1
  93. package/build/__tests__/behavioral/BootingWithBadFiles.test.js.map +1 -1
  94. package/build/__tests__/behavioral/CreatingAConversationTopic.test.js.map +1 -1
  95. package/build/__tests__/behavioral/CreatingSchemasWithGenerics.test.js.map +1 -1
  96. package/build/__tests__/behavioral/DeployingASkill.test.js.map +1 -1
  97. package/build/__tests__/behavioral/DeployingToSandbox.test.js.map +1 -1
  98. package/build/__tests__/behavioral/EnablingAndDisablingCache.test.js.map +1 -1
  99. package/build/__tests__/behavioral/GettingCliVersion.test.js.map +1 -1
  100. package/build/__tests__/behavioral/InstallingASkillAtAnOrg.test.js.map +1 -1
  101. package/build/__tests__/behavioral/ListeningToCoreEvents.test.js.map +1 -1
  102. package/build/__tests__/behavioral/LoggingInAsASkill.test.js.map +1 -1
  103. package/build/__tests__/behavioral/ManagingDependencies.test.js.map +1 -1
  104. package/build/__tests__/behavioral/OverridingCommandsInPackageJson.test.js.map +1 -1
  105. package/build/__tests__/behavioral/RebuildingASkill.test.js.map +1 -1
  106. package/build/__tests__/behavioral/RegisteringConversationsOnBoot.test.js.map +1 -1
  107. package/build/__tests__/behavioral/RegisteringEventsOnBoot.test.js.map +1 -1
  108. package/build/__tests__/behavioral/RegisteringGlobalEvents.test.js.map +1 -1
  109. package/build/__tests__/behavioral/RegisteringSkillViewOnBoot.test.js.map +1 -1
  110. package/build/__tests__/behavioral/RememberingUpgradeSelections.test.js.map +1 -1
  111. package/build/__tests__/behavioral/SettingLogTransportsInASkill.test.js.map +1 -1
  112. package/build/__tests__/behavioral/SettingRemote.test.js.map +1 -1
  113. package/build/__tests__/behavioral/SettingUpASkillForTesting.test.js.map +1 -1
  114. package/build/__tests__/behavioral/SettingUpSchemasForModuleDistribution.test.js.map +1 -1
  115. package/build/__tests__/behavioral/SettingUpVscode.test.js.map +1 -1
  116. package/build/__tests__/behavioral/SyncingEventsOnlyFromDependencies.test.js.map +1 -1
  117. package/build/__tests__/behavioral/TestReporterSettingsRemembered.test.js.map +1 -1
  118. package/build/__tests__/behavioral/TestingAConversation.test.js.map +1 -1
  119. package/build/__tests__/behavioral/TestingDataStores.test.js.map +1 -1
  120. package/build/__tests__/behavioral/WatchingSkillViews.test.js.map +1 -1
  121. package/build/__tests__/behavioral/errors/CreatingANewErrorBuilder.test.js.map +1 -1
  122. package/build/__tests__/behavioral/errors/KeepingErrorClassInSync.test.js.map +1 -1
  123. package/build/__tests__/behavioral/errors/KeepingErrorsInSync.test.js.map +1 -1
  124. package/build/__tests__/behavioral/errors/SettingUpErrors.test.js.map +1 -1
  125. package/build/__tests__/behavioral/eventContract/PullingMercuryEventContract.test.js.map +1 -1
  126. package/build/__tests__/behavioral/events/CreatingAListener.test.js.map +1 -1
  127. package/build/__tests__/behavioral/events/CreatingAnEvent.test.js.map +1 -1
  128. package/build/__tests__/behavioral/events/KeepingEventsInSync.test.js.map +1 -1
  129. package/build/__tests__/behavioral/events/KeepingEventsInSync2.test.js.map +1 -1
  130. package/build/__tests__/behavioral/events/KeepingListenersInSync.test.js.map +1 -1
  131. package/build/__tests__/behavioral/events/ListeningToAnEventYouCreate.test.js.map +1 -1
  132. package/build/__tests__/behavioral/events/SettingUpEvents.test.js.map +1 -1
  133. package/build/__tests__/behavioral/events/SkillEmitsBootEvents.test.js.map +1 -1
  134. package/build/__tests__/behavioral/node/CreatingANodeModule.test.js.map +1 -1
  135. package/build/__tests__/behavioral/onboard/StartingOnboarding.test.js.map +1 -1
  136. package/build/__tests__/behavioral/organization/CreatingAnOrg.test.js.map +1 -1
  137. package/build/__tests__/behavioral/person/LoggingInAsPerson.test.js.map +1 -1
  138. package/build/__tests__/behavioral/person/SeeWhoIsLoggedIn.test.js.map +1 -1
  139. package/build/__tests__/behavioral/schemas/CreatingANewSchemaBuilder.test.js.map +1 -1
  140. package/build/__tests__/behavioral/schemas/GeneratingFieldTypesOnly.test.js.map +1 -1
  141. package/build/__tests__/behavioral/schemas/GettingSchemasFromHealthCheck.test.js.map +1 -1
  142. package/build/__tests__/behavioral/schemas/HandlesRelatedSchemas.test.js.map +1 -1
  143. package/build/__tests__/behavioral/schemas/ImportingSchemaImports.test.js.map +1 -1
  144. package/build/__tests__/behavioral/schemas/KeepingSchemasInSync.test.js.map +1 -1
  145. package/build/__tests__/behavioral/schemas/SettingUpSchemas.test.js.map +1 -1
  146. package/build/__tests__/behavioral/schemas/SyncingBadSchemasProvidesHelpfulErrorMessages.test.js.map +1 -1
  147. package/build/__tests__/behavioral/schemas/UsingSchemasInCli.test.js.map +1 -1
  148. package/build/__tests__/behavioral/skill/BootingASkill.test.js.map +1 -1
  149. package/build/__tests__/behavioral/skill/CreatingASkill.test.js.map +1 -1
  150. package/build/__tests__/behavioral/skill/RegisteringASkill.test.js.map +1 -1
  151. package/build/__tests__/behavioral/skill/SettingUpASkill.test.js.map +1 -1
  152. package/build/__tests__/behavioral/stores/CreatingADataStore.test.js.map +1 -1
  153. package/build/__tests__/behavioral/stores/KeepingDataStoresInSync.test.js.map +1 -1
  154. package/build/__tests__/behavioral/tests/CreatingATest.test.js +3 -3
  155. package/build/__tests__/behavioral/tests/CreatingATest.test.js.map +1 -1
  156. package/build/__tests__/behavioral/tests/RunningTests.test.js.map +1 -1
  157. package/build/__tests__/behavioral/tests/SelectingAnAbstractTestClass.test.js.map +1 -1
  158. package/build/__tests__/behavioral/tests/SettingUpTests.test.js.map +1 -1
  159. package/build/__tests__/behavioral/upgrading/UpdatingDependencies.test.js.map +1 -1
  160. package/build/__tests__/behavioral/upgrading/UpdatingDependencies2.test.js.map +1 -1
  161. package/build/__tests__/behavioral/upgrading/UpgradingANodeModule.test.js.map +1 -1
  162. package/build/__tests__/behavioral/upgrading/UpgradingASkill.test.js.map +1 -1
  163. package/build/__tests__/behavioral/upgrading/UpgradingASkill2.test.js.map +1 -1
  164. package/build/__tests__/behavioral/upgrading/UpgradingASkill3.test.js.map +1 -1
  165. package/build/__tests__/behavioral/upgrading/UpgradingASkill4.test.js.map +1 -1
  166. package/build/__tests__/behavioral/upgrading/UpgradingASkill5.test.js.map +1 -1
  167. package/build/__tests__/behavioral/upgrading/UpgradingWithListeners.test.js.map +1 -1
  168. package/build/__tests__/behavioral/upgrading/UpgradingWithSandboxFeatureInstalled.test.js.map +1 -1
  169. package/build/__tests__/behavioral/views/CreatingASkillView.test.js +1 -1
  170. package/build/__tests__/behavioral/views/CreatingASkillView.test.js.map +1 -1
  171. package/build/__tests__/behavioral/views/CreatingATheme.test.js.map +1 -1
  172. package/build/__tests__/behavioral/views/KeepingViewsInSync.test.js.map +1 -1
  173. package/build/__tests__/behavioral/views/SettingUpViews.test.js.map +1 -1
  174. package/build/__tests__/behavioral/views/TestingViewControllers.test.js.map +1 -1
  175. package/build/__tests__/behavioral/watchers/WatchingForChanges.test.js.map +1 -1
  176. package/build/__tests__/implementation/ActionExecuter.test.js.map +1 -1
  177. package/build/__tests__/implementation/ActionExecuter2.test.js.map +1 -1
  178. package/build/__tests__/implementation/ActionExecuter3.test.js.map +1 -1
  179. package/build/__tests__/implementation/ActionExecuter4.test.js.map +1 -1
  180. package/build/__tests__/implementation/ArgParser.test.js.map +1 -1
  181. package/build/__tests__/implementation/BuildService.test.js.map +1 -1
  182. package/build/__tests__/implementation/BulkImporting.test.js.map +1 -1
  183. package/build/__tests__/implementation/CachingImports.test.js.map +1 -1
  184. package/build/__tests__/implementation/CommandOptionBuilder.test.js.map +1 -1
  185. package/build/__tests__/implementation/CommanderCommandResultMapper.test.js.map +1 -1
  186. package/build/__tests__/implementation/DataStoreStore.test.js.map +1 -1
  187. package/build/__tests__/implementation/DeletingOrphanedSchemaDefinitions.test.js.map +1 -1
  188. package/build/__tests__/implementation/EventContractCleanerUtil.test.js.map +1 -1
  189. package/build/__tests__/implementation/EventStore.test.js.map +1 -1
  190. package/build/__tests__/implementation/EventTemplateItemBuilder.test.js.map +1 -1
  191. package/build/__tests__/implementation/FeatureCommandAttacher.test.js.map +1 -1
  192. package/build/__tests__/implementation/FeatureFixture.test.js.map +1 -1
  193. package/build/__tests__/implementation/FeatureInstaller.test.js.map +1 -1
  194. package/build/__tests__/implementation/FeaturesUtil.test.js.map +1 -1
  195. package/build/__tests__/implementation/FieldTemplateItemBuilder.test.js.map +1 -1
  196. package/build/__tests__/implementation/GlobalEmitter.js.map +1 -1
  197. package/build/__tests__/implementation/Introspection.test.js.map +1 -1
  198. package/build/__tests__/implementation/JestJsonParser.test.js.map +1 -1
  199. package/build/__tests__/implementation/LintService.test.js.map +1 -1
  200. package/build/__tests__/implementation/ListenerStore.test.js.map +1 -1
  201. package/build/__tests__/implementation/OnboardingScriptLoader.test.js.map +1 -1
  202. package/build/__tests__/implementation/OnboardingScriptPlayer.test.js.map +1 -1
  203. package/build/__tests__/implementation/OnboardingStore.test.js.map +1 -1
  204. package/build/__tests__/implementation/OrganizationStore.test.js.map +1 -1
  205. package/build/__tests__/implementation/ParentTestFinder.test.js.map +1 -1
  206. package/build/__tests__/implementation/PkgService.test.js.map +1 -1
  207. package/build/__tests__/implementation/SchemaStore.test.js.map +1 -1
  208. package/build/__tests__/implementation/SchemaTemplateItemBuilder.test.js.map +1 -1
  209. package/build/__tests__/implementation/SchemaValueTypeWriter.test.js.map +1 -1
  210. package/build/__tests__/implementation/ServiceFactory.test.js.map +1 -1
  211. package/build/__tests__/implementation/SettingUpANodeModule.test.js.map +1 -1
  212. package/build/__tests__/implementation/SkillStore.test.js.map +1 -1
  213. package/build/__tests__/implementation/StoreFeature.test.js.map +1 -1
  214. package/build/__tests__/implementation/TestReporter.test.js.map +1 -1
  215. package/build/__tests__/implementation/TestRunner.test.js.map +1 -1
  216. package/build/__tests__/implementation/ValueTypeMapping.test.js.map +1 -1
  217. package/build/__tests__/implementation/Widgets.test.js.map +1 -1
  218. package/build/__tests__/support/scripts/first.script.js.map +1 -1
  219. package/build/addons/filePrompt.addon.js.map +1 -1
  220. package/build/cli.js.map +1 -1
  221. package/build/components/FormComponent.js.map +1 -1
  222. package/build/components/QuizComponent.js.map +1 -1
  223. package/build/errors/SpruceError.js.map +1 -1
  224. package/build/errors/actionCancelled.builder.js.map +1 -1
  225. package/build/errors/bootError.builder.js.map +1 -1
  226. package/build/errors/buildFailed.builder.js.map +1 -1
  227. package/build/errors/cacheNotEnabled.builder.js.map +1 -1
  228. package/build/errors/commandAborted.builder.js.map +1 -1
  229. package/build/errors/commandBlocked.builder.js.map +1 -1
  230. package/build/errors/commandNotImplemented.builder.js.map +1 -1
  231. package/build/errors/createAutoloaderFailed.builder.js.map +1 -1
  232. package/build/errors/dependencyExists.builder.js.map +1 -1
  233. package/build/errors/deployFailed.builder.js.map +1 -1
  234. package/build/errors/directoryEmpty.builder.js.map +1 -1
  235. package/build/errors/directoryNotSkill.builder.js.map +1 -1
  236. package/build/errors/dockerNotStarted.builder.js.map +1 -1
  237. package/build/errors/executingCommandFailed.builder.js.map +1 -1
  238. package/build/errors/failedToImport.builder.js.map +1 -1
  239. package/build/errors/featureNotInstalled.builder.js.map +1 -1
  240. package/build/errors/fileExists.builder.js.map +1 -1
  241. package/build/errors/generic.builder.js.map +1 -1
  242. package/build/errors/invalidCommand.builder.js.map +1 -1
  243. package/build/errors/invalidEventContract.builder.js.map +1 -1
  244. package/build/errors/invalidFeatureCode.builder.js.map +1 -1
  245. package/build/errors/invalidTestDirectory.builder.js.map +1 -1
  246. package/build/errors/lintFailed.builder.js.map +1 -1
  247. package/build/errors/mercuryResponseError.builder.js.map +1 -1
  248. package/build/errors/missingDependencies.builder.js.map +1 -1
  249. package/build/errors/noOrganizationsFound.builder.js.map +1 -1
  250. package/build/errors/noSkillsRegistered.builder.js.map +1 -1
  251. package/build/errors/notImplemented.builder.js.map +1 -1
  252. package/build/errors/notLoggedIn.builder.js.map +1 -1
  253. package/build/errors/schemaExists.builder.js.map +1 -1
  254. package/build/errors/schemaFailedToImport.builder.js.map +1 -1
  255. package/build/errors/schemaTemplateItemBuildingFailed.builder.js.map +1 -1
  256. package/build/errors/skillNotFound.builder.js.map +1 -1
  257. package/build/errors/skillNotRegistered.builder.js.map +1 -1
  258. package/build/errors/skillViewExists.builder.js.map +1 -1
  259. package/build/errors/storeExists.builder.js.map +1 -1
  260. package/build/errors/testFailed.builder.js.map +1 -1
  261. package/build/errors/themeExists.builder.js.map +1 -1
  262. package/build/errors/transportAlreadyExists.builder.js.map +1 -1
  263. package/build/errors/vscodeNotInstalled.builder.js.map +1 -1
  264. package/build/features/AbstractAction.d.ts +1 -1
  265. package/build/features/AbstractAction.js.map +1 -1
  266. package/build/features/AbstractFeature.js.map +1 -1
  267. package/build/features/ActionExecuter.js.map +1 -1
  268. package/build/features/ActionFactory.js.map +1 -1
  269. package/build/features/ActionQuestionAsker.js.map +1 -1
  270. package/build/features/FeatureCommandAttacher.js.map +1 -1
  271. package/build/features/FeatureInstaller.js.map +1 -1
  272. package/build/features/OverrideActionDecorator.js.map +1 -1
  273. package/build/features/cache/CacheFeature.js.map +1 -1
  274. package/build/features/cache/actions/DisableAction.js.map +1 -1
  275. package/build/features/cache/actions/EnableAction.js.map +1 -1
  276. package/build/features/conversation/ConversationFeature.js.map +1 -1
  277. package/build/features/conversation/actions/TestAction.js.map +1 -1
  278. package/build/features/conversation/stores/ConversationStore.js.map +1 -1
  279. package/build/features/conversation/writers/ConversationWriter.js.map +1 -1
  280. package/build/features/dependencies/DependencyFeature.js.map +1 -1
  281. package/build/features/dependencies/actions/AddAction.js.map +1 -1
  282. package/build/features/dependencies/actions/ManageAction.js.map +1 -1
  283. package/build/features/deploy/DeployFeature.js.map +1 -1
  284. package/build/features/deploy/actions/HerokuAction.js.map +1 -1
  285. package/build/features/deploy/writers/DeployWriter.js.map +1 -1
  286. package/build/features/error/ErrorFeature.js.map +1 -1
  287. package/build/features/error/ParentTestFinder.js.map +1 -1
  288. package/build/features/error/actions/CreateAction.js.map +1 -1
  289. package/build/features/error/actions/SyncAction.js.map +1 -1
  290. package/build/features/error/writers/ErrorWriter.js.map +1 -1
  291. package/build/features/event/EventFeature.js.map +1 -1
  292. package/build/features/event/actions/CreateAction.js.map +1 -1
  293. package/build/features/event/actions/ListenAction.js.map +1 -1
  294. package/build/features/event/actions/SetRemoteAction.js.map +1 -1
  295. package/build/features/event/actions/SyncAction.js.map +1 -1
  296. package/build/features/event/actions/SyncListenersAction.js.map +1 -1
  297. package/build/features/event/builders/EventContractBuilder.js.map +1 -1
  298. package/build/features/event/builders/ListenerTemplateItemBuilder.js.map +1 -1
  299. package/build/features/event/stores/EventStore.js.map +1 -1
  300. package/build/features/event/stores/ListenerStore.js.map +1 -1
  301. package/build/features/event/writers/EventWriter.js.map +1 -1
  302. package/build/features/eventContract/EventContractFeature.js.map +1 -1
  303. package/build/features/eventContract/actions/PullAction.js.map +1 -1
  304. package/build/features/feature.utilities.js.map +1 -1
  305. package/build/features/features.types.js.map +1 -1
  306. package/build/features/log/LogFeature.js.map +1 -1
  307. package/build/features/log/actions/CreateTransportAction.js.map +1 -1
  308. package/build/features/log/writers/LogWriter.js.map +1 -1
  309. package/build/features/node/NodeFeature.js.map +1 -1
  310. package/build/features/node/actions/UpdateDependenciesAction.js.map +1 -1
  311. package/build/features/node/actions/UpgradeAction.js.map +1 -1
  312. package/build/features/node/writers/NodeWriter.js.map +1 -1
  313. package/build/features/onboard/OnboardFeature.js.map +1 -1
  314. package/build/features/onboard/ScriptLoader.js.map +1 -1
  315. package/build/features/onboard/scripts/onboarding.first.script.js.map +1 -1
  316. package/build/features/onboard/scripts/onboarding.immersive.script.js.map +1 -1
  317. package/build/features/onboard/scripts/onboarding.returning.script.js.map +1 -1
  318. package/build/features/onboard/scripts/onboarding.short.script.js.map +1 -1
  319. package/build/features/onboard/scripts/wrongCommand.script.js.map +1 -1
  320. package/build/features/onboard/stores/OnboardingStore.js.map +1 -1
  321. package/build/features/organization/OrganizationFeature.js.map +1 -1
  322. package/build/features/organization/stores/OrganizationStore.js.map +1 -1
  323. package/build/features/person/PersonFeature.js.map +1 -1
  324. package/build/features/person/actions/LoginAction.js.map +1 -1
  325. package/build/features/person/actions/LogoutAction.js.map +1 -1
  326. package/build/features/person/actions/WhoamiAction.js.map +1 -1
  327. package/build/features/sandbox/SandboxFeature.js.map +1 -1
  328. package/build/features/sandbox/actions/SetupAction.js.map +1 -1
  329. package/build/features/sandbox/writers/SandboxWriter.js.map +1 -1
  330. package/build/features/schema/SchemaFeature.js.map +1 -1
  331. package/build/features/schema/ValueTypeBuilder.js.map +1 -1
  332. package/build/features/schema/actions/CreateAction.js.map +1 -1
  333. package/build/features/schema/actions/SyncAction.js.map +1 -1
  334. package/build/features/schema/actions/SyncFieldsAction.js.map +1 -1
  335. package/build/features/schema/services/SchemaService.js.map +1 -1
  336. package/build/features/schema/stores/SchemaStore.d.ts +2 -1
  337. package/build/features/schema/stores/SchemaStore.js +2 -1
  338. package/build/features/schema/stores/SchemaStore.js.map +1 -1
  339. package/build/features/schema/utilities/schema.utility.js.map +1 -1
  340. package/build/features/schema/utilities/schemaDisk.utility.js.map +1 -1
  341. package/build/features/schema/utilities/schemaGenerator.utility.js.map +1 -1
  342. package/build/features/schema/writers/SchemaWriter.js.map +1 -1
  343. package/build/features/skill/SkillFeature.js.map +1 -1
  344. package/build/features/skill/actions/BootAction.js.map +1 -1
  345. package/build/features/skill/actions/CreateAction.js.map +1 -1
  346. package/build/features/skill/actions/DashboardAction.js.map +1 -1
  347. package/build/features/skill/actions/LoginAction.js.map +1 -1
  348. package/build/features/skill/actions/RebuildAction.js.map +1 -1
  349. package/build/features/skill/actions/RegisterAction.js.map +1 -1
  350. package/build/features/skill/stores/SkillStore.js.map +1 -1
  351. package/build/features/skill/updaters/Updater.js.map +1 -1
  352. package/build/features/skill/writers/SkillWriter.js.map +1 -1
  353. package/build/features/store/StoreFeature.js.map +1 -1
  354. package/build/features/store/actions/CreateAction.js.map +1 -1
  355. package/build/features/store/actions/SyncAction.js.map +1 -1
  356. package/build/features/store/stores/StoreStore.js.map +1 -1
  357. package/build/features/store/templateItemBuilders/StoreTemplateItemBuilder.js.map +1 -1
  358. package/build/features/store/writers/StoreWriter.js.map +1 -1
  359. package/build/features/test/TestFeature.js.map +1 -1
  360. package/build/features/test/TestLogItemGenerator.js.map +1 -1
  361. package/build/features/test/TestReporter.js.map +1 -1
  362. package/build/features/test/TestRunner.js.map +1 -1
  363. package/build/features/test/actions/CreateAction.js.map +1 -1
  364. package/build/features/test/actions/SetupAction.js.map +1 -1
  365. package/build/features/test/actions/TestAction.js.map +1 -1
  366. package/build/features/test/writers/TestWriter.js.map +1 -1
  367. package/build/features/validateAndNormalize.utility.js.map +1 -1
  368. package/build/features/view/ViewFeature.js.map +1 -1
  369. package/build/features/view/actions/CreateAction.js.map +1 -1
  370. package/build/features/view/actions/CreateThemeAction.js.map +1 -1
  371. package/build/features/view/actions/SyncAction.js.map +1 -1
  372. package/build/features/view/actions/WatchAction.js.map +1 -1
  373. package/build/features/view/stores/ViewStore.js.map +1 -1
  374. package/build/features/view/writers/ViewWriter.js.map +1 -1
  375. package/build/features/vscode/VsCodeFeature.js.map +1 -1
  376. package/build/features/vscode/services/VsCodeService.js.map +1 -1
  377. package/build/features/vscode/writers/VsCodeWriter.js.map +1 -1
  378. package/build/features/watch/WatchFeature.js.map +1 -1
  379. package/build/index.js.map +1 -1
  380. package/build/interfaces/SpyInterface.js +0 -1
  381. package/build/interfaces/SpyInterface.js.map +1 -1
  382. package/build/interfaces/TerminalInterface.js.map +1 -1
  383. package/build/schemas/v2020_07_22/bootSkillOptions.builder.js.map +1 -1
  384. package/build/schemas/v2020_07_22/createConversationTopicOptions.builder.js.map +1 -1
  385. package/build/schemas/v2020_07_22/createErrorOptions.builder.js.map +1 -1
  386. package/build/schemas/v2020_07_22/createOrganizationOptions.builder.js.map +1 -1
  387. package/build/schemas/v2020_07_22/createSchemaOptions.builder.js.map +1 -1
  388. package/build/schemas/v2020_07_22/createTestOptions.builder.js.map +1 -1
  389. package/build/schemas/v2020_07_22/installSkillAtOrganizationOptions.builder.js.map +1 -1
  390. package/build/schemas/v2020_07_22/listenEventOptions.builder.js.map +1 -1
  391. package/build/schemas/v2020_07_22/namedTemplateItem.builder.js.map +1 -1
  392. package/build/schemas/v2020_07_22/nodeFeatureOptions.builder.js.map +1 -1
  393. package/build/schemas/v2020_07_22/onboardOptions.builder.js.map +1 -1
  394. package/build/schemas/v2020_07_22/onboarding.builder.js.map +1 -1
  395. package/build/schemas/v2020_07_22/personWithToken.builder.js.map +1 -1
  396. package/build/schemas/v2020_07_22/registerDashboardWidgetsEmitPayloadSchema.builder.js.map +1 -1
  397. package/build/schemas/v2020_07_22/setupTestsOptions.builder.js.map +1 -1
  398. package/build/schemas/v2020_07_22/setupVscodeOptions.builder.js.map +1 -1
  399. package/build/schemas/v2020_07_22/skillFeature.builder.js.map +1 -1
  400. package/build/schemas/v2020_07_22/syncErrorOptions.builder.js.map +1 -1
  401. package/build/schemas/v2020_07_22/syncEventOptions.builder.js.map +1 -1
  402. package/build/schemas/v2020_07_22/syncSchemaFieldsOptions.builder.js.map +1 -1
  403. package/build/schemas/v2020_07_22/syncSchemasOptions.builder.js.map +1 -1
  404. package/build/schemas/v2020_07_22/testOptions.builder.js.map +1 -1
  405. package/build/schemas/v2020_07_22/upgradeSkillOptions.builder.js.map +1 -1
  406. package/build/schemas/v2020_07_22/watcherDidDetectChangesEmitPayload.builder.js.map +1 -1
  407. package/build/services/CommandService.d.ts +1 -0
  408. package/build/services/CommandService.js.map +1 -1
  409. package/build/services/GameService.js.map +1 -1
  410. package/build/services/ImportService.js.map +1 -1
  411. package/build/services/LintService.js.map +1 -1
  412. package/build/services/PkgService.js.map +1 -1
  413. package/build/services/ServiceFactory.js.map +1 -1
  414. package/build/templateItemBuilders/EventTemplateItemBuilder.js.map +1 -1
  415. package/build/templateItemBuilders/FieldTemplateItemBuilder.js.map +1 -1
  416. package/build/templateItemBuilders/SchemaTemplateItemBuilder.js.map +1 -1
  417. package/build/tests/AbstractCliTest.js.map +1 -1
  418. package/build/tests/AbstractEventTest.js.map +1 -1
  419. package/build/tests/AbstractSchemaTest.js.map +1 -1
  420. package/build/tests/AbstractTestTest.js.map +1 -1
  421. package/build/tests/CommandFaker.js.map +1 -1
  422. package/build/tests/JestJsonParser.js.map +1 -1
  423. package/build/tests/buildTestCache.js.map +1 -1
  424. package/build/tests/cleanTestCache.js.map +1 -1
  425. package/build/tests/cleanTestData.js.map +1 -1
  426. package/build/tests/fixtures/FeatureFixture.js.map +1 -1
  427. package/build/tests/fixtures/MercuryFixture.js.map +1 -1
  428. package/build/tests/fixtures/PersonFixture.js.map +1 -1
  429. package/build/tests/fixtures/SkillFixture.js.map +1 -1
  430. package/build/tests/utilities/test.utility.js.map +1 -1
  431. package/build/tests/utilities/uiAssert.utility.js.map +1 -1
  432. package/build/utilities/action.utility.js.map +1 -1
  433. package/build/utilities/apiClient.utility.d.ts +1 -1
  434. package/build/utilities/commander.utility.js.map +1 -1
  435. package/build/utilities/eventContractCleaner.utility.js.map +1 -1
  436. package/build/utilities/form.utility.js.map +1 -1
  437. package/build/utilities/introspection.utility.js.map +1 -1
  438. package/build/utilities/tsConfig.utility.js.map +1 -1
  439. package/build/widgets/Theme.js.map +1 -1
  440. package/build/widgets/WidgetFactory.js.map +1 -1
  441. package/build/widgets/terminalKit/TKButtonWidget.js.map +1 -1
  442. package/build/widgets/terminalKit/TkInputWidget.js.map +1 -1
  443. package/build/widgets/terminalKit/TkLayoutWidget.js.map +1 -1
  444. package/build/widgets/terminalKit/TkMenuBarWidget.js.map +1 -1
  445. package/build/widgets/terminalKit/TkPopupWidget.js.map +1 -1
  446. package/build/widgets/terminalKit/TkTextWidget.js.map +1 -1
  447. package/build/widgets/terminalKit/termKit.utility.d.ts +1 -1
  448. package/build/widgets/terminalKit/termKit.utility.js.map +1 -1
  449. package/build/widgets/types/input.types.js.map +1 -1
  450. package/build/widgets/types/menuBar.types.js.map +1 -1
  451. package/build/widgets/types/text.types.js.map +1 -1
  452. package/build/widgets/types/window.types.js.map +1 -1
  453. package/build/widgets/widget.utilities.d.ts +1 -1
  454. package/build/writers/AbstractWriter.js.map +1 -1
  455. package/package.json +36 -36
  456. package/src/__tests__/behavioral/views/CreatingASkillView.test.ts +3 -2
  457. package/src/features/schema/stores/SchemaStore.ts +4 -2
  458. package/build/.spruce/schemas/spruce/v2020_07_22/fullMessageChoices.schema.d.ts +0 -1
  459. package/build/.spruce/schemas/spruce/v2020_07_22/fullMessageChoices.schema.js +0 -14
  460. package/build/.spruce/schemas/spruce/v2020_07_22/fullMessageChoices.schema.js.map +0 -1
  461. package/src/.spruce/schemas/spruce/v2020_07_22/fullMessageChoices.schema.ts +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"KeepingSchemasInSync.test.js","names":["TYPE_FILE_COUNT","SYNC_FILE_COUNT","Object","keys","coreSchemas","length","MOCK_CORE_SYNC_FILE_COUNT","KeepsSchemasInSyncTest","Cli","assert","isFunction","Action","execute","doesThrowAsync","err","errorAssert","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"],"sources":["../../../../src/__tests__/behavioral/schemas/KeepingSchemasInSync.test.ts"],"sourcesContent":["import pathUtil from 'path'\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 { errorAssert } from '@sprucelabs/test-utils'\nimport { coreSchemas } from '../../../features/schema/stores/SchemaStore'\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\terrorAssert.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 minArrayLength, 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"],"mappings":"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"}
1
+ {"version":3,"file":"KeepingSchemasInSync.test.js","names":["TYPE_FILE_COUNT","SYNC_FILE_COUNT","Object","keys","coreSchemas","length","MOCK_CORE_SYNC_FILE_COUNT","KeepsSchemasInSyncTest","test","Cli","assert","isFunction","Action","execute","doesThrowAsync","err","errorAssert","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"],"sources":["../../../../src/__tests__/behavioral/schemas/KeepingSchemasInSync.test.ts"],"sourcesContent":["import pathUtil from 'path'\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 { errorAssert } from '@sprucelabs/test-utils'\nimport { coreSchemas } from '../../../features/schema/stores/SchemaStore'\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\terrorAssert.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 minArrayLength, 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"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AAOA;;AACA;;AACA;;AACA;;AACA;;;;;;;;AAEA;AACA,IAAMA,eAAe,GAAG,CAAxB,C,CAA0B;;AAC1B,IAAMC,eAAe,GAAGC,MAAM,CAACC,IAAP,CAAYC,wBAAZ,EAAyBC,MAAzB,GAAkCL,eAA1D;AACA,IAAMM,yBAAyB,GAAG,IAAIN,eAAtC;IAEqBO,sB,WAKnB,IAAAC,UAAA,G,UAMA,IAAAA,UAAA,G,UAWA,IAAAA,UAAA,G,UAgBA,IAAAA,UAAA,G,UAiBA,IAAAA,UAAA,G,UAiBA,IAAAA,UAAA,G,UAyBA,IAAAA,UAAA,G,UAiBA,IAAAA,UAAA,G,UAsBA,IAAAA,UAAA,G,WAmCA,IAAAA,UAAA,G,WAkCA,IAAAA,UAAA,G,WAmCA,IAAAA,UAAA,G,WAuBA,IAAAA,UAAA,G,WAmEA,IAAAA,UAAA,G,WAoBA,IAAAA,UAAA,EAAK,yCAAL,C,WAgBA,IAAAA,UAAA,G,WAuBA,IAAAA,UAAA,G;;;;;;;;;;;;;+GAhYD;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAEO,KAAKC,GAAL,EAFP;;cAAA;gBAGCC,YAAA,CAAOC,UAAP,CAAkB,KAAKC,MAAL,CAAY,QAAZ,EAAsB,MAAtB,EAA8BC,OAAhD;;cAHD;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;6HAMA;QAAA;;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAEO,KAAKJ,GAAL,EAFP;;cAAA;gBAAA;gBAAA,OAImBC,YAAA,CAAOI,cAAP,CAAsB;kBAAA,OACvC,KAAI,CAACF,MAAL,CAAY,QAAZ,EAAsB,MAAtB,EAA8BC,OAA9B,CAAsC,EAAtC,CADuC;gBAAA,CAAtB,CAJnB;;cAAA;gBAIOE,GAJP;;gBAQCC,sBAAA,CAAYC,WAAZ,CAAwBF,GAAxB,EAA6B,uBAA7B;;cARD;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;wHAWA;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAEO,KAAKG,oBAAL,CAA0B,SAA1B,CAFP;;cAAA;gBAAA;gBAAA,OAIuB,KAAKN,MAAL,CAAY,QAAZ,EAAsB,MAAtB,EAA8BC,OAA9B,CAAsC,EAAtC,CAJvB;;cAAA;gBAIOM,OAJP;;gBAMCT,YAAA,CAAOU,OAAP,CAAeD,OAAO,CAACE,MAAvB,EAND,CAQC;;;gBACAC,iBAAA,CAASC,oBAAT,CAA8BJ,OAAO,CAACK,KAAtC,EAA6C;kBAC5CC,OAAO,EAAE,CADmC;kBAE5CC,SAAS,EAAEzB,eAFiC;kBAG5C0B,OAAO,EAAE;gBAHmC,CAA7C;;cATD;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;gJAgBA;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAEO,KAAKT,oBAAL,CAA0B,SAA1B,CAFP;;cAAA;gBAAA;gBAAA,OAIuB,KAAKN,MAAL,CAAY,QAAZ,EAAsB,MAAtB,EAA8BC,OAA9B,CAAsC;kBAC3De,sBAAsB,EAAE;gBADmC,CAAtC,CAJvB;;cAAA;gBAIOT,OAJP;;gBAQCT,YAAA,CAAOU,OAAP,CAAeD,OAAO,CAACE,MAAvB;;gBAEAC,iBAAA,CAASC,oBAAT,CAA8BJ,OAAO,CAACK,KAAtC,EAA6C;kBAC5CC,OAAO,EAAE,CADmC;kBAE5CC,SAAS,EAAE1B,eAFiC;kBAG5C2B,OAAO,EAAE;gBAHmC,CAA7C;;cAVD;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;oHAiBA;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAEO,KAAKT,oBAAL,CAA0B,SAA1B,CAFP;;cAAA;gBAAA;gBAAA,OAIuB,KAAKN,MAAL,CAAY,QAAZ,EAAsB,MAAtB,EAA8BC,OAA9B,CAAsC,EAAtC,CAJvB;;cAAA;gBAIOM,OAJP;;gBAMCT,YAAA,CAAOU,OAAP,CAAeD,OAAO,CAACE,MAAvB;;gBAEMQ,OARP,GAQiB,KAAKC,qBAAL,CACf,SADe,EAEf,KAFe,EAGf,kBAHe,CARjB;;gBAcCpB,YAAA,CAAOqB,OAAP,CAAeC,0BAAA,CAASC,aAAT,CAAuBJ,OAAvB,CAAf;;cAdD;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;gIAiBA;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAEO,KAAKX,oBAAL,CAA0B,SAA1B,CAFP;;cAAA;gBAAA;gBAAA,OAGO,KAAKgB,mBAAL,EAHP;;cAAA;gBAAA;gBAAA,OAKuB,KAAKtB,MAAL,CAAY,QAAZ,EAAsB,MAAtB,EAA8BC,OAA9B,CACrB,KAAKsB,eADgB,CALvB;;cAAA;gBAKOhB,OALP;;gBASCT,YAAA,CAAO0B,WAAP,CAAmBjB,OAAO,CAACE,MAA3B;;gBACAX,YAAA,CAAO2B,QAAP,CAAgBlB,OAAO,CAACK,KAAxB;;gBAEAd,YAAA,CAAO4B,QAAP,CAAgBnB,OAAO,CAACK,KAAxB,EAA+BlB,yBAA/B;;gBAEAgB,iBAAA,CAASC,oBAAT,CAA8BJ,OAAO,CAACK,KAAtC,EAA6C;kBAC5CE,SAAS,EAAEpB,yBADiC;kBAE5CqB,OAAO,EAAE,CAFmC;kBAG5CF,OAAO,EAAE;gBAHmC,CAA7C;;gBAMAf,YAAA,CAAO6B,MAAP,CAAcP,0BAAA,CAASC,aAAT,CAAuB,KAAKO,mBAA5B,CAAd;;gBApBD;gBAAA,OAsBO,KAAKC,mCAAL,CAAyC,KAAKD,mBAA9C,CAtBP;;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;sHAyBA;QAAA;;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAEO,KAAKE,WAAL,CAAiB,SAAjB,EAA4B,KAAKP,eAAjC,CAFP;;cAAA;gBAAA;gBAAA,OAGuB,KAAKvB,MAAL,CAAY,QAAZ,EAAsB,MAAtB,EAA8BC,OAA9B,CACrB,KAAKsB,eADgB,CAHvB;;cAAA;gBAGOhB,OAHP;;gBAOCT,YAAA,CAAOU,OAAP,CAAeD,OAAO,CAACE,MAAvB;;gBACAX,YAAA,CAAOiC,OAAP,mBAAexB,OAAO,CAACK,KAAvB,mDAAe,eAAenB,MAA9B,EAAsC,CAAtC;;gBAEAiB,iBAAA,CAASC,oBAAT,CAA8BJ,OAAO,CAACK,KAAtC,EAA6C;kBAC5CE,SAAS,EAAE,CADiC;kBAE5CC,OAAO,8CAAER,OAAO,CAACK,KAAV,oDAAE,gBAAenB,MAAjB,yEAA2B,CAFU;kBAG5CoB,OAAO,EAAE;gBAHmC,CAA7C;;cAVD;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;2HAiBA;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAEO,KAAKP,oBAAL,CAA0B,SAA1B,CAFP;;cAAA;gBAAA;gBAAA,OAIO,KAAKgB,mBAAL,EAJP;;cAAA;gBAAA;gBAAA,OAMuB,KAAKtB,MAAL,CAAY,QAAZ,EAAsB,MAAtB,EAA8BC,OAA9B,CACrB,KAAKsB,eADgB,CANvB;;cAAA;gBAMOhB,OANP;;gBAUCT,YAAA,CAAOU,OAAP,CAAeD,OAAO,CAACE,MAAvB;;gBAEMuB,aAZP,GAYuBZ,0BAAA,CAASa,QAAT,CAAkB,KAAKL,mBAAvB,CAZvB;;gBAaC9B,YAAA,CAAOoC,WAAP,CACCF,aADD,EAEC,IAAIG,MAAJ,yBACkBC,gCADlB,cACoCC,qCAAA,CAAoBC,UADxD,4BAEC,KAFD,CAFD;;cAbD;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;4IAsBA;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAEO,KAAKhC,oBAAL,CAA0B,SAA1B,CAFP;;cAAA;gBAAA;gBAAA,OAIO,KAAKgB,mBAAL,EAJP;;cAAA;gBAAA;gBAAA,OAMuB,KAAKtB,MAAL,CAAY,QAAZ,EAAsB,MAAtB,EAA8BC,OAA9B,CACrB,KAAKsB,eADgB,CANvB;;cAAA;gBAMOhB,OANP;;gBAUCT,YAAA,CAAOU,OAAP,CAAeD,OAAO,CAACE,MAAvB;;gBACAX,YAAA,CAAO2B,QAAP,CAAgBlB,OAAO,CAACK,KAAxB;;gBAXD;gBAAA,OAaO,KAAK2B,8BAAL,CAAoChC,OAApC,CAbP;;cAAA;gBAeOyB,aAfP,GAeuBZ,0BAAA,CAASa,QAAT,CAAkB,KAAKL,mBAAvB,CAfvB;;gBAiBC9B,YAAA,CAAO0C,cAAP,CAAsBR,aAAtB,EAAqC,oCAArC;;gBACAlC,YAAA,CAAOoC,WAAP,CACCF,aADD,EAEC,IAAIG,MAAJ,oCAC6BM,iDAD7B,cACgEL,gCADhE,cACkFC,qCAAA,CAAoBC,UADtG,GAEC,KAFD,CAFD;;gBAQMI,SA1BP,GA0BmBhC,iBAAA,CAASiC,gCAAT,CACjB,wBADiB,EAEjBpC,OAAO,CAACK,KAFS,CA1BnB;gBA+BOgC,sBA/BP,GA+BgCxB,0BAAA,CAASa,QAAT,CAAkBS,SAAlB,CA/BhC;;gBAgCC5C,YAAA,CAAOoC,WAAP,CAAmBU,sBAAnB,EAA2C,gBAA3C;;cAhCD;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;iIAmCA;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAEO,KAAKtC,oBAAL,CAA0B,SAA1B,CAFP;;cAAA;gBAIOuC,GAJP,GAIa,KAAKC,OAAL,CAAa,KAAb,CAJb;gBAKCD,GAAG,CAACE,GAAJ,CAAQ;kBAAEC,IAAI,EAAE,MAAR;kBAAgBC,KAAK,EAAE;gBAAvB,CAAR;gBALD;gBAAA,OAOO,KAAK3B,mBAAL,EAPP;;cAAA;gBAAA;gBAAA,OASuB,KAAKtB,MAAL,CAAY,QAAZ,EAAsB,MAAtB,EAA8BC,OAA9B,CAAsC,EAAtC,CATvB;;cAAA;gBASOM,OATP;;gBAWCT,YAAA,CAAOU,OAAP,CAAeD,OAAO,CAACE,MAAvB;;gBACAX,YAAA,CAAO2B,QAAP,CAAgBlB,OAAO,CAACK,KAAxB;;gBAEMoB,aAdP,GAcuBZ,0BAAA,CAASa,QAAT,CAAkB,KAAKL,mBAAvB,CAdvB;;gBAgBC9B,YAAA,CAAO0C,cAAP,CAAsBR,aAAtB,EAAqC,oCAArC;;gBACAlC,YAAA,CAAOoC,WAAP,CACCF,aADD,EAEC,IAAIG,MAAJ,oCAC6BM,iDAD7B,cACgEL,gCADhE,cACkFC,qCAAA,CAAoBC,UADtG,GAEC,KAFD,CAFD;;gBAQMI,SAzBP,GAyBmBhC,iBAAA,CAASiC,gCAAT,CACjB,wBADiB,EAEjBpC,OAAO,CAACK,KAFS,CAzBnB;gBA8BOgC,sBA9BP,GA8BgCxB,0BAAA,CAASa,QAAT,CAAkBS,SAAlB,CA9BhC;;gBA+BC5C,YAAA,CAAOoC,WAAP,CAAmBU,sBAAnB,EAA2C,gBAA3C;;cA/BD;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;oHAkCA;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAEO,KAAKd,WAAL,CAAiB,SAAjB,CAFP;;cAAA;gBAAA;gBAAA,OAI8B,KAAK9B,MAAL,CAAY,QAAZ,EAAsB,QAAtB,EAAgCC,OAAhC,CAAwC;kBACpEiD,YAAY,EAAE,aADsD;kBAEpEC,SAAS,EAAE;gBAFyD,CAAxC,CAJ9B;;cAAA;gBAIOC,cAJP;;gBASCtD,YAAA,CAAOU,OAAP,CAAe4C,cAAc,CAAC3C,MAA9B;;gBAEM4C,WAXP,GAWqB3C,iBAAA,CAASiC,gCAAT,CACnB,uBADmB,EAEnBS,cAAc,CAACxC,KAFI,CAXrB;gBAgBO0C,QAhBP,GAgBkBlC,0BAAA,CACfa,QADe,CACNoB,WADM,EAEfE,OAFe,CAEP,kBAFO,EAEa,mBAFb,CAhBlB;;gBAoBCnC,0BAAA,CAASoC,SAAT,CAAmBH,WAAnB,EAAgCC,QAAhC;;gBApBD;gBAAA,OAsB2B,KAAKtD,MAAL,CAAY,QAAZ,EAAsB,MAAtB,EAA8BC,OAA9B,CAAsC,EAAtC,CAtB3B;;cAAA;gBAsBOwD,WAtBP;gBAwBOC,UAxBP,GAwBoBhD,iBAAA,CAASiC,gCAAT,CAClB,uBADkB,EAElBc,WAAW,CAAC7C,KAFM,CAxBpB;gBA6BO+C,kBA7BP,GA6B4BvC,0BAAA,CAASa,QAAT,CAAkByB,UAAlB,CA7B5B;;gBA8BC5D,YAAA,CAAOoC,WAAP,CAAmByB,kBAAnB,EAAuC,gBAAvC;;gBA9BD;gBAAA,OAgCO,KAAKpB,8BAAL,CAAoCkB,WAApC,CAhCP;;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;sJAmCA;QAAA;;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAEO,KAAK3B,WAAL,CAAiB,SAAjB,CAFP;;cAAA;gBAAA;gBAAA,OAI8B,KAAK9B,MAAL,CAAY,QAAZ,EAAsB,QAAtB,EAAgCC,OAAhC,CAAwC;kBACpEiD,YAAY,EAAE,aADsD;kBAEpEC,SAAS,EAAE;gBAFyD,CAAxC,CAJ9B;;cAAA;gBAIOC,cAJP;;gBASC,8BAAqB9D,MAAM,CAACsE,MAAP,CAAcpE,wBAAd,CAArB,oCAAiD;kBAAtCqE,MAAsC;kBAC1CC,EAD0C,GACrCD,MAAM,CAACC,EAD8B;kBAE1CC,KAF0C,GAElCrD,iBAAA,CAASiC,gCAAT,WACVmB,EADU,iBAEbV,cAAc,CAACxC,KAFF,CAFkC;kBAM1C0C,QAN0C,GAM/BlC,0BAAA,CAASa,QAAT,CAAkB8B,KAAlB,CAN+B;;kBAOhDjE,YAAA,CAAOoC,WAAP,CACCoB,QADD,qBAEaQ,EAFb;gBAIA;;cApBF;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;mIAuBA;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAEO,KAAKhC,WAAL,CAAiB,SAAjB,CAFP;;cAAA;gBAGOkC,OAHP,GAGiBC,6BAAA,CAAYC,eAAZ,EAHjB;gBAIOC,WAJP,GAIqB,KAAKrB,OAAL,CAAa,aAAb,CAJrB;gBAKOsB,YALP,GAKsB,KAAKpE,MAAL,CAAY,QAAZ,EAAsB,QAAtB,CALtB;gBAOOqE,OAPP,GAOiB,IAAIlC,MAAJ,wCACiB6B,OAAO,CAAC1B,UADzB,gCAEf,KAFe,CAPjB;;gBAYCxC,YAAA,CAAO6B,MAAP,CACCP,0BAAA,CAASC,aAAT,CAAuBiD,gBAAA,CAASC,OAAT,CAAiB,KAAKC,eAAtB,CAAvB,CADD;;gBAZD;gBAAA,OAgB8BJ,YAAY,CAACnE,OAAb,CAAqB;kBACjDiD,YAAY,EAAE,aADmC;kBAEjDC,SAAS,EAAE;gBAFsC,CAArB,CAhB9B;;cAAA;gBAgBOC,cAhBP;gBAqBOqB,WArBP,GAqBqB/D,iBAAA,CAASiC,gCAAT,CACnB,qBADmB,EAEnBS,cAAc,CAACxC,KAFI,CArBrB,EA0BC;;gBACAd,YAAA,CAAOoC,WAAP,CAAmBuC,WAAnB,EAAgCT,OAAO,CAACU,QAAxC;;gBAEMC,UA7BP,GA6BoBjE,iBAAA,CAASiC,gCAAT,CAClB,oBADkB,EAElBS,cAAc,CAACxC,KAFG,CA7BpB,EAkCC;;gBACAd,YAAA,CAAOoC,WAAP,CAAmByC,UAAnB,EAA+BX,OAAO,CAACU,QAAvC;;gBACA5E,YAAA,CAAOoC,WAAP,CAAmByC,UAAnB,EAA+B,kBAA/B,EApCD,CAsCC;;;gBAtCD;gBAAA,OAuCOR,WAAW,CAACS,KAAZ,CAAkB,KAAKJ,eAAvB,CAvCP;;cAAA;gBAyCC;gBACIxC,aA1CL,GA0CqBZ,0BAAA,CAASa,QAAT,CAAkB,KAAKuC,eAAvB,CA1CrB;;gBA2CC1E,YAAA,CAAOoC,WAAP,CAAmBF,aAAnB,EAAkCqC,OAAlC,EA3CD,CA6CC;;;gBACAvE,YAAA,CAAO6B,MAAP,CAAcP,0BAAA,CAASC,aAAT,CAAuBsD,UAAvB,CAAd,EA9CD,CAgDC;;;gBACAvD,0BAAA,CAASyD,UAAT,CAAoBJ,WAApB,EAjDD,CAmDC;;;gBAnDD;gBAAA,OAoDO,KAAKzE,MAAL,CAAY,QAAZ,EAAsB,MAAtB,EAA8BC,OAA9B,CAAsC,EAAtC,CApDP;;cAAA;gBAsDCH,YAAA,CAAO6B,MAAP,CAAcP,0BAAA,CAASC,aAAT,CAAuB,KAAKmD,eAA5B,CAAd,EAtDD,CAwDC;;;gBACA1E,YAAA,CAAOqB,OAAP,CAAeC,0BAAA,CAASC,aAAT,CAAuBsD,UAAvB,CAAf,EAzDD,CA2DC;;;gBACMG,eA5DP,GA4DyB,KAAK5D,qBAAL,CACvB,SADuB,EAEvB,gBAFuB,CA5DzB;;gBAgECpB,YAAA,CAAOqB,OAAP,CAAeC,0BAAA,CAAS2D,YAAT,CAAsBD,eAAtB,CAAf;;cAhED;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;mKAmEA;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAEO,KAAKE,cAAL,GAAsBC,qBAAtB,CAA4C,qBAA5C,CAFP;;cAAA;gBAIOC,OAJP,GAIiB,KAAKlF,MAAL,CAAY,QAAZ,EAAsB,MAAtB,EAA8BC,OAA9B,CAAsC,EAAtC,CAJjB;gBAAA;gBAAA,OAMO,KAAKkF,YAAL,EANP;;cAAA;gBAAA;gBAAA,OAQO,KAAKC,EAAL,CAAQC,SAAR,CAAkB,GAAlB,CARP;;cAAA;gBAAA;gBAAA,OAUO,KAAKF,YAAL,EAVP;;cAAA;gBAAA;gBAAA,OAYO,KAAKC,EAAL,CAAQC,SAAR,CAAkB,EAAlB,CAZP;;cAAA;gBAAA;gBAAA,OAcuBH,OAdvB;;cAAA;gBAcO3E,OAdP;;gBAgBCT,YAAA,CAAOU,OAAP,CAAeD,OAAO,CAACE,MAAvB;;gBAhBD;gBAAA,OAiBO,KAAK8B,8BAAL,CAAoChC,OAApC,CAjBP;;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;+GAoBA;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAEO,KAAKuB,WAAL,CAAiB,SAAjB,CAFP;;cAAA;gBAIOwD,UAJP,GAIoB,KAAKC,WAAL,CAAiB,KAAjB,EAAwB,SAAxB,CAJpB;gBAAA;gBAAA,OAMOnE,0BAAA,CAASoE,OAAT,CAAiB,KAAKC,eAAL,CAAqB,eAArB,CAAjB,EAAwDH,UAAxD,CANP;;cAAA;gBAAA;gBAAA,OAQuB,KAAKtF,MAAL,CAAY,QAAZ,EAAsB,MAAtB,EAA8BC,OAA9B,CAAsC,EAAtC,CARvB;;cAAA;gBAQOM,OARP;gBAAA;gBAAA,OASsB,KAAKmF,YAAL,CAAkBnF,OAAlB,EAA2B,qBAA3B,CATtB;;cAAA;gBASOsD,MATP;;gBAWC/D,YAAA,CAAO0B,WAAP,CAAmBqC,MAAM,CAAC8B,MAAP,CAAcC,KAAd,CAAoBC,cAAvC;;gBACA/F,YAAA,CAAOgG,OAAP,CAAejC,MAAM,CAAC8B,MAAP,CAAcI,cAAd,CAA6BF,cAA5C,EAA4D,CAA5D;;gBACA/F,YAAA,CAAOgG,OAAP,CAAejC,MAAM,CAAC8B,MAAP,CAAcK,WAAd,CAA0BH,cAAzC,EAAyD,CAAzD;;cAbD;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;mHAgBA;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAEO,KAAK/D,WAAL,CAAiB,SAAjB,CAFP;;cAAA;gBAAA;gBAAA,OAIO,KAAK9B,MAAL,CAAY,QAAZ,EAAsB,QAAtB,EAAgCC,OAAhC,CAAwC;kBAC7CiD,YAAY,EAAE,aAD+B;kBAE7CC,SAAS,EAAE;gBAFkC,CAAxC,CAJP;;cAAA;gBASO8C,YATP,GASsB,KAAK/E,qBAAL,CAA2B,SAA3B,EAAsC,gBAAtC,CATtB;gBAUOgF,WAVP,GAUqB,KAAKhF,qBAAL,CAA2B,SAA3B,EAAsC,cAAtC,CAVrB;;gBAYCpB,YAAA,CAAO6B,MAAP,CAAcP,0BAAA,CAASC,aAAT,CAAuB4E,YAAvB,CAAd;;gBACAnG,YAAA,CAAOqB,OAAP,CAAeC,0BAAA,CAASC,aAAT,CAAuB6E,WAAvB,CAAf;;gBAbD;gBAAA,OAeO,KAAKC,KAAL,CAAW,OAAX,EAAoBC,yBAApB,CAA8C,eAA9C,CAfP;;cAAA;gBAAA;gBAAA,OAiBO,KAAKpG,MAAL,CAAY,QAAZ,EAAsB,MAAtB,EAA8BC,OAA9B,CAAsC,EAAtC,CAjBP;;cAAA;gBAmBCH,YAAA,CAAOqB,OAAP,CAAeC,0BAAA,CAASC,aAAT,CAAuB4E,YAAvB,CAAf;;gBACAnG,YAAA,CAAO6B,MAAP,CAAcP,0BAAA,CAASC,aAAT,CAAuB6E,WAAvB,CAAd;;cApBD;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;sIAuBA;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAEO,KAAK5F,oBAAL,CAA0B,SAA1B,CAFP;;cAAA;gBAAA;gBAAA,OAIuB,KAAKN,MAAL,CAAY,QAAZ,EAAsB,QAAtB,EAAgCC,OAAhC,CAAwC;kBAC7DiD,YAAY,EAAE,aAD+C;kBAE7DC,SAAS,EAAE;gBAFkD,CAAxC,CAJvB;;cAAA;gBAIO5C,OAJP;gBASO8F,cATP,GASwB3F,iBAAA,CAASiC,gCAAT,CACtB,uBADsB,EAEtBpC,OAAO,CAACK,KAFc,CATxB;;gBAcCQ,0BAAA,CAASoC,SAAT,CACC6C,cADD;;gBAdD;gBAAA,OA0C2B,KAAKrG,MAAL,CAAY,QAAZ,EAAsB,MAAtB,EAA8BC,OAA9B,CAAsC,EAAtC,CA1C3B;;cAAA;gBA0COwD,WA1CP;gBA4CO6C,UA5CP,GA4CoB5F,iBAAA,CAASiC,gCAAT,CAClB,sBADkB,EAElBc,WAAW,CAAC7C,KAFM,CA5CpB;gBAAA;gBAAA,OAiDwB,KAAKkC,OAAL,CAAa,QAAb,EAAuByD,aAAvB,CAAqCD,UAArC,CAjDxB;;cAAA;gBAiDOE,QAjDP;;gBAmDC1G,YAAA,CAAOoC,WAAP,CAAmBsE,QAAnB,EAA6B;kBAC5BC,iBAAiB,EAAE,CAAC,8CAAD,CADS;kBAE5BC,UAAU,EAAE;gBAFgB,CAA7B;;cAnDD;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;wGAyDA,mBAAkCnG,OAAlC,EAAgDoG,QAAhD;QAAA;QAAA;UAAA;YAAA;cAAA;gBACOC,IADP,GACclG,iBAAA,CAASiC,gCAAT,CACZgE,QADY,EAEZpG,OAAO,CAACK,KAFI,CADd;gBAAA;gBAAA,OAMsB,KAAKkC,OAAL,CAAa,QAAb,EAAuByD,aAAvB,CAAqCK,IAArC,CANtB;;cAAA;gBAMO/C,MANP;gBAAA,mCAQQA,MARR;;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;+HAWA,mBAAyDgD,SAAzD;QAAA;QAAA;UAAA;YAAA;cAAA;gBACOvD,QADP,GACkBlC,0BAAA,CAASa,QAAT,CAAkB4E,SAAlB,CADlB;;gBAEC/G,YAAA,CAAOoC,WAAP,CAAmBoB,QAAnB;;cAFD;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;+GAKA;QAAA;QAAA;UAAA;YAAA;cAAA;gBACOwD,MADP,GACgB,KAAKrB,eAAL,CAAqB,oBAArB,CADhB;gBAEOsB,WAFP,GAEqB,KAAKxB,WAAL,CAAiB,KAAjB,EAAwB,SAAxB,CAFrB;gBAAA;gBAAA,OAIOnE,0BAAA,CAASoE,OAAT,CAAiBsB,MAAjB,EAAyBC,WAAzB,CAJP;;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;EA9cmDC,+B,gEACT;EACzCC,6BAA6B,EAAE;AADU,C"}
@@ -1 +1 @@
1
- {"version":3,"file":"SettingUpSchemas.test.js","names":["SettingUpSchemasTests","Cli","cli","assert","doesThrowAsync","installFeatures","features","code","err","errorAssert","assertError","installSchemaFeature","pgkPath","resolvePath","contents","JSON","stringify","diskUtil","readFile","doesInclude","tsConfig","tsConfigUtil","readConfig","cwd","isEqualDeep","checkHealth","health","isTruthy","schema","isEqual","status","AbstractSchemaTest"],"sources":["../../../../src/__tests__/behavioral/schemas/SettingUpSchemas.test.ts"],"sourcesContent":["import { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test'\nimport { errorAssert } from '@sprucelabs/test-utils'\nimport AbstractSchemaTest from '../../../tests/AbstractSchemaTest'\nimport tsConfigUtil from '../../../utilities/tsConfig.utility'\n\nexport default class SettingUpSchemasTests extends AbstractSchemaTest {\n\t@test()\n\tprotected static async failsBecauseMissingSkillInformation() {\n\t\tconst cli = await this.Cli()\n\n\t\tconst err = await assert.doesThrowAsync(() =>\n\t\t\tcli.installFeatures({\n\t\t\t\tfeatures: [\n\t\t\t\t\t{\n\t\t\t\t\t\tcode: 'schema',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t})\n\t\t)\n\n\t\terrorAssert.assertError(err, 'VALIDATION_FAILED')\n\t}\n\n\t@test()\n\tprotected static async installsSchema() {\n\t\tawait this.installSchemaFeature('schemas')\n\n\t\tconst pgkPath = this.resolvePath('package.json')\n\t\tconst contents = JSON.stringify(diskUtil.readFile(pgkPath))\n\n\t\tassert.doesInclude(contents, '@sprucelabs/schema')\n\n\t\tconst tsConfig = tsConfigUtil.readConfig(this.cwd)\n\n\t\tassert.isEqualDeep(tsConfig['compilerOptions']['paths'], {\n\t\t\t'#spruce/*': ['.spruce/*'],\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async schemaPassesHealthCheck() {\n\t\tconst cli = await this.installSchemaFeature('schemas')\n\t\tconst health = await cli.checkHealth()\n\n\t\tassert.isTruthy(health.schema)\n\t\tassert.isEqual(health.schema.status, 'passed')\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;;;;;;;IAEqBA,qB,WACnB,iB,UAiBA,iB,UAgBA,iB;;;;;;;;;;;;;+HAjCD;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAEmB,KAAKC,GAAL,EAFnB;;cAAA;gBAEOC,GAFP;gBAAA;gBAAA,OAImBC,aAAOC,cAAP,CAAsB;kBAAA,OACvCF,GAAG,CAACG,eAAJ,CAAoB;oBACnBC,QAAQ,EAAE,CACT;sBACCC,IAAI,EAAE;oBADP,CADS;kBADS,CAApB,CADuC;gBAAA,CAAtB,CAJnB;;cAAA;gBAIOC,GAJP;;gBAcCC,uBAAYC,WAAZ,CAAwBF,GAAxB,EAA6B,mBAA7B;;cAdD;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;0GAiBA;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAEO,KAAKG,oBAAL,CAA0B,SAA1B,CAFP;;cAAA;gBAIOC,OAJP,GAIiB,KAAKC,WAAL,CAAiB,cAAjB,CAJjB;gBAKOC,QALP,GAKkBC,IAAI,CAACC,SAAL,CAAeC,2BAASC,QAAT,CAAkBN,OAAlB,CAAf,CALlB;;gBAOCT,aAAOgB,WAAP,CAAmBL,QAAnB,EAA6B,oBAA7B;;gBAEMM,QATP,GASkBC,qBAAaC,UAAb,CAAwB,KAAKC,GAA7B,CATlB;;gBAWCpB,aAAOqB,WAAP,CAAmBJ,QAAQ,CAAC,iBAAD,CAAR,CAA4B,OAA5B,CAAnB,EAAyD;kBACxD,aAAa,CAAC,WAAD;gBAD2C,CAAzD;;cAXD;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;mHAgBA;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAEmB,KAAKT,oBAAL,CAA0B,SAA1B,CAFnB;;cAAA;gBAEOT,GAFP;gBAAA;gBAAA,OAGsBA,GAAG,CAACuB,WAAJ,EAHtB;;cAAA;gBAGOC,MAHP;;gBAKCvB,aAAOwB,QAAP,CAAgBD,MAAM,CAACE,MAAvB;;gBACAzB,aAAO0B,OAAP,CAAeH,MAAM,CAACE,MAAP,CAAcE,MAA7B,EAAqC,QAArC;;cAND;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;EAlCkDC,+B"}
1
+ {"version":3,"file":"SettingUpSchemas.test.js","names":["SettingUpSchemasTests","test","Cli","cli","assert","doesThrowAsync","installFeatures","features","code","err","errorAssert","assertError","installSchemaFeature","pgkPath","resolvePath","contents","JSON","stringify","diskUtil","readFile","doesInclude","tsConfig","tsConfigUtil","readConfig","cwd","isEqualDeep","checkHealth","health","isTruthy","schema","isEqual","status","AbstractSchemaTest"],"sources":["../../../../src/__tests__/behavioral/schemas/SettingUpSchemas.test.ts"],"sourcesContent":["import { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test'\nimport { errorAssert } from '@sprucelabs/test-utils'\nimport AbstractSchemaTest from '../../../tests/AbstractSchemaTest'\nimport tsConfigUtil from '../../../utilities/tsConfig.utility'\n\nexport default class SettingUpSchemasTests extends AbstractSchemaTest {\n\t@test()\n\tprotected static async failsBecauseMissingSkillInformation() {\n\t\tconst cli = await this.Cli()\n\n\t\tconst err = await assert.doesThrowAsync(() =>\n\t\t\tcli.installFeatures({\n\t\t\t\tfeatures: [\n\t\t\t\t\t{\n\t\t\t\t\t\tcode: 'schema',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t})\n\t\t)\n\n\t\terrorAssert.assertError(err, 'VALIDATION_FAILED')\n\t}\n\n\t@test()\n\tprotected static async installsSchema() {\n\t\tawait this.installSchemaFeature('schemas')\n\n\t\tconst pgkPath = this.resolvePath('package.json')\n\t\tconst contents = JSON.stringify(diskUtil.readFile(pgkPath))\n\n\t\tassert.doesInclude(contents, '@sprucelabs/schema')\n\n\t\tconst tsConfig = tsConfigUtil.readConfig(this.cwd)\n\n\t\tassert.isEqualDeep(tsConfig['compilerOptions']['paths'], {\n\t\t\t'#spruce/*': ['.spruce/*'],\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async schemaPassesHealthCheck() {\n\t\tconst cli = await this.installSchemaFeature('schemas')\n\t\tconst health = await cli.checkHealth()\n\n\t\tassert.isTruthy(health.schema)\n\t\tassert.isEqual(health.schema.status, 'passed')\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;;;;;;;IAEqBA,qB,WACnB,IAAAC,UAAA,G,UAiBA,IAAAA,UAAA,G,UAgBA,IAAAA,UAAA,G;;;;;;;;;;;;;+HAjCD;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAEmB,KAAKC,GAAL,EAFnB;;cAAA;gBAEOC,GAFP;gBAAA;gBAAA,OAImBC,YAAA,CAAOC,cAAP,CAAsB;kBAAA,OACvCF,GAAG,CAACG,eAAJ,CAAoB;oBACnBC,QAAQ,EAAE,CACT;sBACCC,IAAI,EAAE;oBADP,CADS;kBADS,CAApB,CADuC;gBAAA,CAAtB,CAJnB;;cAAA;gBAIOC,GAJP;;gBAcCC,sBAAA,CAAYC,WAAZ,CAAwBF,GAAxB,EAA6B,mBAA7B;;cAdD;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;0GAiBA;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAEO,KAAKG,oBAAL,CAA0B,SAA1B,CAFP;;cAAA;gBAIOC,OAJP,GAIiB,KAAKC,WAAL,CAAiB,cAAjB,CAJjB;gBAKOC,QALP,GAKkBC,IAAI,CAACC,SAAL,CAAeC,0BAAA,CAASC,QAAT,CAAkBN,OAAlB,CAAf,CALlB;;gBAOCT,YAAA,CAAOgB,WAAP,CAAmBL,QAAnB,EAA6B,oBAA7B;;gBAEMM,QATP,GASkBC,oBAAA,CAAaC,UAAb,CAAwB,KAAKC,GAA7B,CATlB;;gBAWCpB,YAAA,CAAOqB,WAAP,CAAmBJ,QAAQ,CAAC,iBAAD,CAAR,CAA4B,OAA5B,CAAnB,EAAyD;kBACxD,aAAa,CAAC,WAAD;gBAD2C,CAAzD;;cAXD;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;mHAgBA;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAEmB,KAAKT,oBAAL,CAA0B,SAA1B,CAFnB;;cAAA;gBAEOT,GAFP;gBAAA;gBAAA,OAGsBA,GAAG,CAACuB,WAAJ,EAHtB;;cAAA;gBAGOC,MAHP;;gBAKCvB,YAAA,CAAOwB,QAAP,CAAgBD,MAAM,CAACE,MAAvB;;gBACAzB,YAAA,CAAO0B,OAAP,CAAeH,MAAM,CAACE,MAAP,CAAcE,MAA7B,EAAqC,QAArC;;cAND;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;EAlCkDC,+B"}
@@ -1 +1 @@
1
- {"version":3,"file":"SyncingBadSchemasProvidesHelpfulErrorMessages.test.js","names":["SyncingBadSchemasProvidesHelpfulErrorMessagesTest","syncSchemas","schemasDir","resolvePath","diskUtil","copyDir","resolveTestPath","Action","execute","results","assert","isArray","errors","errorAssert","assertError","doesInclude","message","err","SpruceError","code","friendlyMessage","isEqual","AbstractSchemaTest"],"sources":["../../../../src/__tests__/behavioral/schemas/SyncingBadSchemasProvidesHelpfulErrorMessages.test.ts"],"sourcesContent":["import { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test'\nimport { errorAssert } from '@sprucelabs/test-utils'\nimport SpruceError from '../../../errors/SpruceError'\nimport AbstractSchemaTest from '../../../tests/AbstractSchemaTest'\n\nexport default class SyncingBadSchemasProvidesHelpfulErrorMessagesTest extends AbstractSchemaTest {\n\t@test()\n\tprotected static async syncingBadSchemasProvidesHelpfulErrorMessages() {\n\t\tawait this.syncSchemas('schemas')\n\n\t\tconst schemasDir = this.resolvePath('src', 'schemas')\n\t\tawait diskUtil.copyDir(\n\t\t\tthis.resolveTestPath('test_builders_one_bad'),\n\t\t\tschemasDir\n\t\t)\n\n\t\tconst results = await this.Action('schema', 'sync').execute({})\n\t\tassert.isArray(results.errors)\n\n\t\terrorAssert.assertError(results.errors[0], 'SCHEMA_FAILED_TO_IMPORT')\n\t\tassert.doesInclude(results.errors[0].message, 'no is not defined')\n\t}\n\n\t@test()\n\tprotected static throwingUnknownErrorDoesNotDoubleUpMessage() {\n\t\tconst err = new SpruceError({\n\t\t\t//@ts-ignore\n\t\t\tcode: 'GO_TEAM',\n\t\t\tfriendlyMessage: 'This is a great error',\n\t\t})\n\t\tconst message = err.friendlyMessage()\n\t\tassert.isEqual(message, 'This is a great error')\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;;;;;;;IAEqBA,iD,WACnB,iB,UAiBA,iB;;;;;;;;;;;;;yIAjBD;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAEO,KAAKC,WAAL,CAAiB,SAAjB,CAFP;;cAAA;gBAIOC,UAJP,GAIoB,KAAKC,WAAL,CAAiB,KAAjB,EAAwB,SAAxB,CAJpB;gBAAA;gBAAA,OAKOC,2BAASC,OAAT,CACL,KAAKC,eAAL,CAAqB,uBAArB,CADK,EAELJ,UAFK,CALP;;cAAA;gBAAA;gBAAA,OAUuB,KAAKK,MAAL,CAAY,QAAZ,EAAsB,MAAtB,EAA8BC,OAA9B,CAAsC,EAAtC,CAVvB;;cAAA;gBAUOC,OAVP;;gBAWCC,aAAOC,OAAP,CAAeF,OAAO,CAACG,MAAvB;;gBAEAC,uBAAYC,WAAZ,CAAwBL,OAAO,CAACG,MAAR,CAAe,CAAf,CAAxB,EAA2C,yBAA3C;;gBACAF,aAAOK,WAAP,CAAmBN,OAAO,CAACG,MAAR,CAAe,CAAf,EAAkBI,OAArC,EAA8C,mBAA9C;;cAdD;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;WAiBA,sDAC8D;MAC7D,IAAMC,GAAG,GAAG,IAAIC,uBAAJ,CAAgB;QAC3B;QACAC,IAAI,EAAE,SAFqB;QAG3BC,eAAe,EAAE;MAHU,CAAhB,CAAZ;MAKA,IAAMJ,OAAO,GAAGC,GAAG,CAACG,eAAJ,EAAhB;;MACAV,aAAOW,OAAP,CAAeL,OAAf,EAAwB,uBAAxB;IACA;;;EA3B6EM,+B"}
1
+ {"version":3,"file":"SyncingBadSchemasProvidesHelpfulErrorMessages.test.js","names":["SyncingBadSchemasProvidesHelpfulErrorMessagesTest","test","syncSchemas","schemasDir","resolvePath","diskUtil","copyDir","resolveTestPath","Action","execute","results","assert","isArray","errors","errorAssert","assertError","doesInclude","message","err","SpruceError","code","friendlyMessage","isEqual","AbstractSchemaTest"],"sources":["../../../../src/__tests__/behavioral/schemas/SyncingBadSchemasProvidesHelpfulErrorMessages.test.ts"],"sourcesContent":["import { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test'\nimport { errorAssert } from '@sprucelabs/test-utils'\nimport SpruceError from '../../../errors/SpruceError'\nimport AbstractSchemaTest from '../../../tests/AbstractSchemaTest'\n\nexport default class SyncingBadSchemasProvidesHelpfulErrorMessagesTest extends AbstractSchemaTest {\n\t@test()\n\tprotected static async syncingBadSchemasProvidesHelpfulErrorMessages() {\n\t\tawait this.syncSchemas('schemas')\n\n\t\tconst schemasDir = this.resolvePath('src', 'schemas')\n\t\tawait diskUtil.copyDir(\n\t\t\tthis.resolveTestPath('test_builders_one_bad'),\n\t\t\tschemasDir\n\t\t)\n\n\t\tconst results = await this.Action('schema', 'sync').execute({})\n\t\tassert.isArray(results.errors)\n\n\t\terrorAssert.assertError(results.errors[0], 'SCHEMA_FAILED_TO_IMPORT')\n\t\tassert.doesInclude(results.errors[0].message, 'no is not defined')\n\t}\n\n\t@test()\n\tprotected static throwingUnknownErrorDoesNotDoubleUpMessage() {\n\t\tconst err = new SpruceError({\n\t\t\t//@ts-ignore\n\t\t\tcode: 'GO_TEAM',\n\t\t\tfriendlyMessage: 'This is a great error',\n\t\t})\n\t\tconst message = err.friendlyMessage()\n\t\tassert.isEqual(message, 'This is a great error')\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;;;;;;;IAEqBA,iD,WACnB,IAAAC,UAAA,G,UAiBA,IAAAA,UAAA,G;;;;;;;;;;;;;yIAjBD;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAEO,KAAKC,WAAL,CAAiB,SAAjB,CAFP;;cAAA;gBAIOC,UAJP,GAIoB,KAAKC,WAAL,CAAiB,KAAjB,EAAwB,SAAxB,CAJpB;gBAAA;gBAAA,OAKOC,0BAAA,CAASC,OAAT,CACL,KAAKC,eAAL,CAAqB,uBAArB,CADK,EAELJ,UAFK,CALP;;cAAA;gBAAA;gBAAA,OAUuB,KAAKK,MAAL,CAAY,QAAZ,EAAsB,MAAtB,EAA8BC,OAA9B,CAAsC,EAAtC,CAVvB;;cAAA;gBAUOC,OAVP;;gBAWCC,YAAA,CAAOC,OAAP,CAAeF,OAAO,CAACG,MAAvB;;gBAEAC,sBAAA,CAAYC,WAAZ,CAAwBL,OAAO,CAACG,MAAR,CAAe,CAAf,CAAxB,EAA2C,yBAA3C;;gBACAF,YAAA,CAAOK,WAAP,CAAmBN,OAAO,CAACG,MAAR,CAAe,CAAf,EAAkBI,OAArC,EAA8C,mBAA9C;;cAdD;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;WAiBA,sDAC8D;MAC7D,IAAMC,GAAG,GAAG,IAAIC,uBAAJ,CAAgB;QAC3B;QACAC,IAAI,EAAE,SAFqB;QAG3BC,eAAe,EAAE;MAHU,CAAhB,CAAZ;MAKA,IAAMJ,OAAO,GAAGC,GAAG,CAACG,eAAJ,EAAhB;;MACAV,YAAA,CAAOW,OAAP,CAAeL,OAAf,EAAwB,uBAAxB;IACA;;;EA3B6EM,+B"}
@@ -1 +1 @@
1
- {"version":3,"file":"UsingSchemasInCli.test.js","names":["UsingSchemasInCli","user","Schema","cliUserSchema","casualName","assert","isEqual","get","BaseSpruceTest"],"sources":["../../../../src/__tests__/behavioral/schemas/UsingSchemasInCli.test.ts"],"sourcesContent":["import Schema from '@sprucelabs/schema'\nimport BaseSpruceTest, { test, assert } from '@sprucelabs/test'\nimport cliUserSchema from '#spruce/schemas/spruceCli/v2020_07_22/personWithToken.schema'\n\nexport default class UsingSchemasInCli extends BaseSpruceTest {\n\t@test()\n\tprotected static async instantiateSchema() {\n\t\tconst user = new Schema(cliUserSchema, {\n\t\t\tcasualName: 'Amigo',\n\t\t})\n\t\tassert.isEqual(user.get('casualName'), 'Amigo')\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;;;;;;;;;;;IAEqBA,iB,WACnB,iB;;;;;;;;;;;;;6GAAD;QAAA;QAAA;UAAA;YAAA;cAAA;gBAEOC,IAFP,GAEc,IAAIC,kBAAJ,CAAWC,2BAAX,EAA0B;kBACtCC,UAAU,EAAE;gBAD0B,CAA1B,CAFd;;gBAKCC,aAAOC,OAAP,CAAeL,IAAI,CAACM,GAAL,CAAS,YAAT,CAAf,EAAuC,OAAvC;;cALD;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;EAD8CC,gB"}
1
+ {"version":3,"file":"UsingSchemasInCli.test.js","names":["UsingSchemasInCli","test","user","Schema","cliUserSchema","casualName","assert","isEqual","get","BaseSpruceTest"],"sources":["../../../../src/__tests__/behavioral/schemas/UsingSchemasInCli.test.ts"],"sourcesContent":["import Schema from '@sprucelabs/schema'\nimport BaseSpruceTest, { test, assert } from '@sprucelabs/test'\nimport cliUserSchema from '#spruce/schemas/spruceCli/v2020_07_22/personWithToken.schema'\n\nexport default class UsingSchemasInCli extends BaseSpruceTest {\n\t@test()\n\tprotected static async instantiateSchema() {\n\t\tconst user = new Schema(cliUserSchema, {\n\t\t\tcasualName: 'Amigo',\n\t\t})\n\t\tassert.isEqual(user.get('casualName'), 'Amigo')\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;;;;;;;;;;;IAEqBA,iB,WACnB,IAAAC,UAAA,G;;;;;;;;;;;;;6GAAD;QAAA;QAAA;UAAA;YAAA;cAAA;gBAEOC,IAFP,GAEc,IAAIC,kBAAJ,CAAWC,2BAAX,EAA0B;kBACtCC,UAAU,EAAE;gBAD0B,CAA1B,CAFd;;gBAKCC,YAAA,CAAOC,OAAP,CAAeL,IAAI,CAACM,GAAL,CAAS,YAAT,CAAf,EAAuC,OAAvC;;cALD;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;EAD8CC,gB"}
@@ -1 +1 @@
1
- {"version":3,"file":"BootingASkill.test.js","names":["BootingASkillTest","Action","execute","results","assert","isTruthy","errors","doesInclude","message","Service","build","response","isFalsy","isTrue","meta","isBooted","pid","isAbove","psResults","length","kill","wait","psResultsEmpty","isLength","promise","shouldReturnImmediately","isFalse","bootPromise","bootResponse","isEqual","AbstractSkillTest"],"sources":["../../../../src/__tests__/behavioral/skill/BootingASkill.test.ts"],"sourcesContent":["import { test, assert } from '@sprucelabs/test'\nimport findProcess from 'find-process'\nimport AbstractSkillTest from '../../../tests/AbstractSkillTest'\n\nexport default class BootingASkillTest extends AbstractSkillTest {\n\tprotected static skillCacheKey = 'skills'\n\t@test()\n\tprotected static async bootingWithoutBuildingThrowsGoodError() {\n\t\tconst results = await this.Action('skill', 'boot').execute({})\n\n\t\tassert.isTruthy(results.errors)\n\t\tassert.doesInclude(results.errors[0].message, /you must build/gis)\n\t}\n\n\t@test()\n\tprotected static async aSkillCanBeBootedAndKilled() {\n\t\tawait this.Service('build').build()\n\n\t\tconst response = await this.Action('skill', 'boot').execute({})\n\n\t\tassert.isFalsy(response.errors)\n\t\tassert.isTrue(response.meta?.isBooted)\n\n\t\tconst pid = response.meta?.pid\n\t\tassert.isAbove(pid, 0)\n\n\t\tconst psResults = await findProcess('pid', pid)\n\t\tassert.isAbove(psResults.length, 0)\n\n\t\tresponse.meta?.kill()\n\n\t\tawait this.wait(1000)\n\n\t\tconst psResultsEmpty = await findProcess('pid', pid)\n\t\tassert.isLength(psResultsEmpty, 0)\n\n\t\tawait response.meta?.promise\n\t}\n\n\t@test()\n\tprotected static async canReturnFromExecuteImmediately() {\n\t\tconst response = await this.Action('skill', 'boot').execute({\n\t\t\tshouldReturnImmediately: true,\n\t\t})\n\n\t\tassert.isFalse(response.meta?.isBooted)\n\n\t\tconst bootResponse = await response.meta?.bootPromise\n\n\t\tassert.isEqual(bootResponse.meta.pid, response.meta.pid)\n\t\tassert.isTrue(bootResponse.meta?.isBooted)\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;;;;;;;IAEqBA,iB,WAEnB,iB,UAQA,iB,UAyBA,iB;;;;;;;;;;;;;iIAjCD;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAEuB,KAAKC,MAAL,CAAY,OAAZ,EAAqB,MAArB,EAA6BC,OAA7B,CAAqC,EAArC,CAFvB;;cAAA;gBAEOC,OAFP;;gBAICC,aAAOC,QAAP,CAAgBF,OAAO,CAACG,MAAxB;;gBACAF,aAAOG,WAAP,CAAmBJ,OAAO,CAACG,MAAR,CAAe,CAAf,EAAkBE,OAArC,EAA8C,kBAA9C;;cALD;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;sHAQA;QAAA;;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAEO,KAAKC,OAAL,CAAa,OAAb,EAAsBC,KAAtB,EAFP;;cAAA;gBAAA;gBAAA,OAIwB,KAAKT,MAAL,CAAY,OAAZ,EAAqB,MAArB,EAA6BC,OAA7B,CAAqC,EAArC,CAJxB;;cAAA;gBAIOS,QAJP;;gBAMCP,aAAOQ,OAAP,CAAeD,QAAQ,CAACL,MAAxB;;gBACAF,aAAOS,MAAP,mBAAcF,QAAQ,CAACG,IAAvB,mDAAc,eAAeC,QAA7B;;gBAEMC,GATP,sBASaL,QAAQ,CAACG,IATtB,oDASa,gBAAeE,GAT5B;;gBAUCZ,aAAOa,OAAP,CAAeD,GAAf,EAAoB,CAApB;;gBAVD;gBAAA,OAYyB,6BAAY,KAAZ,EAAmBA,GAAnB,CAZzB;;cAAA;gBAYOE,SAZP;;gBAaCd,aAAOa,OAAP,CAAeC,SAAS,CAACC,MAAzB,EAAiC,CAAjC;;gBAEA,mBAAAR,QAAQ,CAACG,IAAT,oEAAeM,IAAf;gBAfD;gBAAA,OAiBO,KAAKC,IAAL,CAAU,IAAV,CAjBP;;cAAA;gBAAA;gBAAA,OAmB8B,6BAAY,KAAZ,EAAmBL,GAAnB,CAnB9B;;cAAA;gBAmBOM,cAnBP;;gBAoBClB,aAAOmB,QAAP,CAAgBD,cAAhB,EAAgC,CAAhC;;gBApBD;gBAAA,0BAsBOX,QAAQ,CAACG,IAtBhB,oDAsBO,gBAAeU,OAtBtB;;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;2HAyBA;QAAA;;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAEwB,KAAKvB,MAAL,CAAY,OAAZ,EAAqB,MAArB,EAA6BC,OAA7B,CAAqC;kBAC3DuB,uBAAuB,EAAE;gBADkC,CAArC,CAFxB;;cAAA;gBAEOd,QAFP;;gBAMCP,aAAOsB,OAAP,oBAAef,QAAQ,CAACG,IAAxB,oDAAe,gBAAeC,QAA9B;;gBAND;gBAAA,0BAQ4BJ,QAAQ,CAACG,IARrC,oDAQ4B,gBAAea,WAR3C;;cAAA;gBAQOC,YARP;;gBAUCxB,aAAOyB,OAAP,CAAeD,YAAY,CAACd,IAAb,CAAkBE,GAAjC,EAAsCL,QAAQ,CAACG,IAAT,CAAcE,GAApD;;gBACAZ,aAAOS,MAAP,uBAAce,YAAY,CAACd,IAA3B,uDAAc,mBAAmBC,QAAjC;;cAXD;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;EAnC8Ce,8B,8DACb,Q"}
1
+ {"version":3,"file":"BootingASkill.test.js","names":["BootingASkillTest","test","Action","execute","results","assert","isTruthy","errors","doesInclude","message","Service","build","response","isFalsy","isTrue","meta","isBooted","pid","isAbove","findProcess","psResults","length","kill","wait","psResultsEmpty","isLength","promise","shouldReturnImmediately","isFalse","bootPromise","bootResponse","isEqual","AbstractSkillTest"],"sources":["../../../../src/__tests__/behavioral/skill/BootingASkill.test.ts"],"sourcesContent":["import { test, assert } from '@sprucelabs/test'\nimport findProcess from 'find-process'\nimport AbstractSkillTest from '../../../tests/AbstractSkillTest'\n\nexport default class BootingASkillTest extends AbstractSkillTest {\n\tprotected static skillCacheKey = 'skills'\n\t@test()\n\tprotected static async bootingWithoutBuildingThrowsGoodError() {\n\t\tconst results = await this.Action('skill', 'boot').execute({})\n\n\t\tassert.isTruthy(results.errors)\n\t\tassert.doesInclude(results.errors[0].message, /you must build/gis)\n\t}\n\n\t@test()\n\tprotected static async aSkillCanBeBootedAndKilled() {\n\t\tawait this.Service('build').build()\n\n\t\tconst response = await this.Action('skill', 'boot').execute({})\n\n\t\tassert.isFalsy(response.errors)\n\t\tassert.isTrue(response.meta?.isBooted)\n\n\t\tconst pid = response.meta?.pid\n\t\tassert.isAbove(pid, 0)\n\n\t\tconst psResults = await findProcess('pid', pid)\n\t\tassert.isAbove(psResults.length, 0)\n\n\t\tresponse.meta?.kill()\n\n\t\tawait this.wait(1000)\n\n\t\tconst psResultsEmpty = await findProcess('pid', pid)\n\t\tassert.isLength(psResultsEmpty, 0)\n\n\t\tawait response.meta?.promise\n\t}\n\n\t@test()\n\tprotected static async canReturnFromExecuteImmediately() {\n\t\tconst response = await this.Action('skill', 'boot').execute({\n\t\t\tshouldReturnImmediately: true,\n\t\t})\n\n\t\tassert.isFalse(response.meta?.isBooted)\n\n\t\tconst bootResponse = await response.meta?.bootPromise\n\n\t\tassert.isEqual(bootResponse.meta.pid, response.meta.pid)\n\t\tassert.isTrue(bootResponse.meta?.isBooted)\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;;;;;;;IAEqBA,iB,WAEnB,IAAAC,UAAA,G,UAQA,IAAAA,UAAA,G,UAyBA,IAAAA,UAAA,G;;;;;;;;;;;;;iIAjCD;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAEuB,KAAKC,MAAL,CAAY,OAAZ,EAAqB,MAArB,EAA6BC,OAA7B,CAAqC,EAArC,CAFvB;;cAAA;gBAEOC,OAFP;;gBAICC,YAAA,CAAOC,QAAP,CAAgBF,OAAO,CAACG,MAAxB;;gBACAF,YAAA,CAAOG,WAAP,CAAmBJ,OAAO,CAACG,MAAR,CAAe,CAAf,EAAkBE,OAArC,EAA8C,kBAA9C;;cALD;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;sHAQA;QAAA;;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAEO,KAAKC,OAAL,CAAa,OAAb,EAAsBC,KAAtB,EAFP;;cAAA;gBAAA;gBAAA,OAIwB,KAAKT,MAAL,CAAY,OAAZ,EAAqB,MAArB,EAA6BC,OAA7B,CAAqC,EAArC,CAJxB;;cAAA;gBAIOS,QAJP;;gBAMCP,YAAA,CAAOQ,OAAP,CAAeD,QAAQ,CAACL,MAAxB;;gBACAF,YAAA,CAAOS,MAAP,mBAAcF,QAAQ,CAACG,IAAvB,mDAAc,eAAeC,QAA7B;;gBAEMC,GATP,sBASaL,QAAQ,CAACG,IATtB,oDASa,gBAAeE,GAT5B;;gBAUCZ,YAAA,CAAOa,OAAP,CAAeD,GAAf,EAAoB,CAApB;;gBAVD;gBAAA,OAYyB,IAAAE,uBAAA,EAAY,KAAZ,EAAmBF,GAAnB,CAZzB;;cAAA;gBAYOG,SAZP;;gBAaCf,YAAA,CAAOa,OAAP,CAAeE,SAAS,CAACC,MAAzB,EAAiC,CAAjC;;gBAEA,mBAAAT,QAAQ,CAACG,IAAT,oEAAeO,IAAf;gBAfD;gBAAA,OAiBO,KAAKC,IAAL,CAAU,IAAV,CAjBP;;cAAA;gBAAA;gBAAA,OAmB8B,IAAAJ,uBAAA,EAAY,KAAZ,EAAmBF,GAAnB,CAnB9B;;cAAA;gBAmBOO,cAnBP;;gBAoBCnB,YAAA,CAAOoB,QAAP,CAAgBD,cAAhB,EAAgC,CAAhC;;gBApBD;gBAAA,0BAsBOZ,QAAQ,CAACG,IAtBhB,oDAsBO,gBAAeW,OAtBtB;;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;2HAyBA;QAAA;;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAEwB,KAAKxB,MAAL,CAAY,OAAZ,EAAqB,MAArB,EAA6BC,OAA7B,CAAqC;kBAC3DwB,uBAAuB,EAAE;gBADkC,CAArC,CAFxB;;cAAA;gBAEOf,QAFP;;gBAMCP,YAAA,CAAOuB,OAAP,oBAAehB,QAAQ,CAACG,IAAxB,oDAAe,gBAAeC,QAA9B;;gBAND;gBAAA,0BAQ4BJ,QAAQ,CAACG,IARrC,oDAQ4B,gBAAec,WAR3C;;cAAA;gBAQOC,YARP;;gBAUCzB,YAAA,CAAO0B,OAAP,CAAeD,YAAY,CAACf,IAAb,CAAkBE,GAAjC,EAAsCL,QAAQ,CAACG,IAAT,CAAcE,GAApD;;gBACAZ,YAAA,CAAOS,MAAP,uBAAcgB,YAAY,CAACf,IAA3B,uDAAc,mBAAmBC,QAAjC;;cAXD;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;EAnC8CgB,8B,8DACb,Q"}
@@ -1 +1 @@
1
- {"version":3,"file":"CreatingASkill.test.js","names":["CreatingASkillTest","CommandService","fakeCommand","RegExp","code","promise","Action","shouldAutoHandleDependencies","execute","destination","waitForInput","ui","sendInput","results","testUtil","assertFileByPathInGeneratedFiles","files","hints","assert","doesInclude","AbstractCliTest"],"sources":["../../../../src/__tests__/behavioral/skill/CreatingASkill.test.ts"],"sourcesContent":["import { test, assert } from '@sprucelabs/test'\nimport CommandService from '../../../services/CommandService'\nimport AbstractCliTest from '../../../tests/AbstractCliTest'\nimport testUtil from '../../../tests/utilities/test.utility'\n\nexport default class CreatingASkillTest extends AbstractCliTest {\n\tprotected static async beforeEach() {\n\t\tawait super.beforeEach()\n\t\tCommandService.fakeCommand(new RegExp(/npm.*?install .*?/gis), {\n\t\t\tcode: 0,\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async creatingAtADestinationAsksForSkillDetailsOnce() {\n\t\tconst promise = this.Action('skill', 'create', {\n\t\t\tshouldAutoHandleDependencies: true,\n\t\t}).execute({ destination: 'taco' })\n\n\t\tawait this.waitForInput()\n\n\t\tawait this.ui.sendInput('adventure')\n\t\tawait this.ui.sendInput('i would not')\n\n\t\tconst results = await promise\n\n\t\ttestUtil.assertFileByPathInGeneratedFiles(\n\t\t\t/taco\\/package\\.json/gis,\n\t\t\tresults.files\n\t\t)\n\n\t\tconst { hints } = results\n\n\t\tassert.doesInclude(hints, 'cd taco')\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;;;;;;;IAEqBA,kB,WAQnB,iB;;;;;;;;;;;;;sGAPD;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA;;cAAA;gBAECC,2BAAeC,WAAf,CAA2B,IAAIC,MAAJ,CAAW,+BAAX,CAA3B,EAA+D;kBAC9DC,IAAI,EAAE;gBADwD,CAA/D;;cAFD;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;yIAOA;QAAA;QAAA;UAAA;YAAA;cAAA;gBAEOC,OAFP,GAEiB,KAAKC,MAAL,CAAY,OAAZ,EAAqB,QAArB,EAA+B;kBAC9CC,4BAA4B,EAAE;gBADgB,CAA/B,EAEbC,OAFa,CAEL;kBAAEC,WAAW,EAAE;gBAAf,CAFK,CAFjB;gBAAA;gBAAA,OAMO,KAAKC,YAAL,EANP;;cAAA;gBAAA;gBAAA,OAQO,KAAKC,EAAL,CAAQC,SAAR,CAAkB,WAAlB,CARP;;cAAA;gBAAA;gBAAA,OASO,KAAKD,EAAL,CAAQC,SAAR,CAAkB,aAAlB,CATP;;cAAA;gBAAA;gBAAA,OAWuBP,OAXvB;;cAAA;gBAWOQ,OAXP;;gBAaCC,kBAASC,gCAAT,CACC,uBADD,EAECF,OAAO,CAACG,KAFT;;gBAKQC,KAlBT,GAkBmBJ,OAlBnB,CAkBSI,KAlBT;;gBAoBCC,aAAOC,WAAP,CAAmBF,KAAnB,EAA0B,SAA1B;;cApBD;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;EAR+CG,4B"}
1
+ {"version":3,"file":"CreatingASkill.test.js","names":["CreatingASkillTest","test","CommandService","fakeCommand","RegExp","code","promise","Action","shouldAutoHandleDependencies","execute","destination","waitForInput","ui","sendInput","results","testUtil","assertFileByPathInGeneratedFiles","files","hints","assert","doesInclude","AbstractCliTest"],"sources":["../../../../src/__tests__/behavioral/skill/CreatingASkill.test.ts"],"sourcesContent":["import { test, assert } from '@sprucelabs/test'\nimport CommandService from '../../../services/CommandService'\nimport AbstractCliTest from '../../../tests/AbstractCliTest'\nimport testUtil from '../../../tests/utilities/test.utility'\n\nexport default class CreatingASkillTest extends AbstractCliTest {\n\tprotected static async beforeEach() {\n\t\tawait super.beforeEach()\n\t\tCommandService.fakeCommand(new RegExp(/npm.*?install .*?/gis), {\n\t\t\tcode: 0,\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async creatingAtADestinationAsksForSkillDetailsOnce() {\n\t\tconst promise = this.Action('skill', 'create', {\n\t\t\tshouldAutoHandleDependencies: true,\n\t\t}).execute({ destination: 'taco' })\n\n\t\tawait this.waitForInput()\n\n\t\tawait this.ui.sendInput('adventure')\n\t\tawait this.ui.sendInput('i would not')\n\n\t\tconst results = await promise\n\n\t\ttestUtil.assertFileByPathInGeneratedFiles(\n\t\t\t/taco\\/package\\.json/gis,\n\t\t\tresults.files\n\t\t)\n\n\t\tconst { hints } = results\n\n\t\tassert.doesInclude(hints, 'cd taco')\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;;;;;;;IAEqBA,kB,WAQnB,IAAAC,UAAA,G;;;;;;;;;;;;;sGAPD;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA;;cAAA;gBAECC,0BAAA,CAAeC,WAAf,CAA2B,IAAIC,MAAJ,CAAW,+BAAX,CAA3B,EAA+D;kBAC9DC,IAAI,EAAE;gBADwD,CAA/D;;cAFD;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;yIAOA;QAAA;QAAA;UAAA;YAAA;cAAA;gBAEOC,OAFP,GAEiB,KAAKC,MAAL,CAAY,OAAZ,EAAqB,QAArB,EAA+B;kBAC9CC,4BAA4B,EAAE;gBADgB,CAA/B,EAEbC,OAFa,CAEL;kBAAEC,WAAW,EAAE;gBAAf,CAFK,CAFjB;gBAAA;gBAAA,OAMO,KAAKC,YAAL,EANP;;cAAA;gBAAA;gBAAA,OAQO,KAAKC,EAAL,CAAQC,SAAR,CAAkB,WAAlB,CARP;;cAAA;gBAAA;gBAAA,OASO,KAAKD,EAAL,CAAQC,SAAR,CAAkB,aAAlB,CATP;;cAAA;gBAAA;gBAAA,OAWuBP,OAXvB;;cAAA;gBAWOQ,OAXP;;gBAaCC,iBAAA,CAASC,gCAAT,CACC,uBADD,EAECF,OAAO,CAACG,KAFT;;gBAKQC,KAlBT,GAkBmBJ,OAlBnB,CAkBSI,KAlBT;;gBAoBCC,YAAA,CAAOC,WAAP,CAAmBF,KAAnB,EAA0B,SAA1B;;cApBD;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;EAR+CG,4B"}
@@ -1 +1 @@
1
- {"version":3,"file":"RegisteringASkill.test.js","names":["RegisteringASkillTest","assert","isFunction","Action","execute","FeatureFixture","installCachedFeatures","nameReadable","nameKebab","results","isTruthy","errors","errorAssert","assertError","options","responseErrors","MercuryClientFactory","setIsTestMode","people","loginAsDemoPerson","slug","Date","getTime","connectToApi","client","on","fail","doesInclude","message","isFalsy","skill","meta","emit","target","skillId","id","getSkillResults","eventResponseUtil","getFirstResponseOrThrow","getSkill","isEqual","auth","Service","currentSkill","getCurrentSkill","name","AbstractCliTest"],"sources":["../../../../src/__tests__/behavioral/skill/RegisteringASkill.test.ts"],"sourcesContent":["import { MercuryClientFactory } from '@sprucelabs/mercury-client'\nimport { eventResponseUtil } from '@sprucelabs/spruce-event-utils'\nimport { test, assert } from '@sprucelabs/test'\nimport { errorAssert } from '@sprucelabs/test-utils'\nimport AbstractCliTest from '../../../tests/AbstractCliTest'\n\nexport default class RegisteringASkillTest extends AbstractCliTest {\n\t@test()\n\tprotected static async hasRegisterAction() {\n\t\tassert.isFunction(this.Action('skill', 'register').execute)\n\t}\n\n\t@test()\n\tprotected static async cantRegisterWithoutBeingLoggedIn() {\n\t\tawait this.FeatureFixture().installCachedFeatures('skills')\n\n\t\tconst results = await this.Action('skill', 'register').execute({\n\t\t\tnameReadable: 'My great skill',\n\t\t\tnameKebab: 'my-great-skill',\n\t\t})\n\n\t\tassert.isTruthy(results.errors)\n\t\terrorAssert.assertError(results.errors[0], 'MERCURY_RESPONSE_ERROR')\n\t\terrorAssert.assertError(\n\t\t\tresults.errors[0].options.responseErrors[0],\n\t\t\t'UNAUTHORIZED_ACCESS'\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async returnsErrorWhenRegistrationFails() {\n\t\tMercuryClientFactory.setIsTestMode(true)\n\n\t\tawait this.people.loginAsDemoPerson()\n\t\tawait this.FeatureFixture().installCachedFeatures('skills')\n\t\tconst slug = `my-new-skill-${new Date().getTime()}`\n\n\t\tconst client = await this.connectToApi()\n\t\tawait client.on('register-skill::v2020_12_25', (() => {\n\t\t\tassert.fail('what the!!??')\n\t\t}) as any)\n\n\t\tconst results = await this.Action('skill', 'register').execute({\n\t\t\tnameReadable: 'My great skill',\n\t\t\tnameKebab: slug,\n\t\t})\n\n\t\tassert.isTruthy(results.errors)\n\t\tassert.doesInclude(results.errors[0].message, 'what the!!??')\n\t}\n\n\t@test()\n\tprotected static async canRegisterSkill() {\n\t\tawait this.FeatureFixture().installCachedFeatures('skills')\n\t\tawait this.people.loginAsDemoPerson()\n\n\t\tconst slug = `my-new-skill-${new Date().getTime()}`\n\t\tconst results = await this.Action('skill', 'register').execute({\n\t\t\tnameReadable: 'my new skill',\n\t\t\tnameKebab: slug,\n\t\t})\n\n\t\tassert.isFalsy(results.errors)\n\t\tconst skill = results.meta?.skill\n\t\tassert.isTruthy(skill)\n\n\t\tconst client = await this.connectToApi()\n\t\tconst getSkillResults = await client.emit('get-skill::v2020_12_25', {\n\t\t\ttarget: { skillId: skill.id },\n\t\t})\n\n\t\tconst { skill: getSkill } =\n\t\t\teventResponseUtil.getFirstResponseOrThrow(getSkillResults)\n\n\t\tassert.isEqual(skill.id, getSkill.id)\n\n\t\tconst auth = this.Service('auth')\n\t\tconst currentSkill = auth.getCurrentSkill()\n\n\t\tassert.isTruthy(currentSkill)\n\t\tassert.isEqual(currentSkill.name, 'my new skill')\n\t\tassert.isEqual(currentSkill.slug, slug)\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;;;;;;;IAEqBA,qB,WACnB,iB,UAKA,iB,UAiBA,iB,UAsBA,iB;;;;;;;;;;;;;6GA5CD;QAAA;UAAA;YAAA;cAAA;gBAECC,aAAOC,UAAP,CAAkB,KAAKC,MAAL,CAAY,OAAZ,EAAqB,UAArB,EAAiCC,OAAnD;;cAFD;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;4HAKA;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAEO,KAAKC,cAAL,GAAsBC,qBAAtB,CAA4C,QAA5C,CAFP;;cAAA;gBAAA;gBAAA,OAIuB,KAAKH,MAAL,CAAY,OAAZ,EAAqB,UAArB,EAAiCC,OAAjC,CAAyC;kBAC9DG,YAAY,EAAE,gBADgD;kBAE9DC,SAAS,EAAE;gBAFmD,CAAzC,CAJvB;;cAAA;gBAIOC,OAJP;;gBASCR,aAAOS,QAAP,CAAgBD,OAAO,CAACE,MAAxB;;gBACAC,uBAAYC,WAAZ,CAAwBJ,OAAO,CAACE,MAAR,CAAe,CAAf,CAAxB,EAA2C,wBAA3C;;gBACAC,uBAAYC,WAAZ,CACCJ,OAAO,CAACE,MAAR,CAAe,CAAf,EAAkBG,OAAlB,CAA0BC,cAA1B,CAAyC,CAAzC,CADD,EAEC,qBAFD;;cAXD;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;6HAiBA;QAAA;QAAA;UAAA;YAAA;cAAA;gBAECC,oCAAqBC,aAArB,CAAmC,IAAnC;;gBAFD;gBAAA,OAIO,KAAKC,MAAL,CAAYC,iBAAZ,EAJP;;cAAA;gBAAA;gBAAA,OAKO,KAAKd,cAAL,GAAsBC,qBAAtB,CAA4C,QAA5C,CALP;;cAAA;gBAMOc,IANP,0BAM8B,IAAIC,IAAJ,GAAWC,OAAX,EAN9B;gBAAA;gBAAA,OAQsB,KAAKC,YAAL,EARtB;;cAAA;gBAQOC,MARP;gBAAA;gBAAA,OASOA,MAAM,CAACC,EAAP,CAAU,6BAAV,EAA0C,YAAM;kBACrDxB,aAAOyB,IAAP,CAAY,cAAZ;gBACA,CAFK,CATP;;cAAA;gBAAA;gBAAA,OAauB,KAAKvB,MAAL,CAAY,OAAZ,EAAqB,UAArB,EAAiCC,OAAjC,CAAyC;kBAC9DG,YAAY,EAAE,gBADgD;kBAE9DC,SAAS,EAAEY;gBAFmD,CAAzC,CAbvB;;cAAA;gBAaOX,OAbP;;gBAkBCR,aAAOS,QAAP,CAAgBD,OAAO,CAACE,MAAxB;;gBACAV,aAAO0B,WAAP,CAAmBlB,OAAO,CAACE,MAAR,CAAe,CAAf,EAAkBiB,OAArC,EAA8C,cAA9C;;cAnBD;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;4GAsBA;QAAA;;QAAA;;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAEO,KAAKvB,cAAL,GAAsBC,qBAAtB,CAA4C,QAA5C,CAFP;;cAAA;gBAAA;gBAAA,OAGO,KAAKY,MAAL,CAAYC,iBAAZ,EAHP;;cAAA;gBAKOC,IALP,0BAK8B,IAAIC,IAAJ,GAAWC,OAAX,EAL9B;gBAAA;gBAAA,OAMuB,KAAKnB,MAAL,CAAY,OAAZ,EAAqB,UAArB,EAAiCC,OAAjC,CAAyC;kBAC9DG,YAAY,EAAE,cADgD;kBAE9DC,SAAS,EAAEY;gBAFmD,CAAzC,CANvB;;cAAA;gBAMOX,OANP;;gBAWCR,aAAO4B,OAAP,CAAepB,OAAO,CAACE,MAAvB;;gBACMmB,KAZP,oBAYerB,OAAO,CAACsB,IAZvB,kDAYe,cAAcD,KAZ7B;;gBAaC7B,aAAOS,QAAP,CAAgBoB,KAAhB;;gBAbD;gBAAA,OAesB,KAAKP,YAAL,EAftB;;cAAA;gBAeOC,MAfP;gBAAA;gBAAA,OAgB+BA,MAAM,CAACQ,IAAP,CAAY,wBAAZ,EAAsC;kBACnEC,MAAM,EAAE;oBAAEC,OAAO,EAAEJ,KAAK,CAACK;kBAAjB;gBAD2D,CAAtC,CAhB/B;;cAAA;gBAgBOC,eAhBP;gBAAA,wBAqBEC,oCAAkBC,uBAAlB,CAA0CF,eAA1C,CArBF,EAoBgBG,QApBhB,yBAoBST,KApBT;;gBAuBC7B,aAAOuC,OAAP,CAAeV,KAAK,CAACK,EAArB,EAAyBI,QAAQ,CAACJ,EAAlC;;gBAEMM,IAzBP,GAyBc,KAAKC,OAAL,CAAa,MAAb,CAzBd;gBA0BOC,YA1BP,GA0BsBF,IAAI,CAACG,eAAL,EA1BtB;;gBA4BC3C,aAAOS,QAAP,CAAgBiC,YAAhB;;gBACA1C,aAAOuC,OAAP,CAAeG,YAAY,CAACE,IAA5B,EAAkC,cAAlC;;gBACA5C,aAAOuC,OAAP,CAAeG,YAAY,CAACvB,IAA5B,EAAkCA,IAAlC;;cA9BD;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;EA7CkD0B,4B"}
1
+ {"version":3,"file":"RegisteringASkill.test.js","names":["RegisteringASkillTest","test","assert","isFunction","Action","execute","FeatureFixture","installCachedFeatures","nameReadable","nameKebab","results","isTruthy","errors","errorAssert","assertError","options","responseErrors","MercuryClientFactory","setIsTestMode","people","loginAsDemoPerson","slug","Date","getTime","connectToApi","client","on","fail","doesInclude","message","isFalsy","skill","meta","emit","target","skillId","id","getSkillResults","eventResponseUtil","getFirstResponseOrThrow","getSkill","isEqual","auth","Service","currentSkill","getCurrentSkill","name","AbstractCliTest"],"sources":["../../../../src/__tests__/behavioral/skill/RegisteringASkill.test.ts"],"sourcesContent":["import { MercuryClientFactory } from '@sprucelabs/mercury-client'\nimport { eventResponseUtil } from '@sprucelabs/spruce-event-utils'\nimport { test, assert } from '@sprucelabs/test'\nimport { errorAssert } from '@sprucelabs/test-utils'\nimport AbstractCliTest from '../../../tests/AbstractCliTest'\n\nexport default class RegisteringASkillTest extends AbstractCliTest {\n\t@test()\n\tprotected static async hasRegisterAction() {\n\t\tassert.isFunction(this.Action('skill', 'register').execute)\n\t}\n\n\t@test()\n\tprotected static async cantRegisterWithoutBeingLoggedIn() {\n\t\tawait this.FeatureFixture().installCachedFeatures('skills')\n\n\t\tconst results = await this.Action('skill', 'register').execute({\n\t\t\tnameReadable: 'My great skill',\n\t\t\tnameKebab: 'my-great-skill',\n\t\t})\n\n\t\tassert.isTruthy(results.errors)\n\t\terrorAssert.assertError(results.errors[0], 'MERCURY_RESPONSE_ERROR')\n\t\terrorAssert.assertError(\n\t\t\tresults.errors[0].options.responseErrors[0],\n\t\t\t'UNAUTHORIZED_ACCESS'\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async returnsErrorWhenRegistrationFails() {\n\t\tMercuryClientFactory.setIsTestMode(true)\n\n\t\tawait this.people.loginAsDemoPerson()\n\t\tawait this.FeatureFixture().installCachedFeatures('skills')\n\t\tconst slug = `my-new-skill-${new Date().getTime()}`\n\n\t\tconst client = await this.connectToApi()\n\t\tawait client.on('register-skill::v2020_12_25', (() => {\n\t\t\tassert.fail('what the!!??')\n\t\t}) as any)\n\n\t\tconst results = await this.Action('skill', 'register').execute({\n\t\t\tnameReadable: 'My great skill',\n\t\t\tnameKebab: slug,\n\t\t})\n\n\t\tassert.isTruthy(results.errors)\n\t\tassert.doesInclude(results.errors[0].message, 'what the!!??')\n\t}\n\n\t@test()\n\tprotected static async canRegisterSkill() {\n\t\tawait this.FeatureFixture().installCachedFeatures('skills')\n\t\tawait this.people.loginAsDemoPerson()\n\n\t\tconst slug = `my-new-skill-${new Date().getTime()}`\n\t\tconst results = await this.Action('skill', 'register').execute({\n\t\t\tnameReadable: 'my new skill',\n\t\t\tnameKebab: slug,\n\t\t})\n\n\t\tassert.isFalsy(results.errors)\n\t\tconst skill = results.meta?.skill\n\t\tassert.isTruthy(skill)\n\n\t\tconst client = await this.connectToApi()\n\t\tconst getSkillResults = await client.emit('get-skill::v2020_12_25', {\n\t\t\ttarget: { skillId: skill.id },\n\t\t})\n\n\t\tconst { skill: getSkill } =\n\t\t\teventResponseUtil.getFirstResponseOrThrow(getSkillResults)\n\n\t\tassert.isEqual(skill.id, getSkill.id)\n\n\t\tconst auth = this.Service('auth')\n\t\tconst currentSkill = auth.getCurrentSkill()\n\n\t\tassert.isTruthy(currentSkill)\n\t\tassert.isEqual(currentSkill.name, 'my new skill')\n\t\tassert.isEqual(currentSkill.slug, slug)\n\t}\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"SettingUpASkill.test.js","names":["SettingUpASkill","Cli","cli","assert","doesThrowAsync","installFeatures","features","code","options","name2","description","checkHealth","health","isEqual","skill","status","doesInclude","installSkill","diskUtil","moveFile","resolvePath","fixture","FeatureFixture","installCachedFeatures","hashSpruceDir","resolveHashSprucePath","isTrue","doesDirExist","errors","length","fail","message","isEqualDeep","name","results","isTruthy","files","isAbove","generateFiles","filter","file","action","packagesInstalled","hiddenFiles","assertDevDependenciesExist","assertSkillNameIsSaved","env","Service","get","destination","isFalse","doesFileExist","HASH_SPRUCE_DIR","first","path","pkg","devDependencies","AbstractCliTest"],"sources":["../../../../src/__tests__/behavioral/skill/SettingUpASkill.test.ts"],"sourcesContent":["import { diskUtil, HASH_SPRUCE_DIR } from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test'\nimport AbstractCliTest from '../../../tests/AbstractCliTest'\n\nexport default class SettingUpASkill extends AbstractCliTest {\n\t@test()\n\tprotected static async failsWithBadParams() {\n\t\tconst cli = await this.Cli()\n\t\tawait assert.doesThrowAsync(async () => {\n\t\t\tawait cli.installFeatures({\n\t\t\t\tfeatures: [\n\t\t\t\t\t{\n\t\t\t\t\t\t// @ts-ignore\n\t\t\t\t\t\tcode: 'skill',\n\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\t// @ts-ignore\n\t\t\t\t\t\t\tname2: 'test',\n\t\t\t\t\t\t\tdescription: 'This is such a good skill!',\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}, 'name')\n\t}\n\n\t@test()\n\tprotected static async failsHealthCheckWithNothingInstalled() {\n\t\tconst cli = await this.Cli()\n\t\tconst health = await cli.checkHealth()\n\n\t\tassert.isEqual(health.skill.status, 'failed')\n\t\tassert.doesInclude(health, {\n\t\t\t'skill.errors[].options.code': 'SKILL_NOT_INSTALLED',\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async getsAFailedHealthCheckWhenIndexFileIsMoved() {\n\t\tconst cli = await this.installSkill()\n\n\t\tdiskUtil.moveFile(\n\t\t\tthis.resolvePath('src', 'index.ts'),\n\t\t\tthis.resolvePath('src', 'index2.ts')\n\t\t)\n\n\t\tconst health = await cli.checkHealth()\n\n\t\tassert.isEqual(health.skill.status, 'failed')\n\t\tassert.doesInclude(health, {\n\t\t\t'skill.errors[].options.code': 'BOOT_ERROR',\n\t\t})\n\t}\n\n\tprivate static async installSkill() {\n\t\tconst fixture = this.FeatureFixture()\n\t\tconst cli = await fixture.installCachedFeatures('skills')\n\t\treturn cli\n\t}\n\n\t@test()\n\tprotected static async getsAGoodHealthCheckAndNothingElse() {\n\t\tconst cli = await this.installSkill()\n\n\t\tconst hashSpruceDir = this.resolveHashSprucePath()\n\t\tassert.isTrue(diskUtil.doesDirExist(hashSpruceDir))\n\n\t\tconst health = await cli.checkHealth()\n\n\t\tif (health.skill?.errors && health.skill.errors.length > 0) {\n\t\t\tassert.fail(health.skill.errors?.[0].message)\n\t\t}\n\n\t\tassert.isEqualDeep(health, { skill: { status: 'passed' } })\n\t}\n\n\t@test()\n\tprotected static async reportsProperInstallResults() {\n\t\tconst cli = await this.Cli()\n\t\tconst results = await cli.installFeatures({\n\t\t\tfeatures: [\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: 'Transfer file check skill',\n\t\t\t\t\t\tdescription: 'For tracking files copied count',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t})\n\n\t\tassert.isTruthy(results.files)\n\t\tassert.isAbove(results.files.length, 0)\n\n\t\tconst generateFiles = results.files.filter(\n\t\t\t(file) => file.action === 'generated'\n\t\t)\n\n\t\tassert.isEqual(generateFiles.length, results.files.length)\n\n\t\tassert.isTruthy(results.packagesInstalled)\n\t\tassert.isAbove(results.packagesInstalled.length, 0)\n\n\t\tconst hiddenFiles = results.files.filter((file) => file.name[0] === '.')\n\t\tassert.isAbove(hiddenFiles.length, 0)\n\n\t\tthis.assertDevDependenciesExist()\n\t\tthis.assertSkillNameIsSaved()\n\t}\n\n\tprivate static assertSkillNameIsSaved() {\n\t\tconst env = this.Service('env')\n\t\tassert.isTruthy(env.get('SKILL_NAME'))\n\t\tassert.isEqual(env.get('SKILL_NAME'), 'Transfer file check skill')\n\t}\n\n\t@test()\n\tprotected static async canAcceptOptionalDestination() {\n\t\tconst cli = await this.Cli()\n\t\tconst results = await cli.installFeatures({\n\t\t\tfeatures: [\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: 'Transfer file check skill',\n\t\t\t\t\t\tdescription: 'For tracking files copied count',\n\t\t\t\t\t\tdestination: 'taco',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t})\n\n\t\tassert.isTrue(diskUtil.doesDirExist(this.resolvePath('taco')))\n\t\tassert.isFalse(diskUtil.doesDirExist(this.resolvePath('.env')))\n\t\tassert.isTrue(diskUtil.doesDirExist(this.resolvePath('taco', '.env')))\n\t\tassert.isFalse(diskUtil.doesFileExist(this.resolvePath('package.json')))\n\t\tassert.isFalse(diskUtil.doesFileExist(this.resolvePath('src')))\n\t\tassert.isFalse(diskUtil.doesFileExist(this.resolvePath('node_modules')))\n\t\tassert.isFalse(diskUtil.doesFileExist(this.resolvePath(HASH_SPRUCE_DIR)))\n\t\tassert.isTrue(\n\t\t\tdiskUtil.doesFileExist(this.resolvePath('taco', 'package.json'))\n\t\t)\n\n\t\tconst first = results.files?.[0]\n\t\tassert.isTruthy(first)\n\n\t\tassert.doesInclude(first.path, 'taco')\n\t}\n\n\tprotected static assertDevDependenciesExist() {\n\t\tconst pkg = this.Service('pkg')\n\t\tconst devDependencies = pkg.get('devDependencies')\n\t\tassert.isTruthy(devDependencies)\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;;;;;;;IAEqBA,e,WACnB,iB,UAoBA,iB,UAWA,iB,UAuBA,iB,UAgBA,iB,UAwCA,iB;;;;;;;;;;;;;8GA9GD;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAEmB,KAAKC,GAAL,EAFnB;;cAAA;gBAEOC,GAFP;gBAAA;gBAAA,OAGOC,aAAOC,cAAP,6FAAsB;kBAAA;oBAAA;sBAAA;wBAAA;0BAAA;0BAAA,OACrBF,GAAG,CAACG,eAAJ,CAAoB;4BACzBC,QAAQ,EAAE,CACT;8BACC;8BACAC,IAAI,EAAE,OAFP;8BAGCC,OAAO,EAAE;gCACR;gCACAC,KAAK,EAAE,MAFC;gCAGRC,WAAW,EAAE;8BAHL;4BAHV,CADS;0BADe,CAApB,CADqB;;wBAAA;wBAAA;0BAAA;sBAAA;oBAAA;kBAAA;gBAAA,CAAtB,IAcH,MAdG,CAHP;;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;gIAoBA;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAEmB,KAAKT,GAAL,EAFnB;;cAAA;gBAEOC,GAFP;gBAAA;gBAAA,OAGsBA,GAAG,CAACS,WAAJ,EAHtB;;cAAA;gBAGOC,MAHP;;gBAKCT,aAAOU,OAAP,CAAeD,MAAM,CAACE,KAAP,CAAaC,MAA5B,EAAoC,QAApC;;gBACAZ,aAAOa,WAAP,CAAmBJ,MAAnB,EAA2B;kBAC1B,+BAA+B;gBADL,CAA3B;;cAND;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;sIAWA;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAEmB,KAAKK,YAAL,EAFnB;;cAAA;gBAEOf,GAFP;;gBAICgB,2BAASC,QAAT,CACC,KAAKC,WAAL,CAAiB,KAAjB,EAAwB,UAAxB,CADD,EAEC,KAAKA,WAAL,CAAiB,KAAjB,EAAwB,WAAxB,CAFD;;gBAJD;gBAAA,OASsBlB,GAAG,CAACS,WAAJ,EATtB;;cAAA;gBASOC,MATP;;gBAWCT,aAAOU,OAAP,CAAeD,MAAM,CAACE,KAAP,CAAaC,MAA5B,EAAoC,QAApC;;gBACAZ,aAAOa,WAAP,CAAmBJ,MAAnB,EAA2B;kBAC1B,+BAA+B;gBADL,CAA3B;;cAZD;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;wGAiBA;QAAA;QAAA;UAAA;YAAA;cAAA;gBACOS,OADP,GACiB,KAAKC,cAAL,EADjB;gBAAA;gBAAA,OAEmBD,OAAO,CAACE,qBAAR,CAA8B,QAA9B,CAFnB;;cAAA;gBAEOrB,GAFP;gBAAA,kCAGQA,GAHR;;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;8HAMA;QAAA;;QAAA;;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAEmB,KAAKe,YAAL,EAFnB;;cAAA;gBAEOf,GAFP;gBAIOsB,aAJP,GAIuB,KAAKC,qBAAL,EAJvB;;gBAKCtB,aAAOuB,MAAP,CAAcR,2BAASS,YAAT,CAAsBH,aAAtB,CAAd;;gBALD;gBAAA,OAOsBtB,GAAG,CAACS,WAAJ,EAPtB;;cAAA;gBAOOC,MAPP;;gBASC,IAAI,iBAAAA,MAAM,CAACE,KAAP,wDAAcc,MAAd,IAAwBhB,MAAM,CAACE,KAAP,CAAac,MAAb,CAAoBC,MAApB,GAA6B,CAAzD,EAA4D;kBAC3D1B,aAAO2B,IAAP,yBAAYlB,MAAM,CAACE,KAAP,CAAac,MAAzB,yDAAY,qBAAsB,CAAtB,EAAyBG,OAArC;gBACA;;gBAED5B,aAAO6B,WAAP,CAAmBpB,MAAnB,EAA2B;kBAAEE,KAAK,EAAE;oBAAEC,MAAM,EAAE;kBAAV;gBAAT,CAA3B;;cAbD;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;uHAgBA;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAEmB,KAAKd,GAAL,EAFnB;;cAAA;gBAEOC,GAFP;gBAAA;gBAAA,OAGuBA,GAAG,CAACG,eAAJ,CAAoB;kBACzCC,QAAQ,EAAE,CACT;oBACCC,IAAI,EAAE,OADP;oBAECC,OAAO,EAAE;sBACRyB,IAAI,EAAE,2BADE;sBAERvB,WAAW,EAAE;oBAFL;kBAFV,CADS;gBAD+B,CAApB,CAHvB;;cAAA;gBAGOwB,OAHP;;gBAeC/B,aAAOgC,QAAP,CAAgBD,OAAO,CAACE,KAAxB;;gBACAjC,aAAOkC,OAAP,CAAeH,OAAO,CAACE,KAAR,CAAcP,MAA7B,EAAqC,CAArC;;gBAEMS,aAlBP,GAkBuBJ,OAAO,CAACE,KAAR,CAAcG,MAAd,CACrB,UAACC,IAAD;kBAAA,OAAUA,IAAI,CAACC,MAAL,KAAgB,WAA1B;gBAAA,CADqB,CAlBvB;;gBAsBCtC,aAAOU,OAAP,CAAeyB,aAAa,CAACT,MAA7B,EAAqCK,OAAO,CAACE,KAAR,CAAcP,MAAnD;;gBAEA1B,aAAOgC,QAAP,CAAgBD,OAAO,CAACQ,iBAAxB;;gBACAvC,aAAOkC,OAAP,CAAeH,OAAO,CAACQ,iBAAR,CAA0Bb,MAAzC,EAAiD,CAAjD;;gBAEMc,WA3BP,GA2BqBT,OAAO,CAACE,KAAR,CAAcG,MAAd,CAAqB,UAACC,IAAD;kBAAA,OAAUA,IAAI,CAACP,IAAL,CAAU,CAAV,MAAiB,GAA3B;gBAAA,CAArB,CA3BrB;;gBA4BC9B,aAAOkC,OAAP,CAAeM,WAAW,CAACd,MAA3B,EAAmC,CAAnC;;gBAEA,KAAKe,0BAAL;gBACA,KAAKC,sBAAL;;cA/BD;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;WAkCA,kCAAwC;MACvC,IAAMC,GAAG,GAAG,KAAKC,OAAL,CAAa,KAAb,CAAZ;;MACA5C,aAAOgC,QAAP,CAAgBW,GAAG,CAACE,GAAJ,CAAQ,YAAR,CAAhB;;MACA7C,aAAOU,OAAP,CAAeiC,GAAG,CAACE,GAAJ,CAAQ,YAAR,CAAf,EAAsC,2BAAtC;IACA;;;;wHAED;QAAA;;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAEmB,KAAK/C,GAAL,EAFnB;;cAAA;gBAEOC,GAFP;gBAAA;gBAAA,OAGuBA,GAAG,CAACG,eAAJ,CAAoB;kBACzCC,QAAQ,EAAE,CACT;oBACCC,IAAI,EAAE,OADP;oBAECC,OAAO,EAAE;sBACRyB,IAAI,EAAE,2BADE;sBAERvB,WAAW,EAAE,iCAFL;sBAGRuC,WAAW,EAAE;oBAHL;kBAFV,CADS;gBAD+B,CAApB,CAHvB;;cAAA;gBAGOf,OAHP;;gBAgBC/B,aAAOuB,MAAP,CAAcR,2BAASS,YAAT,CAAsB,KAAKP,WAAL,CAAiB,MAAjB,CAAtB,CAAd;;gBACAjB,aAAO+C,OAAP,CAAehC,2BAASS,YAAT,CAAsB,KAAKP,WAAL,CAAiB,MAAjB,CAAtB,CAAf;;gBACAjB,aAAOuB,MAAP,CAAcR,2BAASS,YAAT,CAAsB,KAAKP,WAAL,CAAiB,MAAjB,EAAyB,MAAzB,CAAtB,CAAd;;gBACAjB,aAAO+C,OAAP,CAAehC,2BAASiC,aAAT,CAAuB,KAAK/B,WAAL,CAAiB,cAAjB,CAAvB,CAAf;;gBACAjB,aAAO+C,OAAP,CAAehC,2BAASiC,aAAT,CAAuB,KAAK/B,WAAL,CAAiB,KAAjB,CAAvB,CAAf;;gBACAjB,aAAO+C,OAAP,CAAehC,2BAASiC,aAAT,CAAuB,KAAK/B,WAAL,CAAiB,cAAjB,CAAvB,CAAf;;gBACAjB,aAAO+C,OAAP,CAAehC,2BAASiC,aAAT,CAAuB,KAAK/B,WAAL,CAAiBgC,iCAAjB,CAAvB,CAAf;;gBACAjD,aAAOuB,MAAP,CACCR,2BAASiC,aAAT,CAAuB,KAAK/B,WAAL,CAAiB,MAAjB,EAAyB,cAAzB,CAAvB,CADD;;gBAIMiC,KA3BP,qBA2BenB,OAAO,CAACE,KA3BvB,mDA2Be,eAAgB,CAAhB,CA3Bf;;gBA4BCjC,aAAOgC,QAAP,CAAgBkB,KAAhB;;gBAEAlD,aAAOa,WAAP,CAAmBqC,KAAK,CAACC,IAAzB,EAA+B,MAA/B;;cA9BD;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;WAiCA,sCAA8C;MAC7C,IAAMC,GAAG,GAAG,KAAKR,OAAL,CAAa,KAAb,CAAZ;MACA,IAAMS,eAAe,GAAGD,GAAG,CAACP,GAAJ,CAAQ,iBAAR,CAAxB;;MACA7C,aAAOgC,QAAP,CAAgBqB,eAAhB;IACA;;;EApJ2CC,4B"}
1
+ {"version":3,"file":"SettingUpASkill.test.js","names":["SettingUpASkill","test","Cli","cli","assert","doesThrowAsync","installFeatures","features","code","options","name2","description","checkHealth","health","isEqual","skill","status","doesInclude","installSkill","diskUtil","moveFile","resolvePath","fixture","FeatureFixture","installCachedFeatures","hashSpruceDir","resolveHashSprucePath","isTrue","doesDirExist","errors","length","fail","message","isEqualDeep","name","results","isTruthy","files","isAbove","generateFiles","filter","file","action","packagesInstalled","hiddenFiles","assertDevDependenciesExist","assertSkillNameIsSaved","env","Service","get","destination","isFalse","doesFileExist","HASH_SPRUCE_DIR","first","path","pkg","devDependencies","AbstractCliTest"],"sources":["../../../../src/__tests__/behavioral/skill/SettingUpASkill.test.ts"],"sourcesContent":["import { diskUtil, HASH_SPRUCE_DIR } from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test'\nimport AbstractCliTest from '../../../tests/AbstractCliTest'\n\nexport default class SettingUpASkill extends AbstractCliTest {\n\t@test()\n\tprotected static async failsWithBadParams() {\n\t\tconst cli = await this.Cli()\n\t\tawait assert.doesThrowAsync(async () => {\n\t\t\tawait cli.installFeatures({\n\t\t\t\tfeatures: [\n\t\t\t\t\t{\n\t\t\t\t\t\t// @ts-ignore\n\t\t\t\t\t\tcode: 'skill',\n\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\t// @ts-ignore\n\t\t\t\t\t\t\tname2: 'test',\n\t\t\t\t\t\t\tdescription: 'This is such a good skill!',\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}, 'name')\n\t}\n\n\t@test()\n\tprotected static async failsHealthCheckWithNothingInstalled() {\n\t\tconst cli = await this.Cli()\n\t\tconst health = await cli.checkHealth()\n\n\t\tassert.isEqual(health.skill.status, 'failed')\n\t\tassert.doesInclude(health, {\n\t\t\t'skill.errors[].options.code': 'SKILL_NOT_INSTALLED',\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async getsAFailedHealthCheckWhenIndexFileIsMoved() {\n\t\tconst cli = await this.installSkill()\n\n\t\tdiskUtil.moveFile(\n\t\t\tthis.resolvePath('src', 'index.ts'),\n\t\t\tthis.resolvePath('src', 'index2.ts')\n\t\t)\n\n\t\tconst health = await cli.checkHealth()\n\n\t\tassert.isEqual(health.skill.status, 'failed')\n\t\tassert.doesInclude(health, {\n\t\t\t'skill.errors[].options.code': 'BOOT_ERROR',\n\t\t})\n\t}\n\n\tprivate static async installSkill() {\n\t\tconst fixture = this.FeatureFixture()\n\t\tconst cli = await fixture.installCachedFeatures('skills')\n\t\treturn cli\n\t}\n\n\t@test()\n\tprotected static async getsAGoodHealthCheckAndNothingElse() {\n\t\tconst cli = await this.installSkill()\n\n\t\tconst hashSpruceDir = this.resolveHashSprucePath()\n\t\tassert.isTrue(diskUtil.doesDirExist(hashSpruceDir))\n\n\t\tconst health = await cli.checkHealth()\n\n\t\tif (health.skill?.errors && health.skill.errors.length > 0) {\n\t\t\tassert.fail(health.skill.errors?.[0].message)\n\t\t}\n\n\t\tassert.isEqualDeep(health, { skill: { status: 'passed' } })\n\t}\n\n\t@test()\n\tprotected static async reportsProperInstallResults() {\n\t\tconst cli = await this.Cli()\n\t\tconst results = await cli.installFeatures({\n\t\t\tfeatures: [\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: 'Transfer file check skill',\n\t\t\t\t\t\tdescription: 'For tracking files copied count',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t})\n\n\t\tassert.isTruthy(results.files)\n\t\tassert.isAbove(results.files.length, 0)\n\n\t\tconst generateFiles = results.files.filter(\n\t\t\t(file) => file.action === 'generated'\n\t\t)\n\n\t\tassert.isEqual(generateFiles.length, results.files.length)\n\n\t\tassert.isTruthy(results.packagesInstalled)\n\t\tassert.isAbove(results.packagesInstalled.length, 0)\n\n\t\tconst hiddenFiles = results.files.filter((file) => file.name[0] === '.')\n\t\tassert.isAbove(hiddenFiles.length, 0)\n\n\t\tthis.assertDevDependenciesExist()\n\t\tthis.assertSkillNameIsSaved()\n\t}\n\n\tprivate static assertSkillNameIsSaved() {\n\t\tconst env = this.Service('env')\n\t\tassert.isTruthy(env.get('SKILL_NAME'))\n\t\tassert.isEqual(env.get('SKILL_NAME'), 'Transfer file check skill')\n\t}\n\n\t@test()\n\tprotected static async canAcceptOptionalDestination() {\n\t\tconst cli = await this.Cli()\n\t\tconst results = await cli.installFeatures({\n\t\t\tfeatures: [\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: 'Transfer file check skill',\n\t\t\t\t\t\tdescription: 'For tracking files copied count',\n\t\t\t\t\t\tdestination: 'taco',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t],\n\t\t})\n\n\t\tassert.isTrue(diskUtil.doesDirExist(this.resolvePath('taco')))\n\t\tassert.isFalse(diskUtil.doesDirExist(this.resolvePath('.env')))\n\t\tassert.isTrue(diskUtil.doesDirExist(this.resolvePath('taco', '.env')))\n\t\tassert.isFalse(diskUtil.doesFileExist(this.resolvePath('package.json')))\n\t\tassert.isFalse(diskUtil.doesFileExist(this.resolvePath('src')))\n\t\tassert.isFalse(diskUtil.doesFileExist(this.resolvePath('node_modules')))\n\t\tassert.isFalse(diskUtil.doesFileExist(this.resolvePath(HASH_SPRUCE_DIR)))\n\t\tassert.isTrue(\n\t\t\tdiskUtil.doesFileExist(this.resolvePath('taco', 'package.json'))\n\t\t)\n\n\t\tconst first = results.files?.[0]\n\t\tassert.isTruthy(first)\n\n\t\tassert.doesInclude(first.path, 'taco')\n\t}\n\n\tprotected static assertDevDependenciesExist() {\n\t\tconst pkg = this.Service('pkg')\n\t\tconst devDependencies = pkg.get('devDependencies')\n\t\tassert.isTruthy(devDependencies)\n\t}\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"CreatingADataStore.test.js","names":["CreatingDataStoresTest","assert","isFunction","Action","execute","cli","checkHealth","shouldRunOnSourceFiles","health","isFalsy","skill","errors","isTruthy","store","isArray","stores","isLength","nameReadable","nameReadablePlural","namePascal","results","path","testUtil","assertFileByNameInGeneratedFiles","files","Service","check","file","resolveHashSprucePath","isTrue","diskUtil","doesFileExist","isEqual","name","errorAssert","assertError","storeContents","readFile","replace","writeFile","testFile","resolveTestPath","testContents","dest","resolvePath","isFalse","getAbstractTestPath","CommandService","fakeCommand","code","storesFile","deleteFile","AbstractSkillTest"],"sources":["../../../../src/__tests__/behavioral/stores/CreatingADataStore.test.ts"],"sourcesContent":["import { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test'\nimport { errorAssert } from '@sprucelabs/test-utils'\nimport '@sprucelabs/spruce-store-plugin'\nimport CommandService from '../../../services/CommandService'\nimport AbstractSkillTest from '../../../tests/AbstractSkillTest'\nimport testUtil from '../../../tests/utilities/test.utility'\n\nexport default class CreatingDataStoresTest extends AbstractSkillTest {\n\tprotected static skillCacheKey = 'stores'\n\n\t@test()\n\tprotected static async hasCreateStoreAction() {\n\t\tassert.isFunction(this.Action('store', 'create').execute)\n\t}\n\n\t@test()\n\tprotected static async getsNoStoresBackFromHealthCheck() {\n\t\tconst health = await this.cli.checkHealth({ shouldRunOnSourceFiles: true })\n\n\t\tassert.isFalsy(health.skill.errors)\n\t\t//@ts-ignore\n\t\tassert.isTruthy(health.store)\n\t\t//@ts-ignore\n\t\tassert.isFalsy(health.store.errors)\n\t\t//@ts-ignore\n\t\tassert.isArray(health.store.stores)\n\t\t//@ts-ignore\n\t\tassert.isLength(health.store.stores, 0)\n\t}\n\n\t@test()\n\tprotected static async generatesValidStoreFile() {\n\t\tconst results = await this.Action('store', 'create').execute({\n\t\t\tnameReadable: 'Person',\n\t\t\tnameReadablePlural: 'People',\n\t\t\tnamePascal: 'Person',\n\t\t})\n\n\t\tassert.isFalsy(results.errors)\n\n\t\tconst path = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'People.store.ts',\n\t\t\tresults.files\n\t\t)\n\n\t\tawait this.Service('typeChecker').check(path)\n\t}\n\n\t@test()\n\tprotected static async generatesAMapFile() {\n\t\tconst file = this.resolveHashSprucePath('stores', 'stores.ts')\n\t\tassert.isTrue(diskUtil.doesFileExist(file))\n\t\tawait this.Service('typeChecker').check(file)\n\t}\n\n\t@test()\n\tprotected static async getsOneStoresBackFromHealthCheck() {\n\t\tconst health = await this.cli.checkHealth({ shouldRunOnSourceFiles: true })\n\t\t//@ts-ignore\n\t\tassert.isTruthy(health.store)\n\t\t//@ts-ignore\n\t\tassert.isFalsy(health.store.errors)\n\t\t//@ts-ignore\n\t\tassert.isLength(health.store.stores, 1)\n\t\t//@ts-ignore\n\t\tassert.isEqual(health.store.stores[0].name, 'People')\n\t}\n\n\t@test()\n\tprotected static async canGenerateASecondStoreFile() {\n\t\tconst results = await this.Action('store', 'create').execute({\n\t\t\tnameReadable: 'Bid',\n\t\t\tnameReadablePlural: 'Bids',\n\t\t\tnamePascal: 'Bid',\n\t\t})\n\n\t\tassert.isFalsy(results.errors)\n\n\t\tconst path = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'Bids.store.ts',\n\t\t\tresults.files\n\t\t)\n\n\t\tawait this.Service('typeChecker').check(path)\n\t}\n\n\t@test()\n\tprotected static async getsSecondStoresBackFromHealthCheck() {\n\t\tconst health = await this.cli.checkHealth({ shouldRunOnSourceFiles: true })\n\n\t\t//@ts-ignore\n\t\tassert.isTruthy(health.store)\n\t\t//@ts-ignore\n\t\tassert.isFalsy(health.store.errors)\n\t\t//@ts-ignore\n\t\tassert.isLength(health.store.stores, 2)\n\t\t//@ts-ignore\n\t\tassert.isEqual(health.store.stores[0].name, 'Bids')\n\t\t//@ts-ignore\n\t\tassert.isEqual(health.store.stores[1].name, 'People')\n\t}\n\n\t@test()\n\tprotected static async errorsWhenGeneratingAStoreWithTheSameName() {\n\t\tconst results = await this.Action('store', 'create').execute({\n\t\t\tnameReadable: 'Bid',\n\t\t\tnameReadablePlural: 'Bids',\n\t\t\tnamePascal: 'Bid',\n\t\t})\n\n\t\tassert.isTruthy(results.errors)\n\t\terrorAssert.assertError(results.errors[0], 'STORE_EXISTS')\n\t}\n\n\t@test()\n\tprotected static async storeFactoryAndStoresAreTyped() {\n\t\tconst results = await this.Action('store', 'create').execute({\n\t\t\tnameReadable: 'Product',\n\t\t\tnameReadablePlural: 'Products',\n\t\t\tnamePascal: 'Product',\n\t\t})\n\n\t\tconst path = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'Products.store.ts',\n\t\t\tresults.files\n\t\t)\n\n\t\tconst storeContents = diskUtil\n\t\t\t.readFile(path)\n\t\t\t.replace(\n\t\t\t\t'type ProductsStoreOptions = UniversalStoreOptions',\n\t\t\t\t'type ProductsStoreOptions = UniversalStoreOptions & {hello: string}'\n\t\t\t)\n\n\t\tdiskUtil.writeFile(path, storeContents)\n\n\t\tconst testFile = this.resolveTestPath('store-test.ts.hbs')\n\t\tconst testContents = diskUtil.readFile(testFile)\n\n\t\tconst dest = this.resolvePath('src', 'test.ts')\n\t\tdiskUtil.writeFile(dest, testContents)\n\n\t\tawait this.Service('typeChecker').check(dest)\n\t}\n\n\t@test()\n\tprotected static async doesNotCreateAbstractTestFileBecauseTestIsNotInstalled() {\n\t\tassert.isFalse(\n\t\t\tdiskUtil.doesFileExist(CreatingDataStoresTest.getAbstractTestPath())\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async upgradeRestoresDataStoreTypes() {\n\t\tCommandService.fakeCommand('yarn rebuild', {\n\t\t\tcode: 0,\n\t\t})\n\n\t\tCommandService.fakeCommand(/yarn add/gis, {\n\t\t\tcode: 0,\n\t\t})\n\n\t\tconst storesFile = this.resolveHashSprucePath('stores/stores.types.ts')\n\t\tdiskUtil.deleteFile(storesFile)\n\t\tawait this.Action('node', 'upgrade').execute({})\n\t\tassert.isTrue(diskUtil.doesFileExist(storesFile))\n\t}\n\n\tprivate static getAbstractTestPath(): string {\n\t\treturn this.resolvePath('src', 'tests', 'AbstractDataStoreTest.ts')\n\t}\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"CreatingADataStore.test.js","names":["CreatingDataStoresTest","test","assert","isFunction","Action","execute","cli","checkHealth","shouldRunOnSourceFiles","health","isFalsy","skill","errors","isTruthy","store","isArray","stores","isLength","nameReadable","nameReadablePlural","namePascal","results","path","testUtil","assertFileByNameInGeneratedFiles","files","Service","check","file","resolveHashSprucePath","isTrue","diskUtil","doesFileExist","isEqual","name","errorAssert","assertError","storeContents","readFile","replace","writeFile","testFile","resolveTestPath","testContents","dest","resolvePath","isFalse","getAbstractTestPath","CommandService","fakeCommand","code","storesFile","deleteFile","AbstractSkillTest"],"sources":["../../../../src/__tests__/behavioral/stores/CreatingADataStore.test.ts"],"sourcesContent":["import { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test'\nimport { errorAssert } from '@sprucelabs/test-utils'\nimport '@sprucelabs/spruce-store-plugin'\nimport CommandService from '../../../services/CommandService'\nimport AbstractSkillTest from '../../../tests/AbstractSkillTest'\nimport testUtil from '../../../tests/utilities/test.utility'\n\nexport default class CreatingDataStoresTest extends AbstractSkillTest {\n\tprotected static skillCacheKey = 'stores'\n\n\t@test()\n\tprotected static async hasCreateStoreAction() {\n\t\tassert.isFunction(this.Action('store', 'create').execute)\n\t}\n\n\t@test()\n\tprotected static async getsNoStoresBackFromHealthCheck() {\n\t\tconst health = await this.cli.checkHealth({ shouldRunOnSourceFiles: true })\n\n\t\tassert.isFalsy(health.skill.errors)\n\t\t//@ts-ignore\n\t\tassert.isTruthy(health.store)\n\t\t//@ts-ignore\n\t\tassert.isFalsy(health.store.errors)\n\t\t//@ts-ignore\n\t\tassert.isArray(health.store.stores)\n\t\t//@ts-ignore\n\t\tassert.isLength(health.store.stores, 0)\n\t}\n\n\t@test()\n\tprotected static async generatesValidStoreFile() {\n\t\tconst results = await this.Action('store', 'create').execute({\n\t\t\tnameReadable: 'Person',\n\t\t\tnameReadablePlural: 'People',\n\t\t\tnamePascal: 'Person',\n\t\t})\n\n\t\tassert.isFalsy(results.errors)\n\n\t\tconst path = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'People.store.ts',\n\t\t\tresults.files\n\t\t)\n\n\t\tawait this.Service('typeChecker').check(path)\n\t}\n\n\t@test()\n\tprotected static async generatesAMapFile() {\n\t\tconst file = this.resolveHashSprucePath('stores', 'stores.ts')\n\t\tassert.isTrue(diskUtil.doesFileExist(file))\n\t\tawait this.Service('typeChecker').check(file)\n\t}\n\n\t@test()\n\tprotected static async getsOneStoresBackFromHealthCheck() {\n\t\tconst health = await this.cli.checkHealth({ shouldRunOnSourceFiles: true })\n\t\t//@ts-ignore\n\t\tassert.isTruthy(health.store)\n\t\t//@ts-ignore\n\t\tassert.isFalsy(health.store.errors)\n\t\t//@ts-ignore\n\t\tassert.isLength(health.store.stores, 1)\n\t\t//@ts-ignore\n\t\tassert.isEqual(health.store.stores[0].name, 'People')\n\t}\n\n\t@test()\n\tprotected static async canGenerateASecondStoreFile() {\n\t\tconst results = await this.Action('store', 'create').execute({\n\t\t\tnameReadable: 'Bid',\n\t\t\tnameReadablePlural: 'Bids',\n\t\t\tnamePascal: 'Bid',\n\t\t})\n\n\t\tassert.isFalsy(results.errors)\n\n\t\tconst path = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'Bids.store.ts',\n\t\t\tresults.files\n\t\t)\n\n\t\tawait this.Service('typeChecker').check(path)\n\t}\n\n\t@test()\n\tprotected static async getsSecondStoresBackFromHealthCheck() {\n\t\tconst health = await this.cli.checkHealth({ shouldRunOnSourceFiles: true })\n\n\t\t//@ts-ignore\n\t\tassert.isTruthy(health.store)\n\t\t//@ts-ignore\n\t\tassert.isFalsy(health.store.errors)\n\t\t//@ts-ignore\n\t\tassert.isLength(health.store.stores, 2)\n\t\t//@ts-ignore\n\t\tassert.isEqual(health.store.stores[0].name, 'Bids')\n\t\t//@ts-ignore\n\t\tassert.isEqual(health.store.stores[1].name, 'People')\n\t}\n\n\t@test()\n\tprotected static async errorsWhenGeneratingAStoreWithTheSameName() {\n\t\tconst results = await this.Action('store', 'create').execute({\n\t\t\tnameReadable: 'Bid',\n\t\t\tnameReadablePlural: 'Bids',\n\t\t\tnamePascal: 'Bid',\n\t\t})\n\n\t\tassert.isTruthy(results.errors)\n\t\terrorAssert.assertError(results.errors[0], 'STORE_EXISTS')\n\t}\n\n\t@test()\n\tprotected static async storeFactoryAndStoresAreTyped() {\n\t\tconst results = await this.Action('store', 'create').execute({\n\t\t\tnameReadable: 'Product',\n\t\t\tnameReadablePlural: 'Products',\n\t\t\tnamePascal: 'Product',\n\t\t})\n\n\t\tconst path = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'Products.store.ts',\n\t\t\tresults.files\n\t\t)\n\n\t\tconst storeContents = diskUtil\n\t\t\t.readFile(path)\n\t\t\t.replace(\n\t\t\t\t'type ProductsStoreOptions = UniversalStoreOptions',\n\t\t\t\t'type ProductsStoreOptions = UniversalStoreOptions & {hello: string}'\n\t\t\t)\n\n\t\tdiskUtil.writeFile(path, storeContents)\n\n\t\tconst testFile = this.resolveTestPath('store-test.ts.hbs')\n\t\tconst testContents = diskUtil.readFile(testFile)\n\n\t\tconst dest = this.resolvePath('src', 'test.ts')\n\t\tdiskUtil.writeFile(dest, testContents)\n\n\t\tawait this.Service('typeChecker').check(dest)\n\t}\n\n\t@test()\n\tprotected static async doesNotCreateAbstractTestFileBecauseTestIsNotInstalled() {\n\t\tassert.isFalse(\n\t\t\tdiskUtil.doesFileExist(CreatingDataStoresTest.getAbstractTestPath())\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async upgradeRestoresDataStoreTypes() {\n\t\tCommandService.fakeCommand('yarn rebuild', {\n\t\t\tcode: 0,\n\t\t})\n\n\t\tCommandService.fakeCommand(/yarn add/gis, {\n\t\t\tcode: 0,\n\t\t})\n\n\t\tconst storesFile = this.resolveHashSprucePath('stores/stores.types.ts')\n\t\tdiskUtil.deleteFile(storesFile)\n\t\tawait this.Action('node', 'upgrade').execute({})\n\t\tassert.isTrue(diskUtil.doesFileExist(storesFile))\n\t}\n\n\tprivate static getAbstractTestPath(): string {\n\t\treturn this.resolvePath('src', 'tests', 'AbstractDataStoreTest.ts')\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;;;IAEqBA,sB,WAGnB,IAAAC,UAAA,G,UAKA,IAAAA,UAAA,G,UAeA,IAAAA,UAAA,G,UAkBA,IAAAA,UAAA,G,UAOA,IAAAA,UAAA,G,UAaA,IAAAA,UAAA,G,UAkBA,IAAAA,UAAA,G,UAgBA,IAAAA,UAAA,G,UAYA,IAAAA,UAAA,G,WA+BA,IAAAA,UAAA,G,WAOA,IAAAA,UAAA,G;;;;;;;;;;;;;gHA9ID;QAAA;UAAA;YAAA;cAAA;gBAECC,YAAA,CAAOC,UAAP,CAAkB,KAAKC,MAAL,CAAY,OAAZ,EAAqB,QAArB,EAA+BC,OAAjD;;cAFD;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;2HAKA;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAEsB,KAAKC,GAAL,CAASC,WAAT,CAAqB;kBAAEC,sBAAsB,EAAE;gBAA1B,CAArB,CAFtB;;cAAA;gBAEOC,MAFP;;gBAICP,YAAA,CAAOQ,OAAP,CAAeD,MAAM,CAACE,KAAP,CAAaC,MAA5B,EAJD,CAKC;;;gBACAV,YAAA,CAAOW,QAAP,CAAgBJ,MAAM,CAACK,KAAvB,EAND,CAOC;;;gBACAZ,YAAA,CAAOQ,OAAP,CAAeD,MAAM,CAACK,KAAP,CAAaF,MAA5B,EARD,CASC;;;gBACAV,YAAA,CAAOa,OAAP,CAAeN,MAAM,CAACK,KAAP,CAAaE,MAA5B,EAVD,CAWC;;;gBACAd,YAAA,CAAOe,QAAP,CAAgBR,MAAM,CAACK,KAAP,CAAaE,MAA7B,EAAqC,CAArC;;cAZD;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;mHAeA;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAEuB,KAAKZ,MAAL,CAAY,OAAZ,EAAqB,QAArB,EAA+BC,OAA/B,CAAuC;kBAC5Da,YAAY,EAAE,QAD8C;kBAE5DC,kBAAkB,EAAE,QAFwC;kBAG5DC,UAAU,EAAE;gBAHgD,CAAvC,CAFvB;;cAAA;gBAEOC,OAFP;;gBAQCnB,YAAA,CAAOQ,OAAP,CAAeW,OAAO,CAACT,MAAvB;;gBAEMU,IAVP,GAUcC,iBAAA,CAASC,gCAAT,CACZ,iBADY,EAEZH,OAAO,CAACI,KAFI,CAVd;gBAAA;gBAAA,OAeO,KAAKC,OAAL,CAAa,aAAb,EAA4BC,KAA5B,CAAkCL,IAAlC,CAfP;;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;6GAkBA;QAAA;QAAA;UAAA;YAAA;cAAA;gBAEOM,IAFP,GAEc,KAAKC,qBAAL,CAA2B,QAA3B,EAAqC,WAArC,CAFd;;gBAGC3B,YAAA,CAAO4B,MAAP,CAAcC,0BAAA,CAASC,aAAT,CAAuBJ,IAAvB,CAAd;;gBAHD;gBAAA,OAIO,KAAKF,OAAL,CAAa,aAAb,EAA4BC,KAA5B,CAAkCC,IAAlC,CAJP;;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;4HAOA;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAEsB,KAAKtB,GAAL,CAASC,WAAT,CAAqB;kBAAEC,sBAAsB,EAAE;gBAA1B,CAArB,CAFtB;;cAAA;gBAEOC,MAFP;;gBAGC;gBACAP,YAAA,CAAOW,QAAP,CAAgBJ,MAAM,CAACK,KAAvB,EAJD,CAKC;;;gBACAZ,YAAA,CAAOQ,OAAP,CAAeD,MAAM,CAACK,KAAP,CAAaF,MAA5B,EAND,CAOC;;;gBACAV,YAAA,CAAOe,QAAP,CAAgBR,MAAM,CAACK,KAAP,CAAaE,MAA7B,EAAqC,CAArC,EARD,CASC;;;gBACAd,YAAA,CAAO+B,OAAP,CAAexB,MAAM,CAACK,KAAP,CAAaE,MAAb,CAAoB,CAApB,EAAuBkB,IAAtC,EAA4C,QAA5C;;cAVD;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;uHAaA;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAEuB,KAAK9B,MAAL,CAAY,OAAZ,EAAqB,QAArB,EAA+BC,OAA/B,CAAuC;kBAC5Da,YAAY,EAAE,KAD8C;kBAE5DC,kBAAkB,EAAE,MAFwC;kBAG5DC,UAAU,EAAE;gBAHgD,CAAvC,CAFvB;;cAAA;gBAEOC,OAFP;;gBAQCnB,YAAA,CAAOQ,OAAP,CAAeW,OAAO,CAACT,MAAvB;;gBAEMU,IAVP,GAUcC,iBAAA,CAASC,gCAAT,CACZ,eADY,EAEZH,OAAO,CAACI,KAFI,CAVd;gBAAA;gBAAA,OAeO,KAAKC,OAAL,CAAa,aAAb,EAA4BC,KAA5B,CAAkCL,IAAlC,CAfP;;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;+HAkBA;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAEsB,KAAKhB,GAAL,CAASC,WAAT,CAAqB;kBAAEC,sBAAsB,EAAE;gBAA1B,CAArB,CAFtB;;cAAA;gBAEOC,MAFP;;gBAIC;gBACAP,YAAA,CAAOW,QAAP,CAAgBJ,MAAM,CAACK,KAAvB,EALD,CAMC;;;gBACAZ,YAAA,CAAOQ,OAAP,CAAeD,MAAM,CAACK,KAAP,CAAaF,MAA5B,EAPD,CAQC;;;gBACAV,YAAA,CAAOe,QAAP,CAAgBR,MAAM,CAACK,KAAP,CAAaE,MAA7B,EAAqC,CAArC,EATD,CAUC;;;gBACAd,YAAA,CAAO+B,OAAP,CAAexB,MAAM,CAACK,KAAP,CAAaE,MAAb,CAAoB,CAApB,EAAuBkB,IAAtC,EAA4C,MAA5C,EAXD,CAYC;;;gBACAhC,YAAA,CAAO+B,OAAP,CAAexB,MAAM,CAACK,KAAP,CAAaE,MAAb,CAAoB,CAApB,EAAuBkB,IAAtC,EAA4C,QAA5C;;cAbD;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;qIAgBA;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAEuB,KAAK9B,MAAL,CAAY,OAAZ,EAAqB,QAArB,EAA+BC,OAA/B,CAAuC;kBAC5Da,YAAY,EAAE,KAD8C;kBAE5DC,kBAAkB,EAAE,MAFwC;kBAG5DC,UAAU,EAAE;gBAHgD,CAAvC,CAFvB;;cAAA;gBAEOC,OAFP;;gBAQCnB,YAAA,CAAOW,QAAP,CAAgBQ,OAAO,CAACT,MAAxB;;gBACAuB,sBAAA,CAAYC,WAAZ,CAAwBf,OAAO,CAACT,MAAR,CAAe,CAAf,CAAxB,EAA2C,cAA3C;;cATD;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;yHAYA;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAEuB,KAAKR,MAAL,CAAY,OAAZ,EAAqB,QAArB,EAA+BC,OAA/B,CAAuC;kBAC5Da,YAAY,EAAE,SAD8C;kBAE5DC,kBAAkB,EAAE,UAFwC;kBAG5DC,UAAU,EAAE;gBAHgD,CAAvC,CAFvB;;cAAA;gBAEOC,OAFP;gBAQOC,IARP,GAQcC,iBAAA,CAASC,gCAAT,CACZ,mBADY,EAEZH,OAAO,CAACI,KAFI,CARd;gBAaOY,aAbP,GAauBN,0BAAA,CACpBO,QADoB,CACXhB,IADW,EAEpBiB,OAFoB,CAGpB,mDAHoB,EAIpB,qEAJoB,CAbvB;;gBAoBCR,0BAAA,CAASS,SAAT,CAAmBlB,IAAnB,EAAyBe,aAAzB;;gBAEMI,QAtBP,GAsBkB,KAAKC,eAAL,CAAqB,mBAArB,CAtBlB;gBAuBOC,YAvBP,GAuBsBZ,0BAAA,CAASO,QAAT,CAAkBG,QAAlB,CAvBtB;gBAyBOG,IAzBP,GAyBc,KAAKC,WAAL,CAAiB,KAAjB,EAAwB,SAAxB,CAzBd;;gBA0BCd,0BAAA,CAASS,SAAT,CAAmBI,IAAnB,EAAyBD,YAAzB;;gBA1BD;gBAAA,OA4BO,KAAKjB,OAAL,CAAa,aAAb,EAA4BC,KAA5B,CAAkCiB,IAAlC,CA5BP;;cAAA;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;kJA+BA;QAAA;UAAA;YAAA;cAAA;gBAEC1C,YAAA,CAAO4C,OAAP,CACCf,0BAAA,CAASC,aAAT,CAAuBhC,sBAAsB,CAAC+C,mBAAvB,EAAvB,CADD;;cAFD;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;yHAOA;QAAA;QAAA;UAAA;YAAA;cAAA;gBAECC,0BAAA,CAAeC,WAAf,CAA2B,cAA3B,EAA2C;kBAC1CC,IAAI,EAAE;gBADoC,CAA3C;;gBAIAF,0BAAA,CAAeC,WAAf,CAA2B,YAA3B,EAA0C;kBACzCC,IAAI,EAAE;gBADmC,CAA1C;;gBAIMC,UAVP,GAUoB,KAAKtB,qBAAL,CAA2B,wBAA3B,CAVpB;;gBAWCE,0BAAA,CAASqB,UAAT,CAAoBD,UAApB;;gBAXD;gBAAA,OAYO,KAAK/C,MAAL,CAAY,MAAZ,EAAoB,SAApB,EAA+BC,OAA/B,CAAuC,EAAvC,CAZP;;cAAA;gBAaCH,YAAA,CAAO4B,MAAP,CAAcC,0BAAA,CAASC,aAAT,CAAuBmB,UAAvB,CAAd;;cAbD;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;WAgBA,+BAA6C;MAC5C,OAAO,KAAKN,WAAL,CAAiB,KAAjB,EAAwB,OAAxB,EAAiC,0BAAjC,CAAP;IACA;;;EAnKkDQ,8B,8DAClB,Q"}
@@ -1 +1 @@
1
- {"version":3,"file":"KeepingDataStoresInSync.test.js","names":["KeepingDataStoresInSyncTest","badStoreDest","resolvePath","diskUtil","deleteFile","assert","isFunction","Action","execute","syncStores","results","isLength","files","writeFile","isArray","errors","errorAssert","assertError","file","nameReadable","nameReadablePlural","namePascal","validateFiles","typesFile","testUtil","assertFileByNameInGeneratedFiles","mapFile","Promise","all","Service","check","AbstractSkillTest"],"sources":["../../../../src/__tests__/behavioral/stores/KeepingDataStoresInSync.test.ts"],"sourcesContent":["import { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test'\nimport { errorAssert } from '@sprucelabs/test-utils'\nimport { FeatureActionResponse } from '../../../features/features.types'\nimport AbstractSkillTest from '../../../tests/AbstractSkillTest'\nimport testUtil from '../../../tests/utilities/test.utility'\n\nexport default class KeepingDataStoresInSyncTest extends AbstractSkillTest {\n\tprotected static skillCacheKey = 'stores'\n\tprotected static badStoreDest: string\n\tprotected static async beforeAll() {\n\t\tawait super.beforeAll()\n\t\tthis.badStoreDest = this.resolvePath('src/stores/Bad.store.ts')\n\t}\n\n\tprotected static async beforeEach() {\n\t\tawait super.beforeEach()\n\t\tdiskUtil.deleteFile(this.badStoreDest)\n\t}\n\n\t@test()\n\tprotected static async hasSyncAction() {\n\t\tassert.isFunction(this.Action('store', 'sync').execute)\n\t}\n\n\t@test()\n\tprotected static async syncsNothingToStart() {\n\t\tconst results = await this.syncStores()\n\n\t\tassert.isLength(results.files, 0)\n\t}\n\n\t@test()\n\tprotected static async badFileReturnsError() {\n\t\tdiskUtil.writeFile(this.badStoreDest, 'throw new Error(\"Cheese!\")')\n\n\t\tconst results = await this.syncStores()\n\t\tassert.isArray(results.errors)\n\t\tassert.isLength(results.errors, 1)\n\n\t\terrorAssert.assertError(results.errors[0], 'FAILED_TO_IMPORT', {\n\t\t\tfile: 'Bad.store.ts',\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async generatesValidTypeFile() {\n\t\tconst results = await this.Action('store', 'create').execute({\n\t\t\tnameReadable: 'Bid',\n\t\t\tnameReadablePlural: 'Bids',\n\t\t\tnamePascal: 'Bid',\n\t\t})\n\n\t\tawait this.validateFiles(results)\n\t}\n\n\t@test()\n\tprotected static async fileIsValidAfterSync() {\n\t\tconst results = await this.syncStores()\n\n\t\tawait this.validateFiles(results)\n\t}\n\n\t@test()\n\tprotected static async canAddSecondStore() {\n\t\tconst results = await this.Action('store', 'create').execute({\n\t\t\tnameReadable: 'Person',\n\t\t\tnameReadablePlural: 'People',\n\t\t\tnamePascal: 'Person',\n\t\t})\n\n\t\tawait this.validateFiles(results)\n\t}\n\n\tprivate static async validateFiles(results: FeatureActionResponse) {\n\t\tconst typesFile = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'stores.types.ts',\n\t\t\tresults.files\n\t\t)\n\n\t\tconst mapFile = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'stores.ts',\n\t\t\tresults.files\n\t\t)\n\n\t\tawait Promise.all([\n\t\t\tthis.Service('typeChecker').check(typesFile),\n\t\t\tthis.Service('typeChecker').check(mapFile),\n\t\t])\n\t}\n\n\tprivate static async syncStores() {\n\t\treturn this.Action('store', 'sync').execute({})\n\t}\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"KeepingDataStoresInSync.test.js","names":["KeepingDataStoresInSyncTest","test","badStoreDest","resolvePath","diskUtil","deleteFile","assert","isFunction","Action","execute","syncStores","results","isLength","files","writeFile","isArray","errors","errorAssert","assertError","file","nameReadable","nameReadablePlural","namePascal","validateFiles","typesFile","testUtil","assertFileByNameInGeneratedFiles","mapFile","Promise","all","Service","check","AbstractSkillTest"],"sources":["../../../../src/__tests__/behavioral/stores/KeepingDataStoresInSync.test.ts"],"sourcesContent":["import { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test'\nimport { errorAssert } from '@sprucelabs/test-utils'\nimport { FeatureActionResponse } from '../../../features/features.types'\nimport AbstractSkillTest from '../../../tests/AbstractSkillTest'\nimport testUtil from '../../../tests/utilities/test.utility'\n\nexport default class KeepingDataStoresInSyncTest extends AbstractSkillTest {\n\tprotected static skillCacheKey = 'stores'\n\tprotected static badStoreDest: string\n\tprotected static async beforeAll() {\n\t\tawait super.beforeAll()\n\t\tthis.badStoreDest = this.resolvePath('src/stores/Bad.store.ts')\n\t}\n\n\tprotected static async beforeEach() {\n\t\tawait super.beforeEach()\n\t\tdiskUtil.deleteFile(this.badStoreDest)\n\t}\n\n\t@test()\n\tprotected static async hasSyncAction() {\n\t\tassert.isFunction(this.Action('store', 'sync').execute)\n\t}\n\n\t@test()\n\tprotected static async syncsNothingToStart() {\n\t\tconst results = await this.syncStores()\n\n\t\tassert.isLength(results.files, 0)\n\t}\n\n\t@test()\n\tprotected static async badFileReturnsError() {\n\t\tdiskUtil.writeFile(this.badStoreDest, 'throw new Error(\"Cheese!\")')\n\n\t\tconst results = await this.syncStores()\n\t\tassert.isArray(results.errors)\n\t\tassert.isLength(results.errors, 1)\n\n\t\terrorAssert.assertError(results.errors[0], 'FAILED_TO_IMPORT', {\n\t\t\tfile: 'Bad.store.ts',\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async generatesValidTypeFile() {\n\t\tconst results = await this.Action('store', 'create').execute({\n\t\t\tnameReadable: 'Bid',\n\t\t\tnameReadablePlural: 'Bids',\n\t\t\tnamePascal: 'Bid',\n\t\t})\n\n\t\tawait this.validateFiles(results)\n\t}\n\n\t@test()\n\tprotected static async fileIsValidAfterSync() {\n\t\tconst results = await this.syncStores()\n\n\t\tawait this.validateFiles(results)\n\t}\n\n\t@test()\n\tprotected static async canAddSecondStore() {\n\t\tconst results = await this.Action('store', 'create').execute({\n\t\t\tnameReadable: 'Person',\n\t\t\tnameReadablePlural: 'People',\n\t\t\tnamePascal: 'Person',\n\t\t})\n\n\t\tawait this.validateFiles(results)\n\t}\n\n\tprivate static async validateFiles(results: FeatureActionResponse) {\n\t\tconst typesFile = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'stores.types.ts',\n\t\t\tresults.files\n\t\t)\n\n\t\tconst mapFile = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'stores.ts',\n\t\t\tresults.files\n\t\t)\n\n\t\tawait Promise.all([\n\t\t\tthis.Service('typeChecker').check(typesFile),\n\t\t\tthis.Service('typeChecker').check(mapFile),\n\t\t])\n\t}\n\n\tprivate static async syncStores() {\n\t\treturn this.Action('store', 'sync').execute({})\n\t}\n}\n"],"mappings":"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"}
@@ -213,7 +213,7 @@ var CreatingBehavioralTestsTest = (_dec = (0, _test.test)(), _dec2 = (0, _test.t
213
213
  key: "listsManyDirsIfExistInsideTestDir",
214
214
  value: function () {
215
215
  var _listsManyDirsIfExistInsideTestDir = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee5() {
216
- var dirs, _i, _dirs, dir, _yield$this$installAn2, promise, _i2, _dirs2, _dir;
216
+ var dirs, _i, _dirs, dir, _yield$this$installAn2, promise, _i2, _dirs2;
217
217
 
218
218
  return _regenerator["default"].wrap(function _callee5$(_context5) {
219
219
  while (1) {
@@ -238,9 +238,9 @@ var CreatingBehavioralTestsTest = (_dec = (0, _test.test)(), _dec2 = (0, _test.t
238
238
  promise = _yield$this$installAn2.promise;
239
239
 
240
240
  for (_i2 = 0, _dirs2 = dirs; _i2 < _dirs2.length; _i2++) {
241
- _dir = _dirs2[_i2];
241
+ dir = _dirs2[_i2];
242
242
 
243
- _uiAssert["default"].assertSelectRenderChoice(this.ui, "".concat(_dir), "behavioral/".concat(_dir));
243
+ _uiAssert["default"].assertSelectRenderChoice(this.ui, "".concat(dir), "behavioral/".concat(dir));
244
244
  }
245
245
 
246
246
  _context5.next = 11;
@@ -1 +1 @@
1
- {"version":3,"file":"CreatingATest.test.js","names":["CreatingBehavioralTestsTest","assert","isFunction","Action","execute","installTests","testFeature","getFeatureInstaller","getFeature","buildParentClassCandidates","candidates","doesInclude","label","name","testName","LintService","enableLinting","createTestAndGetFile","match","Service","build","doesThrowAsync","testType","createTestSubDir","installAndStartTestActionAndWaitForInput","promise","uiAssert","assertSelectRenderChoice","ui","sendInput","waitAndSelectSubClass","dirs","dir","dirName","results","expectedPath","resolvePath","isEqual","files","path","file","resolveTestDir","diskUtil","writeFile","assertSelectDidNotRenderChoice","reset","testFile","contents","readFile","newDir","createDir","testDirs","selectOptionBasedOnLabel","response","type","nameReadable","nameCamel","namePascal","waitForInput","selectedSubClass","createTest","testUtil","assertFileByNameInGeneratedFiles","AbstractTestTest"],"sources":["../../../../src/__tests__/behavioral/tests/CreatingATest.test.ts"],"sourcesContent":["import { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test'\nimport LintService from '../../../services/LintService'\nimport AbstractTestTest from '../../../tests/AbstractTestTest'\nimport testUtil from '../../../tests/utilities/test.utility'\nimport uiAssert from '../../../tests/utilities/uiAssert.utility'\n\nexport default class CreatingBehavioralTestsTest extends AbstractTestTest {\n\t@test()\n\tprotected static async hasCreateAction() {\n\t\tassert.isFunction(this.Action('test', 'create').execute)\n\t}\n\n\t@test()\n\tprotected static async requiresInstallIfFeatureNotInstalled() {\n\t\tawait this.installTests('testsInNodeModule')\n\n\t\tconst testFeature = this.getFeatureInstaller().getFeature('test')\n\t\tconst candidates = await testFeature.buildParentClassCandidates()\n\n\t\tassert.doesInclude(candidates, {\n\t\t\tlabel: 'AbstractSpruceFixtureTest (requires install)',\n\t\t\tname: 'AbstractSpruceFixtureTest',\n\t\t})\n\t}\n\n\t@test(\n\t\t'can create behavioral test with AbstractSpruceFixtureTest',\n\t\t'AbstractSpruceFixtureTest'\n\t)\n\t@test(\n\t\t'can create behavioral test with AbstractStoreTest',\n\t\t'AbstractStoreTest (requires install)'\n\t)\n\tprotected static async canCreateBehavioralTest(testName: string) {\n\t\tLintService.enableLinting()\n\t\tconst match = await this.createTestAndGetFile(testName)\n\n\t\tassert.doesInclude(match, 'behavioral')\n\n\t\tawait this.Service('build').build()\n\n\t\tawait assert.doesThrowAsync(\n\t\t\t() => this.Service('command').execute('yarn test'),\n\t\t\t/false.*?does not equal.*?true/gis\n\t\t)\n\t}\n\n\t@test('finds folders inside behavioral', 'behavioral')\n\t@test('finds folders inside implementation', 'implementation')\n\tprotected static async promptsToSelectFolderIfInsideTestDir(\n\t\ttestType: string\n\t) {\n\t\tawait this.installTests()\n\n\t\tthis.createTestSubDir(testType, 'dummy1')\n\n\t\tconst { promise } = await this.installAndStartTestActionAndWaitForInput(\n\t\t\ttestType\n\t\t)\n\n\t\tuiAssert.assertSelectRenderChoice(this.ui, '.', testType)\n\t\tuiAssert.assertSelectRenderChoice(this.ui, `dummy1`, `${testType}/dummy1`)\n\n\t\tawait this.ui.sendInput('.')\n\t\tawait this.waitAndSelectSubClass()\n\n\t\tawait promise\n\t}\n\n\t@test()\n\tprotected static async listsManyDirsIfExistInsideTestDir() {\n\t\tawait this.installTests()\n\n\t\tconst dirs = ['dir1', 'dir2', 'dir3']\n\n\t\tfor (const dir of dirs) {\n\t\t\tthis.createTestSubDir('behavioral', dir)\n\t\t}\n\n\t\tconst { promise } = await this.installAndStartTestActionAndWaitForInput()\n\n\t\tfor (const dir of dirs) {\n\t\t\tuiAssert.assertSelectRenderChoice(this.ui, `${dir}`, `behavioral/${dir}`)\n\t\t}\n\n\t\tawait this.ui.sendInput('.')\n\n\t\tawait this.waitAndSelectSubClass()\n\n\t\tawait promise\n\t}\n\n\t@test('can select sub dir 1', 'test')\n\t@test('can select sub dir 2', 'test-2')\n\tprotected static async selectingAnOptionRendersToSubDir(dirName: string) {\n\t\tawait this.installTests()\n\t\tthis.createTestSubDir('behavioral', dirName)\n\n\t\tconst { promise } = await this.installAndStartTestActionAndWaitForInput(\n\t\t\t'behavioral'\n\t\t)\n\n\t\tawait this.ui.sendInput(`${dirName}`)\n\n\t\tawait this.waitAndSelectSubClass()\n\n\t\tconst results = await promise\n\n\t\tconst expectedPath = this.resolvePath(\n\t\t\t'src',\n\t\t\t'__tests__',\n\t\t\t'behavioral',\n\t\t\tdirName,\n\t\t\t'CanBookAppointment.test.ts'\n\t\t)\n\n\t\tassert.isEqual(expectedPath, results.files?.[0]?.path)\n\t}\n\n\t@test()\n\tprotected static async doesNotListFiles() {\n\t\tawait this.installTests()\n\t\tthis.createTestSubDir('behavioral', 'subdir')\n\n\t\tconst file = this.resolveTestDir('behavioral', 'test.ts')\n\t\tdiskUtil.writeFile(file, 'what the!?')\n\n\t\tawait this.installAndStartTestActionAndWaitForInput()\n\n\t\tuiAssert.assertSelectDidNotRenderChoice(\n\t\t\tthis.ui,\n\t\t\t'test',\n\t\t\t`behavioral/test/test.ts`\n\t\t)\n\n\t\tthis.ui.reset()\n\t}\n\n\t@test()\n\tprotected static async allTestsComeFakedToStart() {\n\t\tconst testFile = await this.createTestAndGetFile()\n\t\tconst contents = diskUtil.readFile(testFile)\n\t\tassert.doesInclude(contents, 'fake.login()')\n\t}\n\n\tprivate static createTestSubDir(...testDirs: string[]) {\n\t\tconst newDir = this.resolveTestDir(...testDirs)\n\t\tdiskUtil.createDir(newDir)\n\t}\n\n\tprivate static resolveTestDir(...testDirs: string[]) {\n\t\treturn this.resolvePath('src', '__tests__', ...testDirs)\n\t}\n\n\tprivate static async createTest(testName = 'AbstractSpruceFixtureTest') {\n\t\tconst { promise } = await this.installAndStartTestActionAndWaitForInput()\n\n\t\tthis.selectOptionBasedOnLabel(testName)\n\n\t\tconst response = await promise\n\t\treturn response\n\t}\n\n\tprivate static async installAndStartTestActionAndWaitForInput(\n\t\ttestType = 'behavioral'\n\t) {\n\t\tawait this.installTests()\n\t\tconst promise = this.Action('test', 'create').execute({\n\t\t\ttype: testType,\n\t\t\tnameReadable: 'Can book appointment',\n\t\t\tnameCamel: 'canBookAppointment',\n\t\t\tnamePascal: 'CanBookAppointment',\n\t\t})\n\n\t\tawait this.waitForInput()\n\t\treturn { promise }\n\t}\n\n\tprivate static async waitAndSelectSubClass(selectedSubClass?: string) {\n\t\tawait this.waitForInput()\n\t\tawait this.ui.sendInput(selectedSubClass ?? '')\n\t}\n\n\tprivate static async createTestAndGetFile(testName?: string) {\n\t\tconst response = await this.createTest(testName)\n\n\t\tconst match = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'CanBookAppointment.test.ts',\n\t\t\tresponse.files\n\t\t)\n\t\treturn match\n\t}\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"CreatingATest.test.js","names":["CreatingBehavioralTestsTest","test","assert","isFunction","Action","execute","installTests","testFeature","getFeatureInstaller","getFeature","buildParentClassCandidates","candidates","doesInclude","label","name","testName","LintService","enableLinting","createTestAndGetFile","match","Service","build","doesThrowAsync","testType","createTestSubDir","installAndStartTestActionAndWaitForInput","promise","uiAssert","assertSelectRenderChoice","ui","sendInput","waitAndSelectSubClass","dirs","dir","dirName","results","expectedPath","resolvePath","isEqual","files","path","file","resolveTestDir","diskUtil","writeFile","assertSelectDidNotRenderChoice","reset","testFile","contents","readFile","newDir","createDir","testDirs","selectOptionBasedOnLabel","response","type","nameReadable","nameCamel","namePascal","waitForInput","selectedSubClass","createTest","testUtil","assertFileByNameInGeneratedFiles","AbstractTestTest"],"sources":["../../../../src/__tests__/behavioral/tests/CreatingATest.test.ts"],"sourcesContent":["import { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test'\nimport LintService from '../../../services/LintService'\nimport AbstractTestTest from '../../../tests/AbstractTestTest'\nimport testUtil from '../../../tests/utilities/test.utility'\nimport uiAssert from '../../../tests/utilities/uiAssert.utility'\n\nexport default class CreatingBehavioralTestsTest extends AbstractTestTest {\n\t@test()\n\tprotected static async hasCreateAction() {\n\t\tassert.isFunction(this.Action('test', 'create').execute)\n\t}\n\n\t@test()\n\tprotected static async requiresInstallIfFeatureNotInstalled() {\n\t\tawait this.installTests('testsInNodeModule')\n\n\t\tconst testFeature = this.getFeatureInstaller().getFeature('test')\n\t\tconst candidates = await testFeature.buildParentClassCandidates()\n\n\t\tassert.doesInclude(candidates, {\n\t\t\tlabel: 'AbstractSpruceFixtureTest (requires install)',\n\t\t\tname: 'AbstractSpruceFixtureTest',\n\t\t})\n\t}\n\n\t@test(\n\t\t'can create behavioral test with AbstractSpruceFixtureTest',\n\t\t'AbstractSpruceFixtureTest'\n\t)\n\t@test(\n\t\t'can create behavioral test with AbstractStoreTest',\n\t\t'AbstractStoreTest (requires install)'\n\t)\n\tprotected static async canCreateBehavioralTest(testName: string) {\n\t\tLintService.enableLinting()\n\t\tconst match = await this.createTestAndGetFile(testName)\n\n\t\tassert.doesInclude(match, 'behavioral')\n\n\t\tawait this.Service('build').build()\n\n\t\tawait assert.doesThrowAsync(\n\t\t\t() => this.Service('command').execute('yarn test'),\n\t\t\t/false.*?does not equal.*?true/gis\n\t\t)\n\t}\n\n\t@test('finds folders inside behavioral', 'behavioral')\n\t@test('finds folders inside implementation', 'implementation')\n\tprotected static async promptsToSelectFolderIfInsideTestDir(\n\t\ttestType: string\n\t) {\n\t\tawait this.installTests()\n\n\t\tthis.createTestSubDir(testType, 'dummy1')\n\n\t\tconst { promise } = await this.installAndStartTestActionAndWaitForInput(\n\t\t\ttestType\n\t\t)\n\n\t\tuiAssert.assertSelectRenderChoice(this.ui, '.', testType)\n\t\tuiAssert.assertSelectRenderChoice(this.ui, `dummy1`, `${testType}/dummy1`)\n\n\t\tawait this.ui.sendInput('.')\n\t\tawait this.waitAndSelectSubClass()\n\n\t\tawait promise\n\t}\n\n\t@test()\n\tprotected static async listsManyDirsIfExistInsideTestDir() {\n\t\tawait this.installTests()\n\n\t\tconst dirs = ['dir1', 'dir2', 'dir3']\n\n\t\tfor (const dir of dirs) {\n\t\t\tthis.createTestSubDir('behavioral', dir)\n\t\t}\n\n\t\tconst { promise } = await this.installAndStartTestActionAndWaitForInput()\n\n\t\tfor (const dir of dirs) {\n\t\t\tuiAssert.assertSelectRenderChoice(this.ui, `${dir}`, `behavioral/${dir}`)\n\t\t}\n\n\t\tawait this.ui.sendInput('.')\n\n\t\tawait this.waitAndSelectSubClass()\n\n\t\tawait promise\n\t}\n\n\t@test('can select sub dir 1', 'test')\n\t@test('can select sub dir 2', 'test-2')\n\tprotected static async selectingAnOptionRendersToSubDir(dirName: string) {\n\t\tawait this.installTests()\n\t\tthis.createTestSubDir('behavioral', dirName)\n\n\t\tconst { promise } = await this.installAndStartTestActionAndWaitForInput(\n\t\t\t'behavioral'\n\t\t)\n\n\t\tawait this.ui.sendInput(`${dirName}`)\n\n\t\tawait this.waitAndSelectSubClass()\n\n\t\tconst results = await promise\n\n\t\tconst expectedPath = this.resolvePath(\n\t\t\t'src',\n\t\t\t'__tests__',\n\t\t\t'behavioral',\n\t\t\tdirName,\n\t\t\t'CanBookAppointment.test.ts'\n\t\t)\n\n\t\tassert.isEqual(expectedPath, results.files?.[0]?.path)\n\t}\n\n\t@test()\n\tprotected static async doesNotListFiles() {\n\t\tawait this.installTests()\n\t\tthis.createTestSubDir('behavioral', 'subdir')\n\n\t\tconst file = this.resolveTestDir('behavioral', 'test.ts')\n\t\tdiskUtil.writeFile(file, 'what the!?')\n\n\t\tawait this.installAndStartTestActionAndWaitForInput()\n\n\t\tuiAssert.assertSelectDidNotRenderChoice(\n\t\t\tthis.ui,\n\t\t\t'test',\n\t\t\t`behavioral/test/test.ts`\n\t\t)\n\n\t\tthis.ui.reset()\n\t}\n\n\t@test()\n\tprotected static async allTestsComeFakedToStart() {\n\t\tconst testFile = await this.createTestAndGetFile()\n\t\tconst contents = diskUtil.readFile(testFile)\n\t\tassert.doesInclude(contents, 'fake.login()')\n\t}\n\n\tprivate static createTestSubDir(...testDirs: string[]) {\n\t\tconst newDir = this.resolveTestDir(...testDirs)\n\t\tdiskUtil.createDir(newDir)\n\t}\n\n\tprivate static resolveTestDir(...testDirs: string[]) {\n\t\treturn this.resolvePath('src', '__tests__', ...testDirs)\n\t}\n\n\tprivate static async createTest(testName = 'AbstractSpruceFixtureTest') {\n\t\tconst { promise } = await this.installAndStartTestActionAndWaitForInput()\n\n\t\tthis.selectOptionBasedOnLabel(testName)\n\n\t\tconst response = await promise\n\t\treturn response\n\t}\n\n\tprivate static async installAndStartTestActionAndWaitForInput(\n\t\ttestType = 'behavioral'\n\t) {\n\t\tawait this.installTests()\n\t\tconst promise = this.Action('test', 'create').execute({\n\t\t\ttype: testType,\n\t\t\tnameReadable: 'Can book appointment',\n\t\t\tnameCamel: 'canBookAppointment',\n\t\t\tnamePascal: 'CanBookAppointment',\n\t\t})\n\n\t\tawait this.waitForInput()\n\t\treturn { promise }\n\t}\n\n\tprivate static async waitAndSelectSubClass(selectedSubClass?: string) {\n\t\tawait this.waitForInput()\n\t\tawait this.ui.sendInput(selectedSubClass ?? '')\n\t}\n\n\tprivate static async createTestAndGetFile(testName?: string) {\n\t\tconst response = await this.createTest(testName)\n\n\t\tconst match = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'CanBookAppointment.test.ts',\n\t\t\tresponse.files\n\t\t)\n\t\treturn match\n\t}\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"RunningTests.test.js","names":["RunningTestsTest","Cli","assert","isFunction","Action","execute","installTests","creationPromise","type","nameReadable","nameCamel","namePascal","waitForInput","ui","sendInput","creationResults","file","files","isTruthy","fixBadTest","path","promise","Service","build","shouldReportWhileRunning","results","errors","isLength","errorAssert","assertError","meta","testResults","doesInclude","wasKilled","totalTestFiles","totalTestFilesComplete","totalFailed","totalPassed","totalSkipped","totalTests","totalTodo","AbstractTestTest"],"sources":["../../../../src/__tests__/behavioral/tests/RunningTests.test.ts"],"sourcesContent":["import { test, assert } from '@sprucelabs/test'\nimport { errorAssert } from '@sprucelabs/test-utils'\nimport AbstractTestTest from '../../../tests/AbstractTestTest'\n\nexport default class RunningTestsTest extends AbstractTestTest {\n\t@test()\n\tprotected static async hasTestAction() {\n\t\tawait this.Cli()\n\t\tassert.isFunction(this.Action('test', 'test').execute)\n\t}\n\n\t@test()\n\tprotected static async runningTestsActuallyRunsTests() {\n\t\tawait this.installTests()\n\t\tconst creationPromise = this.Action('test', 'create').execute({\n\t\t\ttype: 'behavioral',\n\t\t\tnameReadable: 'Can book appointment',\n\t\t\tnameCamel: 'canBookAppointment',\n\t\t\tnamePascal: 'CanBookAppointment',\n\t\t})\n\n\t\tawait this.waitForInput()\n\t\tawait this.ui.sendInput('')\n\n\t\tconst creationResults = await creationPromise\n\n\t\tconst file = creationResults.files?.[0]\n\t\tassert.isTruthy(file)\n\n\t\tthis.fixBadTest(file.path)\n\n\t\tconst promise = this.Action('test', 'create').execute({\n\t\t\ttype: 'behavioral',\n\t\t\tnameReadable: 'Can cancel appointment',\n\t\t\tnameCamel: 'canCancelAppointment',\n\t\t\tnamePascal: 'CanCancelAppointment',\n\t\t})\n\n\t\tawait this.waitForInput()\n\t\tawait this.ui.sendInput('')\n\n\t\tawait promise\n\n\t\tawait this.Service('build').build()\n\n\t\tconst results = await this.Action('test', 'test').execute({\n\t\t\tshouldReportWhileRunning: false,\n\t\t})\n\n\t\tassert.isTruthy(results.errors)\n\t\tassert.isLength(results.errors, 1)\n\n\t\terrorAssert.assertError(results.errors[0], 'TEST_FAILED')\n\n\t\tassert.isTruthy(results.meta)\n\t\tassert.isTruthy(results.meta?.testResults)\n\n\t\tassert.doesInclude(results.meta?.testResults, {\n\t\t\twasKilled: false,\n\t\t\ttotalTestFiles: 2,\n\t\t\ttotalTestFilesComplete: 2,\n\t\t\ttotalFailed: 1,\n\t\t\ttotalPassed: 3,\n\t\t\ttotalSkipped: 0,\n\t\t\ttotalTests: 4,\n\t\t\ttotalTodo: 0,\n\t\t})\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;;;;;;;IAEqBA,gB,WACnB,iB,UAMA,iB;;;;;;;;;;;;;yGAND;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAEO,KAAKC,GAAL,EAFP;;cAAA;gBAGCC,aAAOC,UAAP,CAAkB,KAAKC,MAAL,CAAY,MAAZ,EAAoB,MAApB,EAA4BC,OAA9C;;cAHD;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;;yHAMA;QAAA;;QAAA;QAAA;UAAA;YAAA;cAAA;gBAAA;gBAAA,OAEO,KAAKC,YAAL,EAFP;;cAAA;gBAGOC,eAHP,GAGyB,KAAKH,MAAL,CAAY,MAAZ,EAAoB,QAApB,EAA8BC,OAA9B,CAAsC;kBAC7DG,IAAI,EAAE,YADuD;kBAE7DC,YAAY,EAAE,sBAF+C;kBAG7DC,SAAS,EAAE,oBAHkD;kBAI7DC,UAAU,EAAE;gBAJiD,CAAtC,CAHzB;gBAAA;gBAAA,OAUO,KAAKC,YAAL,EAVP;;cAAA;gBAAA;gBAAA,OAWO,KAAKC,EAAL,CAAQC,SAAR,CAAkB,EAAlB,CAXP;;cAAA;gBAAA;gBAAA,OAa+BP,eAb/B;;cAAA;gBAaOQ,eAbP;gBAeOC,IAfP,4BAecD,eAAe,CAACE,KAf9B,0DAec,sBAAwB,CAAxB,CAfd;;gBAgBCf,aAAOgB,QAAP,CAAgBF,IAAhB;;gBAEA,KAAKG,UAAL,CAAgBH,IAAI,CAACI,IAArB;gBAEMC,OApBP,GAoBiB,KAAKjB,MAAL,CAAY,MAAZ,EAAoB,QAApB,EAA8BC,OAA9B,CAAsC;kBACrDG,IAAI,EAAE,YAD+C;kBAErDC,YAAY,EAAE,wBAFuC;kBAGrDC,SAAS,EAAE,sBAH0C;kBAIrDC,UAAU,EAAE;gBAJyC,CAAtC,CApBjB;gBAAA;gBAAA,OA2BO,KAAKC,YAAL,EA3BP;;cAAA;gBAAA;gBAAA,OA4BO,KAAKC,EAAL,CAAQC,SAAR,CAAkB,EAAlB,CA5BP;;cAAA;gBAAA;gBAAA,OA8BOO,OA9BP;;cAAA;gBAAA;gBAAA,OAgCO,KAAKC,OAAL,CAAa,OAAb,EAAsBC,KAAtB,EAhCP;;cAAA;gBAAA;gBAAA,OAkCuB,KAAKnB,MAAL,CAAY,MAAZ,EAAoB,MAApB,EAA4BC,OAA5B,CAAoC;kBACzDmB,wBAAwB,EAAE;gBAD+B,CAApC,CAlCvB;;cAAA;gBAkCOC,OAlCP;;gBAsCCvB,aAAOgB,QAAP,CAAgBO,OAAO,CAACC,MAAxB;;gBACAxB,aAAOyB,QAAP,CAAgBF,OAAO,CAACC,MAAxB,EAAgC,CAAhC;;gBAEAE,uBAAYC,WAAZ,CAAwBJ,OAAO,CAACC,MAAR,CAAe,CAAf,CAAxB,EAA2C,aAA3C;;gBAEAxB,aAAOgB,QAAP,CAAgBO,OAAO,CAACK,IAAxB;;gBACA5B,aAAOgB,QAAP,kBAAgBO,OAAO,CAACK,IAAxB,kDAAgB,cAAcC,WAA9B;;gBAEA7B,aAAO8B,WAAP,mBAAmBP,OAAO,CAACK,IAA3B,mDAAmB,eAAcC,WAAjC,EAA8C;kBAC7CE,SAAS,EAAE,KADkC;kBAE7CC,cAAc,EAAE,CAF6B;kBAG7CC,sBAAsB,EAAE,CAHqB;kBAI7CC,WAAW,EAAE,CAJgC;kBAK7CC,WAAW,EAAE,CALgC;kBAM7CC,YAAY,EAAE,CAN+B;kBAO7CC,UAAU,EAAE,CAPiC;kBAQ7CC,SAAS,EAAE;gBARkC,CAA9C;;cA9CD;cAAA;gBAAA;YAAA;UAAA;QAAA;MAAA,C;;;;;;;;;;EAP6CC,6B"}
1
+ {"version":3,"file":"RunningTests.test.js","names":["RunningTestsTest","test","Cli","assert","isFunction","Action","execute","installTests","creationPromise","type","nameReadable","nameCamel","namePascal","waitForInput","ui","sendInput","creationResults","file","files","isTruthy","fixBadTest","path","promise","Service","build","shouldReportWhileRunning","results","errors","isLength","errorAssert","assertError","meta","testResults","doesInclude","wasKilled","totalTestFiles","totalTestFilesComplete","totalFailed","totalPassed","totalSkipped","totalTests","totalTodo","AbstractTestTest"],"sources":["../../../../src/__tests__/behavioral/tests/RunningTests.test.ts"],"sourcesContent":["import { test, assert } from '@sprucelabs/test'\nimport { errorAssert } from '@sprucelabs/test-utils'\nimport AbstractTestTest from '../../../tests/AbstractTestTest'\n\nexport default class RunningTestsTest extends AbstractTestTest {\n\t@test()\n\tprotected static async hasTestAction() {\n\t\tawait this.Cli()\n\t\tassert.isFunction(this.Action('test', 'test').execute)\n\t}\n\n\t@test()\n\tprotected static async runningTestsActuallyRunsTests() {\n\t\tawait this.installTests()\n\t\tconst creationPromise = this.Action('test', 'create').execute({\n\t\t\ttype: 'behavioral',\n\t\t\tnameReadable: 'Can book appointment',\n\t\t\tnameCamel: 'canBookAppointment',\n\t\t\tnamePascal: 'CanBookAppointment',\n\t\t})\n\n\t\tawait this.waitForInput()\n\t\tawait this.ui.sendInput('')\n\n\t\tconst creationResults = await creationPromise\n\n\t\tconst file = creationResults.files?.[0]\n\t\tassert.isTruthy(file)\n\n\t\tthis.fixBadTest(file.path)\n\n\t\tconst promise = this.Action('test', 'create').execute({\n\t\t\ttype: 'behavioral',\n\t\t\tnameReadable: 'Can cancel appointment',\n\t\t\tnameCamel: 'canCancelAppointment',\n\t\t\tnamePascal: 'CanCancelAppointment',\n\t\t})\n\n\t\tawait this.waitForInput()\n\t\tawait this.ui.sendInput('')\n\n\t\tawait promise\n\n\t\tawait this.Service('build').build()\n\n\t\tconst results = await this.Action('test', 'test').execute({\n\t\t\tshouldReportWhileRunning: false,\n\t\t})\n\n\t\tassert.isTruthy(results.errors)\n\t\tassert.isLength(results.errors, 1)\n\n\t\terrorAssert.assertError(results.errors[0], 'TEST_FAILED')\n\n\t\tassert.isTruthy(results.meta)\n\t\tassert.isTruthy(results.meta?.testResults)\n\n\t\tassert.doesInclude(results.meta?.testResults, {\n\t\t\twasKilled: false,\n\t\t\ttotalTestFiles: 2,\n\t\t\ttotalTestFilesComplete: 2,\n\t\t\ttotalFailed: 1,\n\t\t\ttotalPassed: 3,\n\t\t\ttotalSkipped: 0,\n\t\t\ttotalTests: 4,\n\t\t\ttotalTodo: 0,\n\t\t})\n\t}\n}\n"],"mappings":"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"}