@sprucelabs/spruce-cli 14.29.30 → 14.29.31
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.
- package/CHANGELOG.md +8 -0
- package/build/__tests__/behavioral/ListeningToCoreEvents.test.d.ts +6 -0
- package/build/__tests__/behavioral/ListeningToCoreEvents.test.js +128 -0
- package/build/__tests__/behavioral/ListeningToCoreEvents.test.js.map +1 -0
- package/build/__tests__/behavioral/schemas/CreatingANewSchemaBuilder.test.js +1 -1
- package/build/__tests__/behavioral/schemas/CreatingANewSchemaBuilder.test.js.map +1 -1
- package/build/features/event/actions/ListenAction.d.ts +4 -0
- package/build/features/event/actions/ListenAction.js +228 -127
- package/build/features/event/actions/ListenAction.js.map +1 -1
- package/build/features/event/writers/EventWriter.d.ts +1 -3
- package/build/features/event/writers/EventWriter.js +20 -14
- package/build/features/event/writers/EventWriter.js.map +1 -1
- package/build/interfaces/SpyInterface.js +1 -1
- package/build/interfaces/SpyInterface.js.map +1 -1
- package/build/templateItemBuilders/EventTemplateItemBuilder.js +2 -1
- package/build/templateItemBuilders/EventTemplateItemBuilder.js.map +1 -1
- package/package.json +17 -17
- package/src/__tests__/behavioral/ListeningToCoreEvents.test.ts +26 -0
- package/src/__tests__/behavioral/schemas/CreatingANewSchemaBuilder.test.ts +1 -1
- package/src/features/event/actions/ListenAction.ts +111 -58
- package/src/features/event/writers/EventWriter.ts +21 -35
- package/src/interfaces/SpyInterface.ts +3 -1
- package/src/templateItemBuilders/EventTemplateItemBuilder.ts +3 -0
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,14 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [14.29.31](https://github.com/sprucelabsai/spruce-cli-workspace/compare/v14.29.30...v14.29.31) (2022-01-13)
|
|
7
|
+
|
|
8
|
+
**Note:** Version bump only for package @sprucelabs/spruce-cli
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
6
14
|
## [14.29.30](https://github.com/sprucelabsai/spruce-cli-workspace/compare/v14.29.29...v14.29.30) (2022-01-12)
|
|
7
15
|
|
|
8
16
|
**Note:** Version bump only for package @sprucelabs/spruce-cli
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import AbstractSkillTest from '../../tests/AbstractSkillTest';
|
|
2
|
+
export default class ListeningToCoreEventsTest extends AbstractSkillTest {
|
|
3
|
+
protected static skillCacheKey: string;
|
|
4
|
+
protected static canListenToDidInstallWithoutErroring(): Promise<void>;
|
|
5
|
+
protected static canBootASkillWithACoreListener(): Promise<void>;
|
|
6
|
+
}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports["default"] = void 0;
|
|
9
|
+
|
|
10
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
11
|
+
|
|
12
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
13
|
+
|
|
14
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
15
|
+
|
|
16
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
17
|
+
|
|
18
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
19
|
+
|
|
20
|
+
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
21
|
+
|
|
22
|
+
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
23
|
+
|
|
24
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
25
|
+
|
|
26
|
+
var _applyDecoratedDescriptor2 = _interopRequireDefault(require("@babel/runtime/helpers/applyDecoratedDescriptor"));
|
|
27
|
+
|
|
28
|
+
var _test = require("@sprucelabs/test");
|
|
29
|
+
|
|
30
|
+
var _AbstractSkillTest2 = _interopRequireDefault(require("../../tests/AbstractSkillTest"));
|
|
31
|
+
|
|
32
|
+
var _dec, _dec2, _class, _class2, _temp;
|
|
33
|
+
|
|
34
|
+
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
|
|
35
|
+
|
|
36
|
+
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
37
|
+
|
|
38
|
+
var ListeningToCoreEventsTest = (_dec = (0, _test.test)(), _dec2 = (0, _test.test)(), (_class = (_temp = _class2 = /*#__PURE__*/function (_AbstractSkillTest) {
|
|
39
|
+
(0, _inherits2["default"])(ListeningToCoreEventsTest, _AbstractSkillTest);
|
|
40
|
+
|
|
41
|
+
var _super = _createSuper(ListeningToCoreEventsTest);
|
|
42
|
+
|
|
43
|
+
function ListeningToCoreEventsTest() {
|
|
44
|
+
(0, _classCallCheck2["default"])(this, ListeningToCoreEventsTest);
|
|
45
|
+
return _super.apply(this, arguments);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
(0, _createClass2["default"])(ListeningToCoreEventsTest, null, [{
|
|
49
|
+
key: "canListenToDidInstallWithoutErroring",
|
|
50
|
+
value: function () {
|
|
51
|
+
var _canListenToDidInstallWithoutErroring = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
|
|
52
|
+
var _results$errors;
|
|
53
|
+
|
|
54
|
+
var results;
|
|
55
|
+
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
56
|
+
while (1) {
|
|
57
|
+
switch (_context.prev = _context.next) {
|
|
58
|
+
case 0:
|
|
59
|
+
_context.next = 2;
|
|
60
|
+
return this.Action('event', 'listen').execute({
|
|
61
|
+
eventName: 'did-install',
|
|
62
|
+
namespace: 'mercury',
|
|
63
|
+
version: 'v2020_12_25'
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
case 2:
|
|
67
|
+
results = _context.sent;
|
|
68
|
+
|
|
69
|
+
_test.assert.isFalsy((_results$errors = results.errors) === null || _results$errors === void 0 ? void 0 : _results$errors[0]);
|
|
70
|
+
|
|
71
|
+
case 4:
|
|
72
|
+
case "end":
|
|
73
|
+
return _context.stop();
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}, _callee, this);
|
|
77
|
+
}));
|
|
78
|
+
|
|
79
|
+
function canListenToDidInstallWithoutErroring() {
|
|
80
|
+
return _canListenToDidInstallWithoutErroring.apply(this, arguments);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
return canListenToDidInstallWithoutErroring;
|
|
84
|
+
}()
|
|
85
|
+
}, {
|
|
86
|
+
key: "canBootASkillWithACoreListener",
|
|
87
|
+
value: function () {
|
|
88
|
+
var _canBootASkillWithACoreListener = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
|
|
89
|
+
var response;
|
|
90
|
+
return _regenerator["default"].wrap(function _callee2$(_context2) {
|
|
91
|
+
while (1) {
|
|
92
|
+
switch (_context2.prev = _context2.next) {
|
|
93
|
+
case 0:
|
|
94
|
+
_context2.next = 2;
|
|
95
|
+
return this.getSkillFixture().registerCurrentSkill({
|
|
96
|
+
name: 'global listen test'
|
|
97
|
+
});
|
|
98
|
+
|
|
99
|
+
case 2:
|
|
100
|
+
_context2.next = 4;
|
|
101
|
+
return this.Action('skill', 'boot').execute({
|
|
102
|
+
local: true
|
|
103
|
+
});
|
|
104
|
+
|
|
105
|
+
case 4:
|
|
106
|
+
response = _context2.sent;
|
|
107
|
+
|
|
108
|
+
_test.assert.isFalsy(response.errors);
|
|
109
|
+
|
|
110
|
+
case 6:
|
|
111
|
+
case "end":
|
|
112
|
+
return _context2.stop();
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}, _callee2, this);
|
|
116
|
+
}));
|
|
117
|
+
|
|
118
|
+
function canBootASkillWithACoreListener() {
|
|
119
|
+
return _canBootASkillWithACoreListener.apply(this, arguments);
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
return canBootASkillWithACoreListener;
|
|
123
|
+
}()
|
|
124
|
+
}]);
|
|
125
|
+
return ListeningToCoreEventsTest;
|
|
126
|
+
}(_AbstractSkillTest2["default"]), (0, _defineProperty2["default"])(_class2, "skillCacheKey", 'events'), _temp), ((0, _applyDecoratedDescriptor2["default"])(_class, "canListenToDidInstallWithoutErroring", [_dec], Object.getOwnPropertyDescriptor(_class, "canListenToDidInstallWithoutErroring"), _class), (0, _applyDecoratedDescriptor2["default"])(_class, "canBootASkillWithACoreListener", [_dec2], Object.getOwnPropertyDescriptor(_class, "canBootASkillWithACoreListener"), _class)), _class));
|
|
127
|
+
exports["default"] = ListeningToCoreEventsTest;
|
|
128
|
+
//# sourceMappingURL=ListeningToCoreEvents.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/__tests__/behavioral/ListeningToCoreEvents.test.ts"],"names":["ListeningToCoreEventsTest","Action","execute","eventName","namespace","version","results","assert","isFalsy","errors","getSkillFixture","registerCurrentSkill","name","local","response","AbstractSkillTest"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;;;;;;;IAEqBA,yB,WAGnB,iB,UAWA,iB;;;;;;;;;;;;;gIAXD;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAEuB,KAAKC,MAAL,CAAY,OAAZ,EAAqB,QAArB,EAA+BC,OAA/B,CAAuC;AAC5DC,kBAAAA,SAAS,EAAE,aADiD;AAE5DC,kBAAAA,SAAS,EAAE,SAFiD;AAG5DC,kBAAAA,OAAO,EAAE;AAHmD,iBAAvC,CAFvB;;AAAA;AAEOC,gBAAAA,OAFP;;AAQCC,6BAAOC,OAAP,oBAAeF,OAAO,CAACG,MAAvB,oDAAe,gBAAiB,CAAjB,CAAf;;AARD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;0HAWA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAEO,KAAKC,eAAL,GAAuBC,oBAAvB,CAA4C;AACjDC,kBAAAA,IAAI,EAAE;AAD2C,iBAA5C,CAFP;;AAAA;AAAA;AAAA,uBAKwB,KAAKX,MAAL,CAAY,OAAZ,EAAqB,MAArB,EAA6BC,OAA7B,CAAqC;AAAEW,kBAAAA,KAAK,EAAE;AAAT,iBAArC,CALxB;;AAAA;AAKOC,gBAAAA,QALP;;AAMCP,6BAAOC,OAAP,CAAeM,QAAQ,CAACL,MAAxB;;AAND;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;EAdsDM,8B,8DACrB,Q","sourcesContent":["import { test, assert } from '@sprucelabs/test'\nimport AbstractSkillTest from '../../tests/AbstractSkillTest'\n\nexport default class ListeningToCoreEventsTest extends AbstractSkillTest {\n\tprotected static skillCacheKey = 'events'\n\n\t@test()\n\tprotected static async canListenToDidInstallWithoutErroring() {\n\t\tconst results = await this.Action('event', 'listen').execute({\n\t\t\teventName: 'did-install',\n\t\t\tnamespace: 'mercury',\n\t\t\tversion: 'v2020_12_25',\n\t\t})\n\n\t\tassert.isFalsy(results.errors?.[0])\n\t}\n\n\t@test()\n\tprotected static async canBootASkillWithACoreListener() {\n\t\tawait this.getSkillFixture().registerCurrentSkill({\n\t\t\tname: 'global listen test',\n\t\t})\n\t\tconst response = await this.Action('skill', 'boot').execute({ local: true })\n\t\tassert.isFalsy(response.errors)\n\t}\n}\n"],"file":"ListeningToCoreEvents.test.js"}
|
|
@@ -419,7 +419,7 @@ var CreatingANewSchemaBuilderTest = (_dec = (0, _test.test)(), _dec2 = (0, _test
|
|
|
419
419
|
}
|
|
420
420
|
|
|
421
421
|
return assertAnswersFirstTime;
|
|
422
|
-
}() // should only have 2 options, none of which
|
|
422
|
+
}() // should only have 2 options, none of which are "new version" since that was created in secondAnswers
|
|
423
423
|
|
|
424
424
|
}, {
|
|
425
425
|
key: "assertAnswersSecondTime",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/__tests__/behavioral/schemas/CreatingANewSchemaBuilder.test.ts"],"names":["CreatingANewSchemaBuilderTest","Cli","assert","doesThrowAsync","Action","execute","nameReadable","namePascal","nameCamel","description","err","errorAssertUtil","assertError","syncSchemasAndGetCreateAction","createSchema","response","isFalsy","errors","expectedDestination","versionUtil","resolveNewLatestPath","cwd","isEqual","files","path","cacheKey","syncSchemas","buildTestSchema","checker","Service","check","schemaTypesFile","builderMatch","testUtil","assertFileByNameInGeneratedFiles","schemaMatch","schemaContents","diskUtil","readFile","doesInclude","action","version","results","isTruthy","message","firstResponse","validateSchemaFiles","secondResponse","newVersion","generateVersion","assertAnswersFirstTime","assertAnswersSecondTime","createPromise","wait","last","ui","invocations","length","command","isLength","options","choices","isEqualDeep","value","dirValue","label","sendInput","term","createResults","expectedFileName","expectedVersion","expectedSchemaInterfaceName","isUndefined","schemaFile","fail","friendlyMessage","RegExp","AbstractSchemaTest"],"mappings":"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","sourcesContent":["import { versionUtil } from '@sprucelabs/spruce-skill-utils'\nimport { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test'\nimport { errorAssertUtil } from '@sprucelabs/test-utils'\nimport {\n\tFeatureActionResponse,\n\tFeatureAction,\n} from '../../../features/features.types'\nimport SpyInterface from '../../../interfaces/SpyInterface'\nimport AbstractSchemaTest from '../../../tests/AbstractSchemaTest'\nimport testUtil from '../../../tests/utilities/test.utility'\n\nexport default class CreatingANewSchemaBuilderTest extends AbstractSchemaTest {\n\t@test()\n\tprotected static async failsWhenASkillIsNotInstalled() {\n\t\tawait this.Cli()\n\t\tconst err = await assert.doesThrowAsync(() =>\n\t\t\tthis.Action('schema', 'create').execute({\n\t\t\t\tnameReadable: 'Test schema!',\n\t\t\t\tnamePascal: 'AnotherTest',\n\t\t\t\tnameCamel: 'anotherTest',\n\t\t\t\tdescription: 'this is so great!',\n\t\t\t})\n\t\t)\n\n\t\terrorAssertUtil.assertError(err, 'FEATURE_NOT_INSTALLED')\n\t}\n\n\t@test()\n\tprotected static async canBuildFileWithoutCrashing() {\n\t\tconst createSchema = await this.syncSchemasAndGetCreateAction('schemas')\n\n\t\tconst response = await createSchema.execute({\n\t\t\tnameReadable: 'Test schema!',\n\t\t\tnamePascal: 'Test',\n\t\t\tnameCamel: 'test',\n\t\t\tdescription: 'this is so great!',\n\t\t})\n\n\t\tassert.isFalsy(response.errors)\n\n\t\tconst expectedDestination = versionUtil.resolveNewLatestPath(\n\t\t\tthis.cwd,\n\t\t\t'src',\n\t\t\t'schemas',\n\t\t\t'{{@latest}}',\n\t\t\t'test.builder.ts'\n\t\t)\n\n\t\tassert.isEqual(response.files?.[0].path, expectedDestination)\n\t}\n\n\tprivate static async syncSchemasAndGetCreateAction(cacheKey?: string) {\n\t\tawait this.syncSchemas(cacheKey)\n\t\tconst createSchema = this.Action('schema', 'create')\n\n\t\treturn createSchema\n\t}\n\n\t@test()\n\tprotected static async builderAndSchemaFilesValidate() {\n\t\tconst response = await this.buildTestSchema()\n\n\t\tconst checker = this.Service('typeChecker')\n\n\t\tawait checker.check(response.files?.[0].path ?? '')\n\t\tawait checker.check(this.schemaTypesFile)\n\n\t\tconst builderMatch = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'anotherTest.builder.ts',\n\t\t\tresponse.files\n\t\t)\n\n\t\tawait checker.check(builderMatch)\n\t\tconst schemaMatch = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'anotherTest.schema.ts',\n\t\t\tresponse.files\n\t\t)\n\n\t\tawait checker.check(schemaMatch)\n\n\t\tconst schemaContents = diskUtil.readFile(schemaMatch)\n\t\tassert.doesInclude(schemaContents, `namespace: 'TestingSchemas'`)\n\t}\n\n\t@test()\n\tprotected static async errorsWithBadVersion() {\n\t\tconst action = await this.syncSchemasAndGetCreateAction('schemas')\n\n\t\tconst results = await action.execute({\n\t\t\tnameReadable: 'Bad schema version!',\n\t\t\tnamePascal: 'BadSchemaVersion',\n\t\t\tnameCamel: 'badSchemaVersion',\n\t\t\tversion: 'v1',\n\t\t})\n\n\t\tassert.isTruthy(results.errors)\n\t\tassert.doesInclude(results.errors[0].message, /must be in the form/i)\n\t}\n\n\t@test()\n\tprotected static async canBuild2SpecificVersions() {\n\t\tconst action = await this.syncSchemasAndGetCreateAction('schemas')\n\n\t\tconst firstResponse = await action.execute({\n\t\t\tnameReadable: 'First schema!',\n\t\t\tnamePascal: 'FirstSchema',\n\t\t\tnameCamel: 'firstSchema',\n\t\t\tversion: 'v2020_01_10',\n\t\t})\n\n\t\tthis.validateSchemaFiles(\n\t\t\tfirstResponse,\n\t\t\t'firstSchema.schema.ts',\n\t\t\t'v2020_01_10',\n\t\t\t'FirstSchema'\n\t\t)\n\n\t\tconst secondResponse = await action.execute({\n\t\t\tnameReadable: 'Second schema!',\n\t\t\tnamePascal: 'secondSchema',\n\t\t\tnameCamel: 'secondSchema',\n\t\t\tversion: 'v2020_01_11',\n\t\t})\n\n\t\tthis.validateSchemaFiles(\n\t\t\tsecondResponse,\n\t\t\t'secondSchema.schema.ts',\n\t\t\t'v2020_01_11',\n\t\t\t'SecondSchema'\n\t\t)\n\n\t\tthis.validateSchemaFiles(\n\t\t\tsecondResponse,\n\t\t\t'firstSchema.schema.ts',\n\t\t\t'v2020_01_10',\n\t\t\t'FirstSchema'\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async asksForVersionOnSecondSchema() {\n\t\tconst action = await this.syncSchemasAndGetCreateAction('schemas')\n\n\t\tconst newVersion = versionUtil.generateVersion()\n\n\t\t// create old version first\n\t\tawait action.execute({\n\t\t\tnameReadable: 'First schema!',\n\t\t\tnamePascal: 'FirstSchema',\n\t\t\tnameCamel: 'firstSchema',\n\t\t\tversion: 'v2020_01_01',\n\t\t})\n\n\t\tawait this.assertAnswersFirstTime(action, newVersion)\n\t\tawait this.assertAnswersSecondTime(action, newVersion)\n\t}\n\n\t// should ask if we want to use the old version we created above or a New Version\n\tprivate static async assertAnswersFirstTime(\n\t\taction: FeatureAction,\n\t\tnewVersion: { intValue: number; constValue: string; dirValue: string }\n\t) {\n\t\tconst createPromise = action.execute({\n\t\t\tnameReadable: 'Second schema!',\n\t\t\tnamePascal: 'SecondSchema',\n\t\t\tnameCamel: 'secondSchema',\n\t\t})\n\n\t\tawait this.wait(1000)\n\t\tconst last = this.ui.invocations[this.ui.invocations.length - 1]\n\n\t\tassert.isEqual(last?.command, 'prompt')\n\t\tassert.isLength(last?.options?.options?.choices, 2)\n\t\tassert.isEqualDeep(last?.options?.options?.choices, [\n\t\t\t{\n\t\t\t\tvalue: newVersion.dirValue,\n\t\t\t\tlabel: 'New Version',\n\t\t\t},\n\t\t\t{\n\t\t\t\tvalue: 'v2020_01_01',\n\t\t\t\tlabel: 'v2020_01_01',\n\t\t\t},\n\t\t])\n\n\t\tawait this.ui.sendInput(newVersion.dirValue)\n\t\tawait createPromise\n\t}\n\n\t// should only have 2 options, none of which one \"new version\" since that was created in secondAnswers\n\tprivate static async assertAnswersSecondTime(\n\t\taction: FeatureAction,\n\t\tnewVersion: { intValue: number; constValue: string; dirValue: string }\n\t) {\n\t\tconst createPromise = action.execute({\n\t\t\tnameReadable: 'Third schema',\n\t\t\tnamePascal: 'ThirdSchema',\n\t\t\tnameCamel: 'thirdSchema',\n\t\t})\n\n\t\tawait this.wait(1000)\n\t\tconst term = this.ui as SpyInterface\n\t\tconst last = term.invocations[term.invocations.length - 1]\n\n\t\tassert.isEqualDeep(last?.options?.options?.choices, [\n\t\t\t{\n\t\t\t\tvalue: newVersion.dirValue,\n\t\t\t\tlabel: newVersion.dirValue,\n\t\t\t},\n\t\t\t{\n\t\t\t\tvalue: 'v2020_01_01',\n\t\t\t\tlabel: 'v2020_01_01',\n\t\t\t},\n\t\t])\n\n\t\t// eslint-disable-next-line @typescript-eslint/no-floating-promises\n\t\tthis.ui.sendInput(newVersion.dirValue)\n\n\t\tconst createResults = await createPromise\n\n\t\tconst schemaMatch = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'secondSchema.schema.ts',\n\t\t\tcreateResults.files\n\t\t)\n\n\t\tassert.doesInclude(schemaMatch, newVersion.dirValue)\n\t}\n\n\tprivate static validateSchemaFiles(\n\t\tresponse: FeatureActionResponse,\n\t\texpectedFileName: string,\n\t\texpectedVersion: string,\n\t\texpectedSchemaInterfaceName: string\n\t) {\n\t\tassert.isUndefined(response.errors)\n\n\t\tlet schemaFile = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\texpectedFileName,\n\t\t\tresponse.files\n\t\t)\n\n\t\tconst errors = response.errors ?? []\n\t\tif (errors.length > 0) {\n\t\t\tassert.fail(errors[0].friendlyMessage())\n\t\t}\n\n\t\tassert.doesInclude(schemaFile, expectedVersion)\n\t\tconst schemaContents = diskUtil.readFile(schemaFile)\n\n\t\tassert.doesInclude(schemaContents, `version: '${expectedVersion}'`)\n\n\t\tassert.doesInclude(\n\t\t\tschemaContents,\n\t\t\tnew RegExp(\n\t\t\t\t'SpruceSchemas.TestingSchemas.' +\n\t\t\t\t\texpectedVersion +\n\t\t\t\t\t'.*?' +\n\t\t\t\t\texpectedSchemaInterfaceName,\n\t\t\t\t'gis'\n\t\t\t)\n\t\t)\n\t}\n\n\tprivate static async buildTestSchema() {\n\t\tconst action = await this.syncSchemasAndGetCreateAction('schemas')\n\n\t\tconst response = await action.execute({\n\t\t\tnameReadable: 'Test schema!',\n\t\t\tnamePascal: 'AnotherTest',\n\t\t\tnameCamel: 'anotherTest',\n\t\t\tdescription: 'this is so great!',\n\t\t})\n\n\t\tassert.isUndefined(response.errors)\n\n\t\treturn response\n\t}\n}\n"],"file":"CreatingANewSchemaBuilder.test.js"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/__tests__/behavioral/schemas/CreatingANewSchemaBuilder.test.ts"],"names":["CreatingANewSchemaBuilderTest","Cli","assert","doesThrowAsync","Action","execute","nameReadable","namePascal","nameCamel","description","err","errorAssertUtil","assertError","syncSchemasAndGetCreateAction","createSchema","response","isFalsy","errors","expectedDestination","versionUtil","resolveNewLatestPath","cwd","isEqual","files","path","cacheKey","syncSchemas","buildTestSchema","checker","Service","check","schemaTypesFile","builderMatch","testUtil","assertFileByNameInGeneratedFiles","schemaMatch","schemaContents","diskUtil","readFile","doesInclude","action","version","results","isTruthy","message","firstResponse","validateSchemaFiles","secondResponse","newVersion","generateVersion","assertAnswersFirstTime","assertAnswersSecondTime","createPromise","wait","last","ui","invocations","length","command","isLength","options","choices","isEqualDeep","value","dirValue","label","sendInput","term","createResults","expectedFileName","expectedVersion","expectedSchemaInterfaceName","isUndefined","schemaFile","fail","friendlyMessage","RegExp","AbstractSchemaTest"],"mappings":"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","sourcesContent":["import { versionUtil } from '@sprucelabs/spruce-skill-utils'\nimport { diskUtil } from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test'\nimport { errorAssertUtil } from '@sprucelabs/test-utils'\nimport {\n\tFeatureActionResponse,\n\tFeatureAction,\n} from '../../../features/features.types'\nimport SpyInterface from '../../../interfaces/SpyInterface'\nimport AbstractSchemaTest from '../../../tests/AbstractSchemaTest'\nimport testUtil from '../../../tests/utilities/test.utility'\n\nexport default class CreatingANewSchemaBuilderTest extends AbstractSchemaTest {\n\t@test()\n\tprotected static async failsWhenASkillIsNotInstalled() {\n\t\tawait this.Cli()\n\t\tconst err = await assert.doesThrowAsync(() =>\n\t\t\tthis.Action('schema', 'create').execute({\n\t\t\t\tnameReadable: 'Test schema!',\n\t\t\t\tnamePascal: 'AnotherTest',\n\t\t\t\tnameCamel: 'anotherTest',\n\t\t\t\tdescription: 'this is so great!',\n\t\t\t})\n\t\t)\n\n\t\terrorAssertUtil.assertError(err, 'FEATURE_NOT_INSTALLED')\n\t}\n\n\t@test()\n\tprotected static async canBuildFileWithoutCrashing() {\n\t\tconst createSchema = await this.syncSchemasAndGetCreateAction('schemas')\n\n\t\tconst response = await createSchema.execute({\n\t\t\tnameReadable: 'Test schema!',\n\t\t\tnamePascal: 'Test',\n\t\t\tnameCamel: 'test',\n\t\t\tdescription: 'this is so great!',\n\t\t})\n\n\t\tassert.isFalsy(response.errors)\n\n\t\tconst expectedDestination = versionUtil.resolveNewLatestPath(\n\t\t\tthis.cwd,\n\t\t\t'src',\n\t\t\t'schemas',\n\t\t\t'{{@latest}}',\n\t\t\t'test.builder.ts'\n\t\t)\n\n\t\tassert.isEqual(response.files?.[0].path, expectedDestination)\n\t}\n\n\tprivate static async syncSchemasAndGetCreateAction(cacheKey?: string) {\n\t\tawait this.syncSchemas(cacheKey)\n\t\tconst createSchema = this.Action('schema', 'create')\n\n\t\treturn createSchema\n\t}\n\n\t@test()\n\tprotected static async builderAndSchemaFilesValidate() {\n\t\tconst response = await this.buildTestSchema()\n\n\t\tconst checker = this.Service('typeChecker')\n\n\t\tawait checker.check(response.files?.[0].path ?? '')\n\t\tawait checker.check(this.schemaTypesFile)\n\n\t\tconst builderMatch = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'anotherTest.builder.ts',\n\t\t\tresponse.files\n\t\t)\n\n\t\tawait checker.check(builderMatch)\n\t\tconst schemaMatch = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'anotherTest.schema.ts',\n\t\t\tresponse.files\n\t\t)\n\n\t\tawait checker.check(schemaMatch)\n\n\t\tconst schemaContents = diskUtil.readFile(schemaMatch)\n\t\tassert.doesInclude(schemaContents, `namespace: 'TestingSchemas'`)\n\t}\n\n\t@test()\n\tprotected static async errorsWithBadVersion() {\n\t\tconst action = await this.syncSchemasAndGetCreateAction('schemas')\n\n\t\tconst results = await action.execute({\n\t\t\tnameReadable: 'Bad schema version!',\n\t\t\tnamePascal: 'BadSchemaVersion',\n\t\t\tnameCamel: 'badSchemaVersion',\n\t\t\tversion: 'v1',\n\t\t})\n\n\t\tassert.isTruthy(results.errors)\n\t\tassert.doesInclude(results.errors[0].message, /must be in the form/i)\n\t}\n\n\t@test()\n\tprotected static async canBuild2SpecificVersions() {\n\t\tconst action = await this.syncSchemasAndGetCreateAction('schemas')\n\n\t\tconst firstResponse = await action.execute({\n\t\t\tnameReadable: 'First schema!',\n\t\t\tnamePascal: 'FirstSchema',\n\t\t\tnameCamel: 'firstSchema',\n\t\t\tversion: 'v2020_01_10',\n\t\t})\n\n\t\tthis.validateSchemaFiles(\n\t\t\tfirstResponse,\n\t\t\t'firstSchema.schema.ts',\n\t\t\t'v2020_01_10',\n\t\t\t'FirstSchema'\n\t\t)\n\n\t\tconst secondResponse = await action.execute({\n\t\t\tnameReadable: 'Second schema!',\n\t\t\tnamePascal: 'secondSchema',\n\t\t\tnameCamel: 'secondSchema',\n\t\t\tversion: 'v2020_01_11',\n\t\t})\n\n\t\tthis.validateSchemaFiles(\n\t\t\tsecondResponse,\n\t\t\t'secondSchema.schema.ts',\n\t\t\t'v2020_01_11',\n\t\t\t'SecondSchema'\n\t\t)\n\n\t\tthis.validateSchemaFiles(\n\t\t\tsecondResponse,\n\t\t\t'firstSchema.schema.ts',\n\t\t\t'v2020_01_10',\n\t\t\t'FirstSchema'\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async asksForVersionOnSecondSchema() {\n\t\tconst action = await this.syncSchemasAndGetCreateAction('schemas')\n\n\t\tconst newVersion = versionUtil.generateVersion()\n\n\t\t// create old version first\n\t\tawait action.execute({\n\t\t\tnameReadable: 'First schema!',\n\t\t\tnamePascal: 'FirstSchema',\n\t\t\tnameCamel: 'firstSchema',\n\t\t\tversion: 'v2020_01_01',\n\t\t})\n\n\t\tawait this.assertAnswersFirstTime(action, newVersion)\n\t\tawait this.assertAnswersSecondTime(action, newVersion)\n\t}\n\n\t// should ask if we want to use the old version we created above or a New Version\n\tprivate static async assertAnswersFirstTime(\n\t\taction: FeatureAction,\n\t\tnewVersion: { intValue: number; constValue: string; dirValue: string }\n\t) {\n\t\tconst createPromise = action.execute({\n\t\t\tnameReadable: 'Second schema!',\n\t\t\tnamePascal: 'SecondSchema',\n\t\t\tnameCamel: 'secondSchema',\n\t\t})\n\n\t\tawait this.wait(1000)\n\t\tconst last = this.ui.invocations[this.ui.invocations.length - 1]\n\n\t\tassert.isEqual(last?.command, 'prompt')\n\t\tassert.isLength(last?.options?.options?.choices, 2)\n\t\tassert.isEqualDeep(last?.options?.options?.choices, [\n\t\t\t{\n\t\t\t\tvalue: newVersion.dirValue,\n\t\t\t\tlabel: 'New Version',\n\t\t\t},\n\t\t\t{\n\t\t\t\tvalue: 'v2020_01_01',\n\t\t\t\tlabel: 'v2020_01_01',\n\t\t\t},\n\t\t])\n\n\t\tawait this.ui.sendInput(newVersion.dirValue)\n\t\tawait createPromise\n\t}\n\n\t// should only have 2 options, none of which are \"new version\" since that was created in secondAnswers\n\tprivate static async assertAnswersSecondTime(\n\t\taction: FeatureAction,\n\t\tnewVersion: { intValue: number; constValue: string; dirValue: string }\n\t) {\n\t\tconst createPromise = action.execute({\n\t\t\tnameReadable: 'Third schema',\n\t\t\tnamePascal: 'ThirdSchema',\n\t\t\tnameCamel: 'thirdSchema',\n\t\t})\n\n\t\tawait this.wait(1000)\n\t\tconst term = this.ui as SpyInterface\n\t\tconst last = term.invocations[term.invocations.length - 1]\n\n\t\tassert.isEqualDeep(last?.options?.options?.choices, [\n\t\t\t{\n\t\t\t\tvalue: newVersion.dirValue,\n\t\t\t\tlabel: newVersion.dirValue,\n\t\t\t},\n\t\t\t{\n\t\t\t\tvalue: 'v2020_01_01',\n\t\t\t\tlabel: 'v2020_01_01',\n\t\t\t},\n\t\t])\n\n\t\t// eslint-disable-next-line @typescript-eslint/no-floating-promises\n\t\tthis.ui.sendInput(newVersion.dirValue)\n\n\t\tconst createResults = await createPromise\n\n\t\tconst schemaMatch = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t'secondSchema.schema.ts',\n\t\t\tcreateResults.files\n\t\t)\n\n\t\tassert.doesInclude(schemaMatch, newVersion.dirValue)\n\t}\n\n\tprivate static validateSchemaFiles(\n\t\tresponse: FeatureActionResponse,\n\t\texpectedFileName: string,\n\t\texpectedVersion: string,\n\t\texpectedSchemaInterfaceName: string\n\t) {\n\t\tassert.isUndefined(response.errors)\n\n\t\tlet schemaFile = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\texpectedFileName,\n\t\t\tresponse.files\n\t\t)\n\n\t\tconst errors = response.errors ?? []\n\t\tif (errors.length > 0) {\n\t\t\tassert.fail(errors[0].friendlyMessage())\n\t\t}\n\n\t\tassert.doesInclude(schemaFile, expectedVersion)\n\t\tconst schemaContents = diskUtil.readFile(schemaFile)\n\n\t\tassert.doesInclude(schemaContents, `version: '${expectedVersion}'`)\n\n\t\tassert.doesInclude(\n\t\t\tschemaContents,\n\t\t\tnew RegExp(\n\t\t\t\t'SpruceSchemas.TestingSchemas.' +\n\t\t\t\t\texpectedVersion +\n\t\t\t\t\t'.*?' +\n\t\t\t\t\texpectedSchemaInterfaceName,\n\t\t\t\t'gis'\n\t\t\t)\n\t\t)\n\t}\n\n\tprivate static async buildTestSchema() {\n\t\tconst action = await this.syncSchemasAndGetCreateAction('schemas')\n\n\t\tconst response = await action.execute({\n\t\t\tnameReadable: 'Test schema!',\n\t\t\tnamePascal: 'AnotherTest',\n\t\t\tnameCamel: 'anotherTest',\n\t\t\tdescription: 'this is so great!',\n\t\t})\n\n\t\tassert.isUndefined(response.errors)\n\n\t\treturn response\n\t}\n}\n"],"file":"CreatingANewSchemaBuilder.test.js"}
|
|
@@ -7,6 +7,10 @@ export default class ListenAction extends AbstractAction<OptionsSchema> {
|
|
|
7
7
|
invocationMessage: string;
|
|
8
8
|
commandAliases: string[];
|
|
9
9
|
execute(options: SpruceSchemas.SpruceCli.v2020_07_22.ListenEventOptions): Promise<FeatureActionResponse>;
|
|
10
|
+
private fetchEventContracts;
|
|
11
|
+
private syncEvents;
|
|
12
|
+
private writeListener;
|
|
13
|
+
private assertIsValidChoice;
|
|
10
14
|
private syncListeners;
|
|
11
15
|
private collectEvent;
|
|
12
16
|
private collectNamespace;
|