UNPKG

@sprucelabs/spruce-cli

Version:

Command line interface for building Spruce skills.

195 lines • 9.38 kB
"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const spruce_event_utils_1 = require("@sprucelabs/spruce-event-utils"); const spruce_skill_utils_1 = require("@sprucelabs/spruce-skill-utils"); const test_utils_1 = require("@sprucelabs/test-utils"); const SyncAction_1 = __importDefault(require("../../../features/error/actions/SyncAction")); const UpdateDependenciesAction_1 = __importDefault(require("../../../features/node/actions/UpdateDependenciesAction")); const CommandService_1 = __importDefault(require("../../../services/CommandService")); const AbstractCliTest_1 = __importDefault(require("../../../tests/AbstractCliTest")); const test_utility_1 = __importDefault(require("../../../tests/utilities/test.utility")); class UpgradingASkill3Test extends AbstractCliTest_1.default { static originalErrorSyncExecute; static async beforeEach() { if (!this.originalErrorSyncExecute) { this.originalErrorSyncExecute = SyncAction_1.default.prototype.execute; } else { SyncAction_1.default.prototype.execute = this.originalErrorSyncExecute; } await super.beforeEach(); CommandService_1.default.fakeCommand(new RegExp(/yarn rebuild/gis), { code: 0, }); } static async resolvePathAliasesToProductionAfterUpgrade() { CommandService_1.default.clearFakedResponses(); await this.FeatureFixture().installCachedFeatures('views'); await this.Action('node', 'upgrade').execute({}); const dependencies = this.Service('pkg').get('dependencies'); test_utils_1.assert.isFalsy(dependencies['@sprucelabs/resolve-path-aliases']); } static async featuresNotEnabledDontInstall() { CommandService_1.default.clearFakedResponses(); await this.FeatureFixture().installCachedFeatures('schemas'); const results = await this.Action('node', 'upgrade').execute({}); const dependencies = this.Service('pkg').get('dependencies'); test_utils_1.assert.isFalsy(dependencies['@sprucelabs/heartwood-view-controllers']); test_utils_1.assert.doesThrow(() => test_utility_1.default.assertFileByNameInGeneratedFiles('events.contract.ts', results.files)); this.assertViewPluginNotWritten(); } static async upgradingSkillSyncsEvents() { await this.FeatureFixture().installCachedFeatures('events'); const results = await this.Action('node', 'upgrade').execute({}); const events = spruce_event_utils_1.eventDiskUtil.resolveCombinedEventsContractFile(this.cwd); test_utils_1.assert.isTrue(spruce_skill_utils_1.diskUtil.doesFileExist(events)); test_utility_1.default.assertFileByNameInGeneratedFiles('events.contract.ts', results.files); } static async upgradeCallsUpdateDependencies() { await this.FeatureFixture().installCachedFeatures('skills'); UpdateDependenciesAction_1.default.prototype.execute = () => { throw new Error('baaaaad'); }; const results = await this.Action('node', 'upgrade').execute({}); test_utils_1.assert.isTruthy(results.errors); test_utils_1.assert.doesInclude(results.errors[0].message, 'baaaaad'); } static async callsCleanFixAndBuildDev() { await this.FeatureFixture().installCachedFeatures('skills'); let wasCleanBuildCalled = false; UpdateDependenciesAction_1.default.prototype.execute = async () => { return {}; }; CommandService_1.default.fakeCommand('yarn clean.build', { code: 0, callback: () => { wasCleanBuildCalled = true; }, }); let wasBuildDevCalled = false; CommandService_1.default.fakeCommand('yarn build.dev', { code: 0, callback: () => { wasBuildDevCalled = true; }, }); const results = await this.Action('node', 'upgrade').execute({}); test_utils_1.assert.isFalsy(results.errors); test_utils_1.assert.isTrue(wasCleanBuildCalled); test_utils_1.assert.isTrue(wasBuildDevCalled); } static async writesViewPlugin() { await this.FeatureFixture().installCachedFeatures('views'); const plugin = this.getViewsPluginPath(); test_utils_1.assert.isTrue(spruce_skill_utils_1.diskUtil.doesFileExist(plugin)); spruce_skill_utils_1.diskUtil.deleteFile(plugin); test_utils_1.assert.isFalse(spruce_skill_utils_1.diskUtil.doesFileExist(plugin)); await this.Action('node', 'upgrade').execute({}); test_utils_1.assert.isTrue(spruce_skill_utils_1.diskUtil.doesFileExist(plugin)); } static async upgradeSyncsErrors(isInstalled = true) { await this.FeatureFixture().installCachedFeatures(isInstalled ? 'errors' : 'schemas'); let wasHit = false; SyncAction_1.default.prototype.execute = async () => { wasHit = true; return {}; }; this.disableCleanBuildAndYarnAdd(); await this.Action('node', 'upgrade').execute({}); test_utils_1.assert.isEqual(wasHit, isInstalled); } static async resetsErrorPluginInSkill() { await this.FeatureFixture().installCachedFeatures('skills'); const { plugin, expectedContents } = this.destroyErrorPlugin(); await this.disableCleanBuildAndYarnAdd(); const promise = this.Action('node', 'upgrade').execute({ upgradeMode: 'askForChanged', }); await this.waitForInput(); await this.ui.sendInput('overwrite'); await promise; const actualContents = spruce_skill_utils_1.diskUtil.readFile(plugin); test_utils_1.assert.isEqual(actualContents, expectedContents); } static async resetsErrorPluginWhenErrorInstalled() { await this.FeatureFixture().installCachedFeatures('errors'); await this.Action('error', 'create').execute({ nameReadable: 'Test pass', nameCamel: 'testPass', }); const { plugin, expectedContents } = this.destroyErrorPlugin(); this.disableCleanAndBuild(); const results = await this.Action('node', 'upgrade').execute({ upgradeMode: 'askForChanged', }); test_utils_1.assert.isFalsy(results.errors); const actualContents = spruce_skill_utils_1.diskUtil.readFile(plugin); test_utils_1.assert.isEqual(actualContents, expectedContents); } static destroyErrorPlugin() { const plugin = this.resolveHashSprucePath('errors', 'options.types.ts'); const expectedContents = spruce_skill_utils_1.diskUtil.readFile(plugin); spruce_skill_utils_1.diskUtil.writeFile(plugin, 'waka'); return { plugin, expectedContents }; } static getViewsPluginPath() { debugger; return this.resolveHashSprucePath('features', 'view.plugin.ts'); } static assertViewPluginNotWritten() { test_utils_1.assert.isFalse(spruce_skill_utils_1.diskUtil.doesFileExist(this.getViewsPluginPath())); } static disableCleanBuildAndYarnAdd() { this.disableCleanAndBuild(); CommandService_1.default.fakeCommand(/yarn.*?add/gis, { code: 0, }); } static disableCleanAndBuild() { CommandService_1.default.fakeCommand('yarn clean.build', { code: 0, }); CommandService_1.default.fakeCommand('yarn build.dev', { code: 0, }); } } exports.default = UpgradingASkill3Test; __decorate([ (0, test_utils_1.test)() ], UpgradingASkill3Test, "resolvePathAliasesToProductionAfterUpgrade", null); __decorate([ (0, test_utils_1.test)() ], UpgradingASkill3Test, "featuresNotEnabledDontInstall", null); __decorate([ (0, test_utils_1.test)() ], UpgradingASkill3Test, "upgradingSkillSyncsEvents", null); __decorate([ (0, test_utils_1.test)() ], UpgradingASkill3Test, "upgradeCallsUpdateDependencies", null); __decorate([ (0, test_utils_1.test)() ], UpgradingASkill3Test, "callsCleanFixAndBuildDev", null); __decorate([ (0, test_utils_1.test)() ], UpgradingASkill3Test, "writesViewPlugin", null); __decorate([ (0, test_utils_1.test)('sync with errors installed'), (0, test_utils_1.test)('sync with errors not installed', false) ], UpgradingASkill3Test, "upgradeSyncsErrors", null); __decorate([ (0, test_utils_1.test)() ], UpgradingASkill3Test, "resetsErrorPluginInSkill", null); __decorate([ (0, test_utils_1.test)() ], UpgradingASkill3Test, "resetsErrorPluginWhenErrorInstalled", null); //# sourceMappingURL=UpgradingASkill3.test.js.map