@sprucelabs/spruce-cli
Version:
Command line interface for building Spruce skills.
137 lines • 5.66 kB
JavaScript
;
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_skill_utils_1 = require("@sprucelabs/spruce-skill-utils");
const test_utils_1 = require("@sprucelabs/test-utils");
const VersionResolver_1 = __importDefault(require("../../../features/VersionResolver"));
const AbstractSkillTest_1 = __importDefault(require("../../../tests/AbstractSkillTest"));
class ResolvingVersionsTest extends AbstractSkillTest_1.default {
static skillCacheKey = 'skills';
static pkg;
static versions;
static async beforeEach() {
await super.beforeEach();
this.pkg = this.Service('pkg');
this.versions = VersionResolver_1.default.Resolver(this.ui, this.pkg);
}
static async afterEach() {
this.ui.reset();
await super.afterEach();
}
static async throwsWhenMissingRequired() {
//@ts-ignore
const err = test_utils_1.assert.doesThrow(() => VersionResolver_1.default.Resolver());
test_utils_1.errorAssert.assertError(err, 'MISSING_PARAMETERS', {
parameters: ['ui', 'pkg'],
});
}
static async addsVersionToThePackageJson() {
const version = await this.resolveVersion();
this.assertSavedVersionEquals(version);
}
static async addsVersionToPackageJsonWhenChoosingDifferentVersion() {
const version = await this.resolveVersion('v2023_09_16');
this.assertSavedVersionEquals(version);
}
static async addsVersionFromPackageJsonWhenChoosingDifferentVersion() {
await this.resolveAndAssertChoices([
this.newVersionChoice,
this.buildVersionChoice('v2023_09_16'),
]);
}
static async doesNotAddVersionToChoicesIfDirMatchesVersion() {
this.createVersionDir('v2023_09_16');
await this.resolveAndAssertChoices([
this.newVersionChoice,
this.buildVersionChoice('v2023_09_16'),
]);
}
static async addsVersionChoiceIfVersionInPackageJsonIsDifferent() {
this.pkg.set({
path: 'skill.version',
value: 'v2200_01_01',
});
await this.resolveAndAssertChoices([
this.newVersionChoice,
this.buildVersionChoice('v2200_01_01'),
this.buildVersionChoice('v2023_09_16'),
]);
}
static async doesNotAddVersionChoiceIfSecondDirNameMatches() {
this.createVersionDir('v2200_01_01');
await this.resolveAndAssertChoices([
this.newVersionChoice,
this.buildVersionChoice('v2200_01_01'),
this.buildVersionChoice('v2023_09_16'),
]);
}
static async resolveAndAssertChoices(expected) {
await this.resolveAndWaitForInput();
this.assertChoices(expected);
}
static assertChoices(expected) {
test_utils_1.assert.isEqualDeep(this.choices, expected);
}
static buildVersionChoice(version) {
return {
label: version,
value: version,
};
}
static createVersionDir(version) {
const path = this.resolvePath('src', version);
spruce_skill_utils_1.diskUtil.createDir(path);
}
static get newVersionChoice() {
return {
label: 'New Version',
value: spruce_skill_utils_1.versionUtil.generateVersion().dirValue,
};
}
static async resolveAndWaitForInput() {
void this.resolveVersion();
await this.ui.waitForInput();
}
static get choices() {
const { options } = this.ui.getLastInvocation();
const choices = options.options.choices;
return choices;
}
static async resolveVersion(userSuppliedVersion) {
return await this.versions.resolveVersion(this.resolvePath('src'), userSuppliedVersion);
}
static assertSavedVersionEquals(version) {
test_utils_1.assert.isEqual(this.pkg.get(['skill', 'version']), version, `The version in the package.json does not match the resolved version`);
}
}
exports.default = ResolvingVersionsTest;
__decorate([
(0, test_utils_1.test)()
], ResolvingVersionsTest, "throwsWhenMissingRequired", null);
__decorate([
(0, test_utils_1.test)()
], ResolvingVersionsTest, "addsVersionToThePackageJson", null);
__decorate([
(0, test_utils_1.test)()
], ResolvingVersionsTest, "addsVersionToPackageJsonWhenChoosingDifferentVersion", null);
__decorate([
(0, test_utils_1.test)()
], ResolvingVersionsTest, "addsVersionFromPackageJsonWhenChoosingDifferentVersion", null);
__decorate([
(0, test_utils_1.test)()
], ResolvingVersionsTest, "doesNotAddVersionToChoicesIfDirMatchesVersion", null);
__decorate([
(0, test_utils_1.test)()
], ResolvingVersionsTest, "addsVersionChoiceIfVersionInPackageJsonIsDifferent", null);
__decorate([
(0, test_utils_1.test)()
], ResolvingVersionsTest, "doesNotAddVersionChoiceIfSecondDirNameMatches", null);
//# sourceMappingURL=ResolvingVersions.test.js.map