@sprucelabs/spruce-cli 14.22.9 → 14.24.0
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 +39 -0
- package/build/.spruce/events/appointments/didBookAppointments.v2021_06_23.contract.d.ts +10 -0
- package/build/.spruce/events/appointments/didBookAppointments.v2021_06_23.contract.js +24 -0
- package/build/.spruce/events/appointments/didBookAppointments.v2021_06_23.contract.js.map +1 -0
- package/build/.spruce/events/events.contract.d.ts +346 -36
- package/build/.spruce/events/events.contract.js +9 -1
- package/build/.spruce/events/events.contract.js.map +1 -1
- package/build/.spruce/events/forms/convertPdfToForm.v2021_07_02.contract.d.ts +20 -2
- package/build/.spruce/events/forms/convertPdfToForm.v2021_07_02.contract.js +23 -5
- package/build/.spruce/events/forms/convertPdfToForm.v2021_07_02.contract.js.map +1 -1
- package/build/.spruce/events/forms/convertPdfToSchemas.v2021_07_02.contract.d.ts +20 -2
- package/build/.spruce/events/forms/convertPdfToSchemas.v2021_07_02.contract.js +23 -5
- package/build/.spruce/events/forms/convertPdfToSchemas.v2021_07_02.contract.js.map +1 -1
- package/build/.spruce/events/forms/createForm.v2021_07_02.contract.d.ts +20 -2
- package/build/.spruce/events/forms/createForm.v2021_07_02.contract.js +23 -5
- package/build/.spruce/events/forms/createForm.v2021_07_02.contract.js.map +1 -1
- package/build/.spruce/events/forms/deleteCompletedForm.v2021_07_02.contract.d.ts +20 -2
- package/build/.spruce/events/forms/deleteCompletedForm.v2021_07_02.contract.js +23 -5
- package/build/.spruce/events/forms/deleteCompletedForm.v2021_07_02.contract.js.map +1 -1
- package/build/.spruce/events/forms/getCompletedForm.v2021_07_02.contract.d.ts +15 -0
- package/build/.spruce/events/forms/getCompletedForm.v2021_07_02.contract.js +17 -2
- package/build/.spruce/events/forms/getCompletedForm.v2021_07_02.contract.js.map +1 -1
- package/build/.spruce/events/forms/listCompletedForms.v2021_07_02.contract.d.ts +20 -3
- package/build/.spruce/events/forms/listCompletedForms.v2021_07_02.contract.js +23 -6
- package/build/.spruce/events/forms/listCompletedForms.v2021_07_02.contract.js.map +1 -1
- package/build/.spruce/events/forms/listForms.v2021_07_02.contract.d.ts +38 -4
- package/build/.spruce/events/forms/listForms.v2021_07_02.contract.js +45 -11
- package/build/.spruce/events/forms/listForms.v2021_07_02.contract.js.map +1 -1
- package/build/.spruce/events/heartwood/didRegisterSkillViews.v2021_02_11.contract.d.ts +15 -0
- package/build/.spruce/events/heartwood/didRegisterSkillViews.v2021_02_11.contract.js +17 -2
- package/build/.spruce/events/heartwood/didRegisterSkillViews.v2021_02_11.contract.js.map +1 -1
- package/build/.spruce/events/heartwood/generateUrl.v2021_02_11.contract.d.ts +21 -4
- package/build/.spruce/events/heartwood/generateUrl.v2021_02_11.contract.js +24 -7
- package/build/.spruce/events/heartwood/generateUrl.v2021_02_11.contract.js.map +1 -1
- package/build/.spruce/events/heartwood/getSkillViews.v2021_02_11.contract.d.ts +21 -1
- package/build/.spruce/events/heartwood/getSkillViews.v2021_02_11.contract.js +26 -6
- package/build/.spruce/events/heartwood/getSkillViews.v2021_02_11.contract.js.map +1 -1
- package/build/.spruce/events/mySkill163459634973936127/myCoolEvent.v2021_01_22.contract.d.ts +38 -0
- package/build/.spruce/events/mySkill163459634973936127/myCoolEvent.v2021_01_22.contract.js +48 -0
- package/build/.spruce/events/mySkill163459634973936127/myCoolEvent.v2021_01_22.contract.js.map +1 -0
- package/build/.spruce/events/mySkill163493473102035607/myCoolEvent.v2021_01_22.contract.d.ts +38 -0
- package/build/.spruce/events/mySkill163493473102035607/myCoolEvent.v2021_01_22.contract.js +48 -0
- package/build/.spruce/events/mySkill163493473102035607/myCoolEvent.v2021_01_22.contract.js.map +1 -0
- package/build/.spruce/events/mySkill163493479880935941/myCoolEvent.v2021_01_22.contract.d.ts +38 -0
- package/build/.spruce/events/mySkill163493479880935941/myCoolEvent.v2021_01_22.contract.js +48 -0
- package/build/.spruce/events/mySkill163493479880935941/myCoolEvent.v2021_01_22.contract.js.map +1 -0
- package/build/.spruce/schemas/appointments/v2021_06_23/appointments.schema.d.ts +3 -0
- package/build/.spruce/schemas/appointments/v2021_06_23/appointments.schema.js +28 -0
- package/build/.spruce/schemas/appointments/v2021_06_23/appointments.schema.js.map +1 -0
- package/build/.spruce/schemas/appointments/v2021_06_23/didBookAppointmentsEmitPayload.schema.d.ts +3 -0
- package/build/.spruce/schemas/appointments/v2021_06_23/didBookAppointmentsEmitPayload.schema.js +36 -0
- package/build/.spruce/schemas/appointments/v2021_06_23/didBookAppointmentsEmitPayload.schema.js.map +1 -0
- package/build/.spruce/schemas/appointments/v2021_06_23/didBookAppointmentsEmitTarget.schema.d.ts +3 -0
- package/build/.spruce/schemas/appointments/v2021_06_23/didBookAppointmentsEmitTarget.schema.js +28 -0
- package/build/.spruce/schemas/appointments/v2021_06_23/didBookAppointmentsEmitTarget.schema.js.map +1 -0
- package/build/.spruce/schemas/appointments/v2021_06_23/didBookAppointmentsEmitTargetAndPayload.schema.d.ts +3 -0
- package/build/.spruce/schemas/appointments/v2021_06_23/didBookAppointmentsEmitTargetAndPayload.schema.js +56 -0
- package/build/.spruce/schemas/appointments/v2021_06_23/didBookAppointmentsEmitTargetAndPayload.schema.js.map +1 -0
- package/build/.spruce/schemas/heartwood/v2021_02_11/registerSkillViewsEmitTargetAndPayload.schema.js +0 -10
- package/build/.spruce/schemas/heartwood/v2021_02_11/registerSkillViewsEmitTargetAndPayload.schema.js.map +1 -1
- package/build/.spruce/schemas/schemas.types.d.ts +678 -604
- package/build/.spruce/schemas/schemas.types.js.map +1 -1
- package/build/__tests__/behavioral/AddingADependency.test.d.ts +9 -0
- package/build/__tests__/behavioral/AddingADependency.test.js +273 -0
- package/build/__tests__/behavioral/AddingADependency.test.js.map +1 -0
- package/build/__tests__/behavioral/CreatingADataStore.test.js.map +1 -1
- package/build/__tests__/behavioral/ManagingDependencies.test.d.ts +9 -0
- package/build/__tests__/behavioral/ManagingDependencies.test.js +279 -0
- package/build/__tests__/behavioral/ManagingDependencies.test.js.map +1 -0
- package/build/__tests__/behavioral/SyncingEventsOnlyFromDependencies.test.d.ts +8 -0
- package/build/__tests__/behavioral/SyncingEventsOnlyFromDependencies.test.js +209 -0
- package/build/__tests__/behavioral/SyncingEventsOnlyFromDependencies.test.js.map +1 -0
- package/build/__tests__/behavioral/events/CreatingAListener.test.js +9 -5
- package/build/__tests__/behavioral/events/CreatingAListener.test.js.map +1 -1
- package/build/__tests__/behavioral/events/KeepingEventsInSync.test.js +14 -7
- package/build/__tests__/behavioral/events/KeepingEventsInSync.test.js.map +1 -1
- package/build/__tests__/behavioral/events/KeepingEventsInSync2.test.js +43 -12
- package/build/__tests__/behavioral/events/KeepingEventsInSync2.test.js.map +1 -1
- package/build/__tests__/behavioral/views/CreatingATheme.test.js +8 -2
- package/build/__tests__/behavioral/views/CreatingATheme.test.js.map +1 -1
- package/build/__tests__/behavioral/views/SettingUpViews.test.d.ts +1 -0
- package/build/__tests__/behavioral/views/SettingUpViews.test.js +48 -3
- package/build/__tests__/behavioral/views/SettingUpViews.test.js.map +1 -1
- package/build/__tests__/implementation/EventStore.test.js +4 -3
- package/build/__tests__/implementation/EventStore.test.js.map +1 -1
- package/build/__tests__/implementation/EventTemplateItemBuilder.test.d.ts +1 -0
- package/build/__tests__/implementation/EventTemplateItemBuilder.test.js +21 -3
- package/build/__tests__/implementation/EventTemplateItemBuilder.test.js.map +1 -1
- package/build/errors/SpruceError.js +2 -2
- package/build/errors/SpruceError.js.map +1 -1
- package/build/features/FeatureInstaller.d.ts +1 -1
- package/build/features/FeatureInstallerFactory.js +4 -2
- package/build/features/FeatureInstallerFactory.js.map +1 -1
- package/build/features/dependencies/DependencyFeature.d.ts +16 -0
- package/build/features/dependencies/DependencyFeature.js +92 -0
- package/build/features/dependencies/DependencyFeature.js.map +1 -0
- package/build/features/dependencies/actions/AddAction.d.ts +33 -0
- package/build/features/dependencies/actions/AddAction.js +154 -0
- package/build/features/dependencies/actions/AddAction.js.map +1 -0
- package/build/features/dependencies/actions/ManageAction.d.ts +19 -0
- package/build/features/dependencies/actions/ManageAction.js +161 -0
- package/build/features/dependencies/actions/ManageAction.js.map +1 -0
- package/build/features/event/EventFeature.js +2 -1
- package/build/features/event/EventFeature.js.map +1 -1
- package/build/features/event/builders/EventContractBuilder.d.ts +3 -0
- package/build/features/event/builders/EventContractBuilder.js +12 -8
- package/build/features/event/builders/EventContractBuilder.js.map +1 -1
- package/build/features/event/stores/EventStore.d.ts +2 -1
- package/build/features/event/stores/EventStore.js +33 -25
- package/build/features/event/stores/EventStore.js.map +1 -1
- package/build/features/schema/actions/SyncAction.js +4 -2
- package/build/features/schema/actions/SyncAction.js.map +1 -1
- package/build/features/skill/actions/RebuildAction.js.map +1 -1
- package/build/features/skill/stores/SkillStore.d.ts +4 -0
- package/build/features/skill/stores/SkillStore.js +39 -15
- package/build/features/skill/stores/SkillStore.js.map +1 -1
- package/build/features/view/ViewFeature.js +5 -1
- package/build/features/view/ViewFeature.js.map +1 -1
- package/build/interfaces/SpyInterface.d.ts +2 -1
- package/build/interfaces/SpyInterface.js +67 -7
- package/build/interfaces/SpyInterface.js.map +1 -1
- package/build/services/DependencyService.d.ts +13 -0
- package/build/services/DependencyService.js +49 -0
- package/build/services/DependencyService.js.map +1 -0
- package/build/services/ServiceFactory.d.ts +2 -0
- package/build/services/ServiceFactory.js +5 -0
- package/build/services/ServiceFactory.js.map +1 -1
- package/build/templateItemBuilders/EventTemplateItemBuilder.js +9 -0
- package/build/templateItemBuilders/EventTemplateItemBuilder.js.map +1 -1
- package/build/tests/AbstractCliTest.js +2 -36
- package/build/tests/AbstractCliTest.js.map +1 -1
- package/build/tests/fixtures/SkillFixture.d.ts +2 -0
- package/build/tests/fixtures/SkillFixture.js +8 -8
- package/build/tests/fixtures/SkillFixture.js.map +1 -1
- package/build/utilities/action.utility.js +1 -5
- package/build/utilities/action.utility.js.map +1 -1
- package/package.json +27 -27
- package/src/.spruce/events/appointments/didBookAppointments.v2021_06_23.contract.ts +15 -0
- package/src/.spruce/events/events.contract.ts +32 -8
- package/src/.spruce/events/forms/convertPdfToForm.v2021_07_02.contract.ts +20 -2
- package/src/.spruce/events/forms/convertPdfToSchemas.v2021_07_02.contract.ts +20 -2
- package/src/.spruce/events/forms/createForm.v2021_07_02.contract.ts +20 -2
- package/src/.spruce/events/forms/deleteCompletedForm.v2021_07_02.contract.ts +20 -2
- package/src/.spruce/events/forms/getCompletedForm.v2021_07_02.contract.ts +15 -0
- package/src/.spruce/events/forms/listCompletedForms.v2021_07_02.contract.ts +20 -3
- package/src/.spruce/events/forms/listForms.v2021_07_02.contract.ts +38 -4
- package/src/.spruce/events/heartwood/didRegisterSkillViews.v2021_02_11.contract.ts +15 -0
- package/src/.spruce/events/heartwood/generateUrl.v2021_02_11.contract.ts +21 -4
- package/src/.spruce/events/heartwood/getSkillViews.v2021_02_11.contract.ts +21 -1
- package/src/.spruce/events/mySkill163459634973936127/myCoolEvent.v2021_01_22.contract.ts +45 -0
- package/src/.spruce/events/mySkill163493473102035607/myCoolEvent.v2021_01_22.contract.ts +45 -0
- package/src/.spruce/events/mySkill163493479880935941/myCoolEvent.v2021_01_22.contract.ts +45 -0
- package/src/.spruce/schemas/appointments/v2021_06_23/appointments.schema.ts +22 -0
- package/src/.spruce/schemas/appointments/v2021_06_23/didBookAppointmentsEmitPayload.schema.ts +24 -0
- package/src/.spruce/schemas/appointments/v2021_06_23/didBookAppointmentsEmitTarget.schema.ts +22 -0
- package/src/.spruce/schemas/appointments/v2021_06_23/didBookAppointmentsEmitTargetAndPayload.schema.ts +36 -0
- package/src/.spruce/schemas/heartwood/v2021_02_11/registerSkillViewsEmitTargetAndPayload.schema.ts +0 -6
- package/src/.spruce/schemas/schemas.types.ts +815 -720
- package/src/__tests__/behavioral/AddingADependency.test.ts +98 -0
- package/src/__tests__/behavioral/CreatingADataStore.test.ts +2 -0
- package/src/__tests__/behavioral/ManagingDependencies.test.ts +115 -0
- package/src/__tests__/behavioral/SyncingEventsOnlyFromDependencies.test.ts +70 -0
- package/src/__tests__/behavioral/events/CreatingAListener.test.ts +5 -0
- package/src/__tests__/behavioral/events/KeepingEventsInSync.test.ts +6 -0
- package/src/__tests__/behavioral/events/KeepingEventsInSync2.test.ts +27 -0
- package/src/__tests__/behavioral/views/CreatingATheme.test.ts +4 -0
- package/src/__tests__/behavioral/views/SettingUpViews.test.ts +23 -0
- package/src/__tests__/implementation/EventStore.test.ts +5 -2
- package/src/__tests__/implementation/EventTemplateItemBuilder.test.ts +20 -1
- package/src/errors/SpruceError.ts +1 -1
- package/src/features/FeatureInstallerFactory.ts +3 -0
- package/src/features/dependencies/DependencyFeature.ts +27 -0
- package/src/features/dependencies/actions/AddAction.ts +63 -0
- package/src/features/dependencies/actions/ManageAction.ts +84 -0
- package/src/features/event/EventFeature.ts +1 -0
- package/src/features/event/builders/EventContractBuilder.ts +9 -2
- package/src/features/event/stores/EventStore.ts +20 -11
- package/src/features/schema/actions/SyncAction.ts +6 -3
- package/src/features/skill/actions/RebuildAction.ts +2 -0
- package/src/features/skill/stores/SkillStore.ts +8 -1
- package/src/features/view/ViewFeature.ts +5 -0
- package/src/interfaces/SpyInterface.ts +29 -2
- package/src/services/DependencyService.ts +27 -0
- package/src/services/ServiceFactory.ts +6 -0
- package/src/templateItemBuilders/EventTemplateItemBuilder.ts +10 -0
- package/src/tests/AbstractCliTest.ts +1 -21
- package/src/tests/fixtures/SkillFixture.ts +6 -2
- package/src/utilities/action.utility.ts +1 -6
- package/build/.spruce/schemas/heartwood/v2021_02_11/registerSkillViewsEmitTarget.schema.d.ts +0 -3
- package/build/.spruce/schemas/heartwood/v2021_02_11/registerSkillViewsEmitTarget.schema.js +0 -28
- package/build/.spruce/schemas/heartwood/v2021_02_11/registerSkillViewsEmitTarget.schema.js.map +0 -1
- package/src/.spruce/schemas/heartwood/v2021_02_11/registerSkillViewsEmitTarget.schema.ts +0 -22
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import AbstractSkillTest from '../../tests/AbstractSkillTest';
|
|
2
|
+
export default class SyncingEventsOnlyFromDependenciesTest extends AbstractSkillTest {
|
|
3
|
+
protected static skillCacheKey: string;
|
|
4
|
+
protected static doesntSyncAnythingToStart(): Promise<void>;
|
|
5
|
+
protected static syncsEventsForSkillsWeveAddedAsDependencies(): Promise<void>;
|
|
6
|
+
private static registerGlobalEvent;
|
|
7
|
+
private static resolveEventFolder;
|
|
8
|
+
}
|
|
@@ -0,0 +1,209 @@
|
|
|
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 _spruceSkillUtils = require("@sprucelabs/spruce-skill-utils");
|
|
29
|
+
|
|
30
|
+
var _test = require("@sprucelabs/test");
|
|
31
|
+
|
|
32
|
+
var _fsExtra = _interopRequireDefault(require("fs-extra"));
|
|
33
|
+
|
|
34
|
+
var _AbstractSkillTest2 = _interopRequireDefault(require("../../tests/AbstractSkillTest"));
|
|
35
|
+
|
|
36
|
+
var _dec, _dec2, _class, _class2, _temp;
|
|
37
|
+
|
|
38
|
+
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); }; }
|
|
39
|
+
|
|
40
|
+
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; } }
|
|
41
|
+
|
|
42
|
+
var SyncingEventsOnlyFromDependenciesTest = (_dec = (0, _test.test)(), _dec2 = (0, _test.test)(), (_class = (_temp = _class2 = /*#__PURE__*/function (_AbstractSkillTest) {
|
|
43
|
+
(0, _inherits2["default"])(SyncingEventsOnlyFromDependenciesTest, _AbstractSkillTest);
|
|
44
|
+
|
|
45
|
+
var _super = _createSuper(SyncingEventsOnlyFromDependenciesTest);
|
|
46
|
+
|
|
47
|
+
function SyncingEventsOnlyFromDependenciesTest() {
|
|
48
|
+
(0, _classCallCheck2["default"])(this, SyncingEventsOnlyFromDependenciesTest);
|
|
49
|
+
return _super.apply(this, arguments);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
(0, _createClass2["default"])(SyncingEventsOnlyFromDependenciesTest, null, [{
|
|
53
|
+
key: "doesntSyncAnythingToStart",
|
|
54
|
+
value: function () {
|
|
55
|
+
var _doesntSyncAnythingToStart = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
|
|
56
|
+
var skills, _yield$this$registerG, skill, results, eventFolder, contents;
|
|
57
|
+
|
|
58
|
+
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
59
|
+
while (1) {
|
|
60
|
+
switch (_context.prev = _context.next) {
|
|
61
|
+
case 0:
|
|
62
|
+
skills = this.getSkillFixture();
|
|
63
|
+
_context.next = 3;
|
|
64
|
+
return skills.registerCurrentSkill({
|
|
65
|
+
name: 'events in sync skill'
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
case 3:
|
|
69
|
+
_context.next = 5;
|
|
70
|
+
return this.registerGlobalEvent();
|
|
71
|
+
|
|
72
|
+
case 5:
|
|
73
|
+
_yield$this$registerG = _context.sent;
|
|
74
|
+
skill = _yield$this$registerG.skill;
|
|
75
|
+
_context.next = 9;
|
|
76
|
+
return this.Action('event', 'sync', {}).execute({});
|
|
77
|
+
|
|
78
|
+
case 9:
|
|
79
|
+
results = _context.sent;
|
|
80
|
+
|
|
81
|
+
_test.assert.isFalsy(results.errors);
|
|
82
|
+
|
|
83
|
+
eventFolder = this.resolveEventFolder(skill);
|
|
84
|
+
|
|
85
|
+
_test.assert.isFalse(_spruceSkillUtils.diskUtil.doesDirExist(eventFolder));
|
|
86
|
+
|
|
87
|
+
contents = _fsExtra["default"].readdirSync(this.resolveHashSprucePath('events'));
|
|
88
|
+
|
|
89
|
+
_test.assert.isLength(contents, 1);
|
|
90
|
+
|
|
91
|
+
case 15:
|
|
92
|
+
case "end":
|
|
93
|
+
return _context.stop();
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}, _callee, this);
|
|
97
|
+
}));
|
|
98
|
+
|
|
99
|
+
function doesntSyncAnythingToStart() {
|
|
100
|
+
return _doesntSyncAnythingToStart.apply(this, arguments);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
return doesntSyncAnythingToStart;
|
|
104
|
+
}()
|
|
105
|
+
}, {
|
|
106
|
+
key: "syncsEventsForSkillsWeveAddedAsDependencies",
|
|
107
|
+
value: function () {
|
|
108
|
+
var _syncsEventsForSkillsWeveAddedAsDependencies = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
|
|
109
|
+
var _yield$this$registerG2, skill, results, eventFolder, contents;
|
|
110
|
+
|
|
111
|
+
return _regenerator["default"].wrap(function _callee2$(_context2) {
|
|
112
|
+
while (1) {
|
|
113
|
+
switch (_context2.prev = _context2.next) {
|
|
114
|
+
case 0:
|
|
115
|
+
_context2.next = 2;
|
|
116
|
+
return this.registerGlobalEvent();
|
|
117
|
+
|
|
118
|
+
case 2:
|
|
119
|
+
_yield$this$registerG2 = _context2.sent;
|
|
120
|
+
skill = _yield$this$registerG2.skill;
|
|
121
|
+
this.Service('dependency').add({
|
|
122
|
+
id: skill.id,
|
|
123
|
+
namespace: skill.slug
|
|
124
|
+
});
|
|
125
|
+
_context2.next = 7;
|
|
126
|
+
return this.Action('event', 'sync', {}).execute({});
|
|
127
|
+
|
|
128
|
+
case 7:
|
|
129
|
+
results = _context2.sent;
|
|
130
|
+
|
|
131
|
+
_test.assert.isFalsy(results.errors);
|
|
132
|
+
|
|
133
|
+
eventFolder = this.resolveEventFolder(skill);
|
|
134
|
+
|
|
135
|
+
_test.assert.isTrue(_spruceSkillUtils.diskUtil.doesDirExist(eventFolder));
|
|
136
|
+
|
|
137
|
+
contents = _fsExtra["default"].readdirSync(this.resolveHashSprucePath('events'));
|
|
138
|
+
|
|
139
|
+
_test.assert.isLength(contents, 2);
|
|
140
|
+
|
|
141
|
+
case 13:
|
|
142
|
+
case "end":
|
|
143
|
+
return _context2.stop();
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
}, _callee2, this);
|
|
147
|
+
}));
|
|
148
|
+
|
|
149
|
+
function syncsEventsForSkillsWeveAddedAsDependencies() {
|
|
150
|
+
return _syncsEventsForSkillsWeveAddedAsDependencies.apply(this, arguments);
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
return syncsEventsForSkillsWeveAddedAsDependencies;
|
|
154
|
+
}()
|
|
155
|
+
}, {
|
|
156
|
+
key: "registerGlobalEvent",
|
|
157
|
+
value: function () {
|
|
158
|
+
var _registerGlobalEvent = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3() {
|
|
159
|
+
var skills, skill;
|
|
160
|
+
return _regenerator["default"].wrap(function _callee3$(_context3) {
|
|
161
|
+
while (1) {
|
|
162
|
+
switch (_context3.prev = _context3.next) {
|
|
163
|
+
case 0:
|
|
164
|
+
skills = this.getSkillFixture();
|
|
165
|
+
_context3.next = 3;
|
|
166
|
+
return skills.seedDemoSkill({
|
|
167
|
+
name: 'a temp skill'
|
|
168
|
+
});
|
|
169
|
+
|
|
170
|
+
case 3:
|
|
171
|
+
skill = _context3.sent;
|
|
172
|
+
_context3.next = 6;
|
|
173
|
+
return skills.registerEventContract(skill, {
|
|
174
|
+
eventSignatures: {
|
|
175
|
+
'test-sync::v2021_01_01': {
|
|
176
|
+
isGlobal: true
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
});
|
|
180
|
+
|
|
181
|
+
case 6:
|
|
182
|
+
return _context3.abrupt("return", {
|
|
183
|
+
skill: skill
|
|
184
|
+
});
|
|
185
|
+
|
|
186
|
+
case 7:
|
|
187
|
+
case "end":
|
|
188
|
+
return _context3.stop();
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
}, _callee3, this);
|
|
192
|
+
}));
|
|
193
|
+
|
|
194
|
+
function registerGlobalEvent() {
|
|
195
|
+
return _registerGlobalEvent.apply(this, arguments);
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
return registerGlobalEvent;
|
|
199
|
+
}()
|
|
200
|
+
}, {
|
|
201
|
+
key: "resolveEventFolder",
|
|
202
|
+
value: function resolveEventFolder(skill) {
|
|
203
|
+
return this.resolveHashSprucePath('events', _spruceSkillUtils.namesUtil.toCamel(skill.slug));
|
|
204
|
+
}
|
|
205
|
+
}]);
|
|
206
|
+
return SyncingEventsOnlyFromDependenciesTest;
|
|
207
|
+
}(_AbstractSkillTest2["default"]), (0, _defineProperty2["default"])(_class2, "skillCacheKey", 'events'), _temp), ((0, _applyDecoratedDescriptor2["default"])(_class, "doesntSyncAnythingToStart", [_dec], Object.getOwnPropertyDescriptor(_class, "doesntSyncAnythingToStart"), _class), (0, _applyDecoratedDescriptor2["default"])(_class, "syncsEventsForSkillsWeveAddedAsDependencies", [_dec2], Object.getOwnPropertyDescriptor(_class, "syncsEventsForSkillsWeveAddedAsDependencies"), _class)), _class));
|
|
208
|
+
exports["default"] = SyncingEventsOnlyFromDependenciesTest;
|
|
209
|
+
//# sourceMappingURL=SyncingEventsOnlyFromDependencies.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/__tests__/behavioral/SyncingEventsOnlyFromDependencies.test.ts"],"names":["SyncingEventsOnlyFromDependenciesTest","skills","getSkillFixture","registerCurrentSkill","name","registerGlobalEvent","skill","Action","execute","results","assert","isFalsy","errors","eventFolder","resolveEventFolder","isFalse","diskUtil","doesDirExist","contents","fsUtil","readdirSync","resolveHashSprucePath","isLength","Service","add","id","namespace","slug","isTrue","seedDemoSkill","registerEventContract","eventSignatures","isGlobal","namesUtil","toCamel","AbstractSkillTest"],"mappings":"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","sourcesContent":["import { diskUtil, namesUtil } from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test'\nimport fsUtil from 'fs-extra'\nimport AbstractSkillTest from '../../tests/AbstractSkillTest'\nimport { RegisteredSkill } from '../../types/cli.types'\n\nexport default class SyncingEventsOnlyFromDependenciesTest extends AbstractSkillTest {\n\tprotected static skillCacheKey = 'events'\n\n\t@test()\n\tprotected static async doesntSyncAnythingToStart() {\n\t\tconst skills = this.getSkillFixture()\n\t\tawait skills.registerCurrentSkill({\n\t\t\tname: 'events in sync skill',\n\t\t})\n\t\tconst { skill } = await this.registerGlobalEvent()\n\n\t\tconst results = await this.Action('event', 'sync', {}).execute({})\n\t\tassert.isFalsy(results.errors)\n\n\t\tconst eventFolder = this.resolveEventFolder(skill)\n\n\t\tassert.isFalse(diskUtil.doesDirExist(eventFolder))\n\n\t\tconst contents = fsUtil.readdirSync(this.resolveHashSprucePath('events'))\n\n\t\tassert.isLength(contents, 1)\n\t}\n\n\t@test()\n\tprotected static async syncsEventsForSkillsWeveAddedAsDependencies() {\n\t\tconst { skill } = await this.registerGlobalEvent()\n\n\t\tthis.Service('dependency').add({\n\t\t\tid: skill.id,\n\t\t\tnamespace: skill.slug,\n\t\t})\n\n\t\tconst results = await this.Action('event', 'sync', {}).execute({})\n\t\tassert.isFalsy(results.errors)\n\n\t\tconst eventFolder = this.resolveEventFolder(skill)\n\n\t\tassert.isTrue(diskUtil.doesDirExist(eventFolder))\n\n\t\tconst contents = fsUtil.readdirSync(this.resolveHashSprucePath('events'))\n\n\t\tassert.isLength(contents, 2)\n\t}\n\n\tprivate static async registerGlobalEvent() {\n\t\tconst skills = this.getSkillFixture()\n\n\t\tconst skill = await skills.seedDemoSkill({ name: 'a temp skill' })\n\n\t\tawait skills.registerEventContract(skill, {\n\t\t\teventSignatures: {\n\t\t\t\t'test-sync::v2021_01_01': {\n\t\t\t\t\tisGlobal: true,\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\n\t\treturn { skill }\n\t}\n\n\tprivate static resolveEventFolder(skill: RegisteredSkill) {\n\t\treturn this.resolveHashSprucePath('events', namesUtil.toCamel(skill.slug))\n\t}\n}\n"],"file":"SyncingEventsOnlyFromDependencies.test.js"}
|
|
@@ -524,23 +524,27 @@ var CreatingAListenerTest = (_dec = (0, _test.test)(), _dec2 = (0, _test.test)()
|
|
|
524
524
|
return skillFixture.registerEventContract(skill2, eventContract);
|
|
525
525
|
|
|
526
526
|
case 12:
|
|
527
|
-
|
|
527
|
+
this.Service('dependency').add({
|
|
528
|
+
id: skill2.id,
|
|
529
|
+
namespace: skill2.slug
|
|
530
|
+
});
|
|
531
|
+
_context8.next = 15;
|
|
528
532
|
return this.Action('event', 'listen').execute({
|
|
529
533
|
eventNamespace: skill2.slug,
|
|
530
534
|
eventName: "my-new-event",
|
|
531
535
|
version: expectedVersion
|
|
532
536
|
});
|
|
533
537
|
|
|
534
|
-
case
|
|
538
|
+
case 15:
|
|
535
539
|
results = _context8.sent;
|
|
536
540
|
|
|
537
541
|
_test.assert.isFalsy(results.errors);
|
|
538
542
|
|
|
539
543
|
listener = _test2["default"].assertFileByNameInGeneratedFiles("my-new-event.".concat(expectedVersion, ".listener.ts"), results.files);
|
|
540
|
-
_context8.next =
|
|
544
|
+
_context8.next = 20;
|
|
541
545
|
return this.Service('typeChecker').check(listener);
|
|
542
546
|
|
|
543
|
-
case
|
|
547
|
+
case 20:
|
|
544
548
|
contents = _spruceSkillUtils.diskUtil.readFile(listener);
|
|
545
549
|
return _context8.abrupt("return", {
|
|
546
550
|
contents: contents,
|
|
@@ -552,7 +556,7 @@ var CreatingAListenerTest = (_dec = (0, _test.test)(), _dec2 = (0, _test.test)()
|
|
|
552
556
|
currentSkill: currentSkill
|
|
553
557
|
});
|
|
554
558
|
|
|
555
|
-
case
|
|
559
|
+
case 22:
|
|
556
560
|
case "end":
|
|
557
561
|
return _context8.stop();
|
|
558
562
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/__tests__/behavioral/events/CreatingAListener.test.ts"],"names":["CreatingAListenerTest","installEventFeature","Action","execute","eventNamespace","results","assert","isTruthy","errors","err","errorAssertUtil","assertError","parameters","eventName","cli","version","isFalsy","match","testUtil","assertFileByNameInGeneratedFiles","files","doesInclude","Service","check","checkHealth","health","skill","isUndefined","event","listeners","waitForInput","lastInvocation","ui","isEqual","command","options","label","sendInput","MERCURY_API_NAMESPACE","reset","setupSkillsInstallAtOrgRegisterEventContractAndGenerateListener","isGlobal","contents","emitPayloadSchema","targetSchema","eventTargetSchema","payloadSchema","id","fields","booleanField","type","skill2","slug","expectedVersion","organizationId","isRequired","responsePayloadSchema","currentSkill","eventContract","org","connectToApi","shouldAuthAsCurrentSkill","currentClient","disconnect","local","boot","wait","skillId","apiKey","client","mixinContract","eventSignatures","emit","target","payload","totalContracts","totalErrors","totalResponses","meta","promise","fail","stack","kill","error","doesThrow","eventResponseUtil","getFirstResponseOrThrow","eventErrorAssertUtil","responderRef","responses","eventSignature","seedDummySkillRegisterCurrentSkillAndInstallToOrg","skillFixture","registerEventContract","listener","diskUtil","readFile","listenerPath","AbstractEventTest","versionUtil","generateVersion","constValue"],"mappings":"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","sourcesContent":["import { EventSignature } from '@sprucelabs/mercury-types'\nimport { buildSchema } from '@sprucelabs/schema'\nimport {\n\tbuildEmitTargetAndPayloadSchema,\n\teventErrorAssertUtil,\n\teventResponseUtil,\n\teventTargetSchema,\n} from '@sprucelabs/spruce-event-utils'\nimport {\n\tdiskUtil,\n\tMERCURY_API_NAMESPACE,\n\tversionUtil,\n} from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test'\nimport { errorAssertUtil } from '@sprucelabs/test-utils'\nimport AbstractEventTest from '../../../tests/AbstractEventTest'\nimport testUtil from '../../../tests/utilities/test.utility'\n\nexport default class CreatingAListenerTest extends AbstractEventTest {\n\tprivate static readonly expectedVersion =\n\t\tversionUtil.generateVersion().constValue\n\n\t@test()\n\tprotected static async throwsWithBadNamespace() {\n\t\tawait this.installEventFeature('events')\n\t\tconst results = await this.Action('event', 'listen').execute({\n\t\t\teventNamespace: 'taco-bell',\n\t\t})\n\n\t\tassert.isTruthy(results.errors)\n\t\tconst err = results.errors[0]\n\n\t\terrorAssertUtil.assertError(err, 'INVALID_PARAMETERS', {\n\t\t\tparameters: ['eventNamespace'],\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async throwsWithBadEventName() {\n\t\tawait this.installEventFeature('events')\n\t\tconst results = await this.Action('event', 'listen').execute({\n\t\t\teventNamespace: 'mercury',\n\t\t\teventName: 'bad-time',\n\t\t})\n\n\t\tassert.isTruthy(results.errors)\n\t\tconst err = results.errors[0]\n\n\t\terrorAssertUtil.assertError(err, 'INVALID_PARAMETERS', {\n\t\t\tparameters: ['eventName'],\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async createsValidListener() {\n\t\tconst cli = await this.installEventFeature('events')\n\n\t\tconst version = 'v2020_01_01'\n\n\t\tconst results = await this.Action('event', 'listen').execute({\n\t\t\teventNamespace: 'skill',\n\t\t\teventName: 'will-boot',\n\t\t\tversion,\n\t\t})\n\n\t\tassert.isFalsy(results.errors)\n\n\t\tconst match = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t`will-boot.${version}.listener.ts`,\n\t\t\tresults.files\n\t\t)\n\n\t\tassert.doesInclude(match, version)\n\n\t\tawait this.Service('typeChecker').check(match)\n\n\t\tconst health = await cli.checkHealth()\n\n\t\tassert.isTruthy(health.skill)\n\n\t\tassert.isUndefined(health.skill.errors)\n\t\tassert.isTruthy(health.event)\n\n\t\tassert.doesInclude(health.event.listeners, {\n\t\t\teventName: 'will-boot',\n\t\t\teventNamespace: 'skill',\n\t\t\tversion,\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async creatingANewListenerAsksWhichEventToListenTo() {\n\t\tawait this.installEventFeature('events')\n\n\t\tvoid this.Action('event', 'listen').execute({})\n\n\t\tawait this.waitForInput()\n\n\t\tlet lastInvocation = this.ui.lastInvocation()\n\n\t\tassert.isEqual(lastInvocation.command, 'prompt')\n\t\tassert.doesInclude(lastInvocation.options.label, 'namespace')\n\n\t\tawait this.ui.sendInput(MERCURY_API_NAMESPACE)\n\n\t\tawait this.waitForInput()\n\n\t\tlastInvocation = this.ui.lastInvocation()\n\n\t\tassert.doesInclude(lastInvocation.options.label, 'event')\n\n\t\tthis.ui.reset()\n\t}\n\n\t@test()\n\tprotected static async generatesTypedListenerWithoutPayloads() {\n\t\tconst { contents } =\n\t\t\tawait this.setupSkillsInstallAtOrgRegisterEventContractAndGenerateListener(\n\t\t\t\t{\n\t\t\t\t\tisGlobal: true,\n\t\t\t\t}\n\t\t\t)\n\n\t\tassert.doesInclude(\n\t\t\tcontents,\n\t\t\t'export default async (event: SpruceEvent): SpruceEventResponse'\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async generatesTypedListenerWithEmitPayload() {\n\t\tconst { contents, skill2 } =\n\t\t\tawait this.setupSkillsInstallAtOrgRegisterEventContractAndGenerateListener(\n\t\t\t\t{\n\t\t\t\t\temitPayloadSchema: buildEmitTargetAndPayloadSchema({\n\t\t\t\t\t\teventName: 'my-new-event',\n\t\t\t\t\t\ttargetSchema: eventTargetSchema,\n\t\t\t\t\t\tpayloadSchema: {\n\t\t\t\t\t\t\tid: 'myNewEventEmitPayload',\n\t\t\t\t\t\t\tfields: {\n\t\t\t\t\t\t\t\tbooleanField: {\n\t\t\t\t\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t}),\n\t\t\t\t}\n\t\t\t)\n\n\t\tassert.doesInclude(\n\t\t\tcontents,\n\t\t\t'event: SpruceEvent<SkillEventContract, EmitPayload>'\n\t\t)\n\n\t\tassert.doesInclude(\n\t\t\tcontents,\n\t\t\t`fullyQualifiedEventName: '${skill2.slug}.my-new-event::${this.expectedVersion}'`\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async emittingEventTriggersListenerAndCrashesWithListenerNotImplemented() {\n\t\tconst { currentSkill, skill2, eventContract, org } =\n\t\t\tawait this.setupSkillsInstallAtOrgRegisterEventContractAndGenerateListener(\n\t\t\t\t{\n\t\t\t\t\temitPayloadSchema: buildEmitTargetAndPayloadSchema({\n\t\t\t\t\t\teventName: 'my-new-event',\n\t\t\t\t\t\ttargetSchema: {\n\t\t\t\t\t\t\tid: 'myNewEventEmitTarget',\n\t\t\t\t\t\t\tfields: {\n\t\t\t\t\t\t\t\torganizationId: {\n\t\t\t\t\t\t\t\t\ttype: 'id',\n\t\t\t\t\t\t\t\t\tisRequired: true,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tpayloadSchema: {\n\t\t\t\t\t\t\tid: 'myNewEventEmitPayload',\n\t\t\t\t\t\t\tfields: {\n\t\t\t\t\t\t\t\tbooleanField: {\n\t\t\t\t\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t}),\n\t\t\t\t\tresponsePayloadSchema: buildSchema({\n\t\t\t\t\t\tid: 'myNewEventResponsePayload',\n\t\t\t\t\t\tfields: {\n\t\t\t\t\t\t\tbooleanField: {\n\t\t\t\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t}),\n\t\t\t\t}\n\t\t\t)\n\n\t\tconst currentClient = await this.connectToApi({\n\t\t\tshouldAuthAsCurrentSkill: true,\n\t\t})\n\n\t\tawait currentClient.disconnect()\n\n\t\tconst boot = await this.Action('skill', 'boot').execute({ local: true })\n\n\t\tassert.isFalsy(boot.errors)\n\n\t\t//give the skill time to boot\n\t\tawait this.wait(20000)\n\n\t\tconst client = (await this.connectToApi({\n\t\t\tskillId: skill2.id,\n\t\t\tapiKey: skill2.apiKey,\n\t\t})) as any\n\n\t\tconst eventName = `${skill2.slug}.my-new-event::${this.expectedVersion}`\n\n\t\tclient.mixinContract({\n\t\t\teventSignatures: {\n\t\t\t\t[eventName]:\n\t\t\t\t\teventContract.eventSignatures[\n\t\t\t\t\t\t`my-new-event::${this.expectedVersion}`\n\t\t\t\t\t],\n\t\t\t},\n\t\t})\n\n\t\tlet results: any\n\n\t\tdo {\n\t\t\tawait this.wait(5000)\n\n\t\t\tresults = await client.emit(eventName, {\n\t\t\t\ttarget: {\n\t\t\t\t\torganizationId: org.id,\n\t\t\t\t},\n\t\t\t\tpayload: {\n\t\t\t\t\tbooleanField: true,\n\t\t\t\t},\n\t\t\t})\n\t\t} while (results.totalContracts < 1)\n\n\t\tassert.isEqual(results.totalContracts, 1)\n\t\tassert.isEqual(results.totalErrors, 1)\n\t\tassert.isEqual(results.totalResponses, 1)\n\n\t\tboot.meta?.promise?.catch((err: Error) => {\n\t\t\tassert.fail(err.stack)\n\t\t})\n\n\t\tawait boot.meta?.kill()\n\n\t\tconst error = assert.doesThrow(() =>\n\t\t\teventResponseUtil.getFirstResponseOrThrow(results)\n\t\t)\n\n\t\teventErrorAssertUtil.assertError(error, 'LISTENER_NOT_IMPLEMENTED')\n\n\t\tconst responderRef = results.responses[0].responderRef\n\t\tassert.isEqual(\n\t\t\tresponderRef,\n\t\t\t`skill:${currentSkill.id}:${currentSkill.slug}`\n\t\t)\n\t}\n\n\tprivate static async setupSkillsInstallAtOrgRegisterEventContractAndGenerateListener(\n\t\teventSignature: EventSignature\n\t) {\n\t\tconst expectedVersion = this.expectedVersion\n\n\t\tconst eventContract = {\n\t\t\teventSignatures: {\n\t\t\t\t[`my-new-event::${expectedVersion}`]: eventSignature,\n\t\t\t},\n\t\t} as const\n\n\t\tconst { skillFixture, skill2, currentSkill, cli, org } =\n\t\t\tawait this.seedDummySkillRegisterCurrentSkillAndInstallToOrg()\n\n\t\tawait skillFixture.registerEventContract(skill2, eventContract)\n\n\t\tconst results = await this.Action('event', 'listen').execute({\n\t\t\teventNamespace: skill2.slug,\n\t\t\teventName: `my-new-event`,\n\t\t\tversion: expectedVersion,\n\t\t})\n\n\t\tassert.isFalsy(results.errors)\n\n\t\tconst listener = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t`my-new-event.${expectedVersion}.listener.ts`,\n\t\t\tresults.files\n\t\t)\n\n\t\tawait this.Service('typeChecker').check(listener)\n\n\t\tconst contents = diskUtil.readFile(listener)\n\n\t\treturn {\n\t\t\tcontents,\n\t\t\tskill2,\n\t\t\tlistenerPath: listener,\n\t\t\tcli,\n\t\t\teventContract,\n\t\t\torg,\n\t\t\tcurrentSkill,\n\t\t}\n\t}\n}\n"],"file":"CreatingAListener.test.js"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/__tests__/behavioral/events/CreatingAListener.test.ts"],"names":["CreatingAListenerTest","installEventFeature","Action","execute","eventNamespace","results","assert","isTruthy","errors","err","errorAssertUtil","assertError","parameters","eventName","cli","version","isFalsy","match","testUtil","assertFileByNameInGeneratedFiles","files","doesInclude","Service","check","checkHealth","health","skill","isUndefined","event","listeners","waitForInput","lastInvocation","ui","isEqual","command","options","label","sendInput","MERCURY_API_NAMESPACE","reset","setupSkillsInstallAtOrgRegisterEventContractAndGenerateListener","isGlobal","contents","emitPayloadSchema","targetSchema","eventTargetSchema","payloadSchema","id","fields","booleanField","type","skill2","slug","expectedVersion","organizationId","isRequired","responsePayloadSchema","currentSkill","eventContract","org","connectToApi","shouldAuthAsCurrentSkill","currentClient","disconnect","local","boot","wait","skillId","apiKey","client","mixinContract","eventSignatures","emit","target","payload","totalContracts","totalErrors","totalResponses","meta","promise","fail","stack","kill","error","doesThrow","eventResponseUtil","getFirstResponseOrThrow","eventErrorAssertUtil","responderRef","responses","eventSignature","seedDummySkillRegisterCurrentSkillAndInstallToOrg","skillFixture","registerEventContract","add","namespace","listener","diskUtil","readFile","listenerPath","AbstractEventTest","versionUtil","generateVersion","constValue"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AACA;;AACA;;AAMA;;AAKA;;AACA;;AACA;;AACA;;;;;;;;IAEqBA,qB,WAInB,iB,UAeA,iB,UAgBA,iB,UAqCA,iB,UAwBA,iB,UAeA,iB,UA+BA,iB;;;;;;;;;;;;;kHA1ID;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAEO,KAAKC,mBAAL,CAAyB,QAAzB,CAFP;;AAAA;AAAA;AAAA,uBAGuB,KAAKC,MAAL,CAAY,OAAZ,EAAqB,QAArB,EAA+BC,OAA/B,CAAuC;AAC5DC,kBAAAA,cAAc,EAAE;AAD4C,iBAAvC,CAHvB;;AAAA;AAGOC,gBAAAA,OAHP;;AAOCC,6BAAOC,QAAP,CAAgBF,OAAO,CAACG,MAAxB;;AACMC,gBAAAA,GARP,GAQaJ,OAAO,CAACG,MAAR,CAAe,CAAf,CARb;;AAUCE,2CAAgBC,WAAhB,CAA4BF,GAA5B,EAAiC,oBAAjC,EAAuD;AACtDG,kBAAAA,UAAU,EAAE,CAAC,gBAAD;AAD0C,iBAAvD;;AAVD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;kHAeA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAEO,KAAKX,mBAAL,CAAyB,QAAzB,CAFP;;AAAA;AAAA;AAAA,uBAGuB,KAAKC,MAAL,CAAY,OAAZ,EAAqB,QAArB,EAA+BC,OAA/B,CAAuC;AAC5DC,kBAAAA,cAAc,EAAE,SAD4C;AAE5DS,kBAAAA,SAAS,EAAE;AAFiD,iBAAvC,CAHvB;;AAAA;AAGOR,gBAAAA,OAHP;;AAQCC,6BAAOC,QAAP,CAAgBF,OAAO,CAACG,MAAxB;;AACMC,gBAAAA,GATP,GASaJ,OAAO,CAACG,MAAR,CAAe,CAAf,CATb;;AAWCE,2CAAgBC,WAAhB,CAA4BF,GAA5B,EAAiC,oBAAjC,EAAuD;AACtDG,kBAAAA,UAAU,EAAE,CAAC,WAAD;AAD0C,iBAAvD;;AAXD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;gHAgBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAEmB,KAAKX,mBAAL,CAAyB,QAAzB,CAFnB;;AAAA;AAEOa,gBAAAA,GAFP;AAIOC,gBAAAA,OAJP,GAIiB,aAJjB;AAAA;AAAA,uBAMuB,KAAKb,MAAL,CAAY,OAAZ,EAAqB,QAArB,EAA+BC,OAA/B,CAAuC;AAC5DC,kBAAAA,cAAc,EAAE,OAD4C;AAE5DS,kBAAAA,SAAS,EAAE,WAFiD;AAG5DE,kBAAAA,OAAO,EAAPA;AAH4D,iBAAvC,CANvB;;AAAA;AAMOV,gBAAAA,OANP;;AAYCC,6BAAOU,OAAP,CAAeX,OAAO,CAACG,MAAvB;;AAEMS,gBAAAA,KAdP,GAceC,kBAASC,gCAAT,qBACAJ,OADA,mBAEbV,OAAO,CAACe,KAFK,CAdf;;AAmBCd,6BAAOe,WAAP,CAAmBJ,KAAnB,EAA0BF,OAA1B;;AAnBD;AAAA,uBAqBO,KAAKO,OAAL,CAAa,aAAb,EAA4BC,KAA5B,CAAkCN,KAAlC,CArBP;;AAAA;AAAA;AAAA,uBAuBsBH,GAAG,CAACU,WAAJ,EAvBtB;;AAAA;AAuBOC,gBAAAA,MAvBP;;AAyBCnB,6BAAOC,QAAP,CAAgBkB,MAAM,CAACC,KAAvB;;AAEApB,6BAAOqB,WAAP,CAAmBF,MAAM,CAACC,KAAP,CAAalB,MAAhC;;AACAF,6BAAOC,QAAP,CAAgBkB,MAAM,CAACG,KAAvB;;AAEAtB,6BAAOe,WAAP,CAAmBI,MAAM,CAACG,KAAP,CAAaC,SAAhC,EAA2C;AAC1ChB,kBAAAA,SAAS,EAAE,WAD+B;AAE1CT,kBAAAA,cAAc,EAAE,OAF0B;AAG1CW,kBAAAA,OAAO,EAAPA;AAH0C,iBAA3C;;AA9BD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;wIAqCA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAEO,KAAKd,mBAAL,CAAyB,QAAzB,CAFP;;AAAA;AAIC,qBAAK,KAAKC,MAAL,CAAY,OAAZ,EAAqB,QAArB,EAA+BC,OAA/B,CAAuC,EAAvC,CAAL;AAJD;AAAA,uBAMO,KAAK2B,YAAL,EANP;;AAAA;AAQKC,gBAAAA,cARL,GAQsB,KAAKC,EAAL,CAAQD,cAAR,EARtB;;AAUCzB,6BAAO2B,OAAP,CAAeF,cAAc,CAACG,OAA9B,EAAuC,QAAvC;;AACA5B,6BAAOe,WAAP,CAAmBU,cAAc,CAACI,OAAf,CAAuBC,KAA1C,EAAiD,WAAjD;;AAXD;AAAA,uBAaO,KAAKJ,EAAL,CAAQK,SAAR,CAAkBC,uCAAlB,CAbP;;AAAA;AAAA;AAAA,uBAeO,KAAKR,YAAL,EAfP;;AAAA;AAiBCC,gBAAAA,cAAc,GAAG,KAAKC,EAAL,CAAQD,cAAR,EAAjB;;AAEAzB,6BAAOe,WAAP,CAAmBU,cAAc,CAACI,OAAf,CAAuBC,KAA1C,EAAiD,OAAjD;;AAEA,qBAAKJ,EAAL,CAAQO,KAAR;;AArBD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;iIAwBA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAGQ,KAAKC,+DAAL,CACL;AACCC,kBAAAA,QAAQ,EAAE;AADX,iBADK,CAHR;;AAAA;AAAA;AAESC,gBAAAA,QAFT,yBAESA,QAFT;;AASCpC,6BAAOe,WAAP,CACCqB,QADD,EAEC,gEAFD;;AATD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;iIAeA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAGQ,KAAKF,+DAAL,CACL;AACCG,kBAAAA,iBAAiB,EAAE,uDAAgC;AAClD9B,oBAAAA,SAAS,EAAE,cADuC;AAElD+B,oBAAAA,YAAY,EAAEC,mCAFoC;AAGlDC,oBAAAA,aAAa,EAAE;AACdC,sBAAAA,EAAE,EAAE,uBADU;AAEdC,sBAAAA,MAAM,EAAE;AACPC,wBAAAA,YAAY,EAAE;AACbC,0BAAAA,IAAI,EAAE;AADO;AADP;AAFM;AAHmC,mBAAhC;AADpB,iBADK,CAHR;;AAAA;AAAA;AAESR,gBAAAA,QAFT,0BAESA,QAFT;AAEmBS,gBAAAA,MAFnB,0BAEmBA,MAFnB;;AAoBC7C,6BAAOe,WAAP,CACCqB,QADD,EAEC,qDAFD;;AAKApC,6BAAOe,WAAP,CACCqB,QADD,sCAE8BS,MAAM,CAACC,IAFrC,4BAE2D,KAAKC,eAFhE;;AAzBD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;6JA+BA;AAAA;;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAGQ,KAAKb,+DAAL,CACL;AACCG,kBAAAA,iBAAiB,EAAE,uDAAgC;AAClD9B,oBAAAA,SAAS,EAAE,cADuC;AAElD+B,oBAAAA,YAAY,EAAE;AACbG,sBAAAA,EAAE,EAAE,sBADS;AAEbC,sBAAAA,MAAM,EAAE;AACPM,wBAAAA,cAAc,EAAE;AACfJ,0BAAAA,IAAI,EAAE,IADS;AAEfK,0BAAAA,UAAU,EAAE;AAFG;AADT;AAFK,qBAFoC;AAWlDT,oBAAAA,aAAa,EAAE;AACdC,sBAAAA,EAAE,EAAE,uBADU;AAEdC,sBAAAA,MAAM,EAAE;AACPC,wBAAAA,YAAY,EAAE;AACbC,0BAAAA,IAAI,EAAE;AADO;AADP;AAFM;AAXmC,mBAAhC,CADpB;AAqBCM,kBAAAA,qBAAqB,EAAE,yBAAY;AAClCT,oBAAAA,EAAE,EAAE,2BAD8B;AAElCC,oBAAAA,MAAM,EAAE;AACPC,sBAAAA,YAAY,EAAE;AACbC,wBAAAA,IAAI,EAAE;AADO;AADP;AAF0B,mBAAZ;AArBxB,iBADK,CAHR;;AAAA;AAAA;AAESO,gBAAAA,YAFT,0BAESA,YAFT;AAEuBN,gBAAAA,MAFvB,0BAEuBA,MAFvB;AAE+BO,gBAAAA,aAF/B,0BAE+BA,aAF/B;AAE8CC,gBAAAA,GAF9C,0BAE8CA,GAF9C;AAAA;AAAA,uBAoC6B,KAAKC,YAAL,CAAkB;AAC7CC,kBAAAA,wBAAwB,EAAE;AADmB,iBAAlB,CApC7B;;AAAA;AAoCOC,gBAAAA,aApCP;AAAA;AAAA,uBAwCOA,aAAa,CAACC,UAAd,EAxCP;;AAAA;AAAA;AAAA,uBA0CoB,KAAK7D,MAAL,CAAY,OAAZ,EAAqB,MAArB,EAA6BC,OAA7B,CAAqC;AAAE6D,kBAAAA,KAAK,EAAE;AAAT,iBAArC,CA1CpB;;AAAA;AA0COC,gBAAAA,IA1CP;;AA4CC3D,6BAAOU,OAAP,CAAeiD,IAAI,CAACzD,MAApB,EA5CD,CA8CC;;;AA9CD;AAAA,uBA+CO,KAAK0D,IAAL,CAAU,KAAV,CA/CP;;AAAA;AAAA;AAAA,uBAiDuB,KAAKN,YAAL,CAAkB;AACvCO,kBAAAA,OAAO,EAAEhB,MAAM,CAACJ,EADuB;AAEvCqB,kBAAAA,MAAM,EAAEjB,MAAM,CAACiB;AAFwB,iBAAlB,CAjDvB;;AAAA;AAiDOC,gBAAAA,MAjDP;AAsDOxD,gBAAAA,SAtDP,aAsDsBsC,MAAM,CAACC,IAtD7B,4BAsDmD,KAAKC,eAtDxD;AAwDCgB,gBAAAA,MAAM,CAACC,aAAP,CAAqB;AACpBC,kBAAAA,eAAe,uCACb1D,SADa,EAEb6C,aAAa,CAACa,eAAd,yBACkB,KAAKlB,eADvB,EAFa;AADK,iBAArB;;AAxDD;AAAA;AAAA,uBAoEQ,KAAKa,IAAL,CAAU,IAAV,CApER;;AAAA;AAAA;AAAA,uBAsEkBG,MAAM,CAACG,IAAP,CAAY3D,SAAZ,EAAuB;AACtC4D,kBAAAA,MAAM,EAAE;AACPnB,oBAAAA,cAAc,EAAEK,GAAG,CAACZ;AADb,mBAD8B;AAItC2B,kBAAAA,OAAO,EAAE;AACRzB,oBAAAA,YAAY,EAAE;AADN;AAJ6B,iBAAvB,CAtElB;;AAAA;AAsEE5C,gBAAAA,OAtEF;;AAAA;AAAA,oBA8EUA,OAAO,CAACsE,cAAR,GAAyB,CA9EnC;AAAA;AAAA;AAAA;;AAAA;AAgFCrE,6BAAO2B,OAAP,CAAe5B,OAAO,CAACsE,cAAvB,EAAuC,CAAvC;;AACArE,6BAAO2B,OAAP,CAAe5B,OAAO,CAACuE,WAAvB,EAAoC,CAApC;;AACAtE,6BAAO2B,OAAP,CAAe5B,OAAO,CAACwE,cAAvB,EAAuC,CAAvC;;AAEA,8BAAAZ,IAAI,CAACa,IAAL,gFAAWC,OAAX,mFAA0B,UAACtE,GAAD,EAAgB;AACzCH,+BAAO0E,IAAP,CAAYvE,GAAG,CAACwE,KAAhB;AACA,iBAFD;AApFD;AAAA,sCAwFOhB,IAAI,CAACa,IAxFZ,gDAwFO,YAAWI,IAAX,EAxFP;;AAAA;AA0FOC,gBAAAA,KA1FP,GA0Fe7E,aAAO8E,SAAP,CAAiB;AAAA,yBAC9BC,oCAAkBC,uBAAlB,CAA0CjF,OAA1C,CAD8B;AAAA,iBAAjB,CA1Ff;;AA8FCkF,uDAAqB5E,WAArB,CAAiCwE,KAAjC,EAAwC,0BAAxC;;AAEMK,gBAAAA,YAhGP,GAgGsBnF,OAAO,CAACoF,SAAR,CAAkB,CAAlB,EAAqBD,YAhG3C;;AAiGClF,6BAAO2B,OAAP,CACCuD,YADD,kBAEU/B,YAAY,CAACV,EAFvB,cAE6BU,YAAY,CAACL,IAF1C;;AAjGD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;2JAuGA,kBACCsC,cADD;AAAA;;AAAA;AAAA;AAAA;AAAA;AAGOrC,gBAAAA,eAHP,GAGyB,KAAKA,eAH9B;AAKOK,gBAAAA,aALP,GAKuB;AACrBa,kBAAAA,eAAe,+DACIlB,eADJ,GACwBqC,cADxB;AADM,iBALvB;AAAA;AAAA,uBAYQ,KAAKC,iDAAL,EAZR;;AAAA;AAAA;AAWSC,gBAAAA,YAXT,yBAWSA,YAXT;AAWuBzC,gBAAAA,MAXvB,yBAWuBA,MAXvB;AAW+BM,gBAAAA,YAX/B,yBAW+BA,YAX/B;AAW6C3C,gBAAAA,GAX7C,yBAW6CA,GAX7C;AAWkD6C,gBAAAA,GAXlD,yBAWkDA,GAXlD;AAAA;AAAA,uBAcOiC,YAAY,CAACC,qBAAb,CAAmC1C,MAAnC,EAA2CO,aAA3C,CAdP;;AAAA;AAgBC,qBAAKpC,OAAL,CAAa,YAAb,EAA2BwE,GAA3B,CAA+B;AAC9B/C,kBAAAA,EAAE,EAAEI,MAAM,CAACJ,EADmB;AAE9BgD,kBAAAA,SAAS,EAAE5C,MAAM,CAACC;AAFY,iBAA/B;AAhBD;AAAA,uBAqBuB,KAAKlD,MAAL,CAAY,OAAZ,EAAqB,QAArB,EAA+BC,OAA/B,CAAuC;AAC5DC,kBAAAA,cAAc,EAAE+C,MAAM,CAACC,IADqC;AAE5DvC,kBAAAA,SAAS,gBAFmD;AAG5DE,kBAAAA,OAAO,EAAEsC;AAHmD,iBAAvC,CArBvB;;AAAA;AAqBOhD,gBAAAA,OArBP;;AA2BCC,6BAAOU,OAAP,CAAeX,OAAO,CAACG,MAAvB;;AAEMwF,gBAAAA,QA7BP,GA6BkB9E,kBAASC,gCAAT,wBACAkC,eADA,mBAEhBhD,OAAO,CAACe,KAFQ,CA7BlB;AAAA;AAAA,uBAkCO,KAAKE,OAAL,CAAa,aAAb,EAA4BC,KAA5B,CAAkCyE,QAAlC,CAlCP;;AAAA;AAoCOtD,gBAAAA,QApCP,GAoCkBuD,2BAASC,QAAT,CAAkBF,QAAlB,CApClB;AAAA,kDAsCQ;AACNtD,kBAAAA,QAAQ,EAARA,QADM;AAENS,kBAAAA,MAAM,EAANA,MAFM;AAGNgD,kBAAAA,YAAY,EAAEH,QAHR;AAINlF,kBAAAA,GAAG,EAAHA,GAJM;AAKN4C,kBAAAA,aAAa,EAAbA,aALM;AAMNC,kBAAAA,GAAG,EAAHA,GANM;AAONF,kBAAAA,YAAY,EAAZA;AAPM,iBAtCR;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;EArPkD2C,8B,gEAEjDC,8BAAYC,eAAZ,GAA8BC,U","sourcesContent":["import { EventSignature } from '@sprucelabs/mercury-types'\nimport { buildSchema } from '@sprucelabs/schema'\nimport {\n\tbuildEmitTargetAndPayloadSchema,\n\teventErrorAssertUtil,\n\teventResponseUtil,\n\teventTargetSchema,\n} from '@sprucelabs/spruce-event-utils'\nimport {\n\tdiskUtil,\n\tMERCURY_API_NAMESPACE,\n\tversionUtil,\n} from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test'\nimport { errorAssertUtil } from '@sprucelabs/test-utils'\nimport AbstractEventTest from '../../../tests/AbstractEventTest'\nimport testUtil from '../../../tests/utilities/test.utility'\n\nexport default class CreatingAListenerTest extends AbstractEventTest {\n\tprivate static readonly expectedVersion =\n\t\tversionUtil.generateVersion().constValue\n\n\t@test()\n\tprotected static async throwsWithBadNamespace() {\n\t\tawait this.installEventFeature('events')\n\t\tconst results = await this.Action('event', 'listen').execute({\n\t\t\teventNamespace: 'taco-bell',\n\t\t})\n\n\t\tassert.isTruthy(results.errors)\n\t\tconst err = results.errors[0]\n\n\t\terrorAssertUtil.assertError(err, 'INVALID_PARAMETERS', {\n\t\t\tparameters: ['eventNamespace'],\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async throwsWithBadEventName() {\n\t\tawait this.installEventFeature('events')\n\t\tconst results = await this.Action('event', 'listen').execute({\n\t\t\teventNamespace: 'mercury',\n\t\t\teventName: 'bad-time',\n\t\t})\n\n\t\tassert.isTruthy(results.errors)\n\t\tconst err = results.errors[0]\n\n\t\terrorAssertUtil.assertError(err, 'INVALID_PARAMETERS', {\n\t\t\tparameters: ['eventName'],\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async createsValidListener() {\n\t\tconst cli = await this.installEventFeature('events')\n\n\t\tconst version = 'v2020_01_01'\n\n\t\tconst results = await this.Action('event', 'listen').execute({\n\t\t\teventNamespace: 'skill',\n\t\t\teventName: 'will-boot',\n\t\t\tversion,\n\t\t})\n\n\t\tassert.isFalsy(results.errors)\n\n\t\tconst match = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t`will-boot.${version}.listener.ts`,\n\t\t\tresults.files\n\t\t)\n\n\t\tassert.doesInclude(match, version)\n\n\t\tawait this.Service('typeChecker').check(match)\n\n\t\tconst health = await cli.checkHealth()\n\n\t\tassert.isTruthy(health.skill)\n\n\t\tassert.isUndefined(health.skill.errors)\n\t\tassert.isTruthy(health.event)\n\n\t\tassert.doesInclude(health.event.listeners, {\n\t\t\teventName: 'will-boot',\n\t\t\teventNamespace: 'skill',\n\t\t\tversion,\n\t\t})\n\t}\n\n\t@test()\n\tprotected static async creatingANewListenerAsksWhichEventToListenTo() {\n\t\tawait this.installEventFeature('events')\n\n\t\tvoid this.Action('event', 'listen').execute({})\n\n\t\tawait this.waitForInput()\n\n\t\tlet lastInvocation = this.ui.lastInvocation()\n\n\t\tassert.isEqual(lastInvocation.command, 'prompt')\n\t\tassert.doesInclude(lastInvocation.options.label, 'namespace')\n\n\t\tawait this.ui.sendInput(MERCURY_API_NAMESPACE)\n\n\t\tawait this.waitForInput()\n\n\t\tlastInvocation = this.ui.lastInvocation()\n\n\t\tassert.doesInclude(lastInvocation.options.label, 'event')\n\n\t\tthis.ui.reset()\n\t}\n\n\t@test()\n\tprotected static async generatesTypedListenerWithoutPayloads() {\n\t\tconst { contents } =\n\t\t\tawait this.setupSkillsInstallAtOrgRegisterEventContractAndGenerateListener(\n\t\t\t\t{\n\t\t\t\t\tisGlobal: true,\n\t\t\t\t}\n\t\t\t)\n\n\t\tassert.doesInclude(\n\t\t\tcontents,\n\t\t\t'export default async (event: SpruceEvent): SpruceEventResponse'\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async generatesTypedListenerWithEmitPayload() {\n\t\tconst { contents, skill2 } =\n\t\t\tawait this.setupSkillsInstallAtOrgRegisterEventContractAndGenerateListener(\n\t\t\t\t{\n\t\t\t\t\temitPayloadSchema: buildEmitTargetAndPayloadSchema({\n\t\t\t\t\t\teventName: 'my-new-event',\n\t\t\t\t\t\ttargetSchema: eventTargetSchema,\n\t\t\t\t\t\tpayloadSchema: {\n\t\t\t\t\t\t\tid: 'myNewEventEmitPayload',\n\t\t\t\t\t\t\tfields: {\n\t\t\t\t\t\t\t\tbooleanField: {\n\t\t\t\t\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t}),\n\t\t\t\t}\n\t\t\t)\n\n\t\tassert.doesInclude(\n\t\t\tcontents,\n\t\t\t'event: SpruceEvent<SkillEventContract, EmitPayload>'\n\t\t)\n\n\t\tassert.doesInclude(\n\t\t\tcontents,\n\t\t\t`fullyQualifiedEventName: '${skill2.slug}.my-new-event::${this.expectedVersion}'`\n\t\t)\n\t}\n\n\t@test()\n\tprotected static async emittingEventTriggersListenerAndCrashesWithListenerNotImplemented() {\n\t\tconst { currentSkill, skill2, eventContract, org } =\n\t\t\tawait this.setupSkillsInstallAtOrgRegisterEventContractAndGenerateListener(\n\t\t\t\t{\n\t\t\t\t\temitPayloadSchema: buildEmitTargetAndPayloadSchema({\n\t\t\t\t\t\teventName: 'my-new-event',\n\t\t\t\t\t\ttargetSchema: {\n\t\t\t\t\t\t\tid: 'myNewEventEmitTarget',\n\t\t\t\t\t\t\tfields: {\n\t\t\t\t\t\t\t\torganizationId: {\n\t\t\t\t\t\t\t\t\ttype: 'id',\n\t\t\t\t\t\t\t\t\tisRequired: true,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tpayloadSchema: {\n\t\t\t\t\t\t\tid: 'myNewEventEmitPayload',\n\t\t\t\t\t\t\tfields: {\n\t\t\t\t\t\t\t\tbooleanField: {\n\t\t\t\t\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t}),\n\t\t\t\t\tresponsePayloadSchema: buildSchema({\n\t\t\t\t\t\tid: 'myNewEventResponsePayload',\n\t\t\t\t\t\tfields: {\n\t\t\t\t\t\t\tbooleanField: {\n\t\t\t\t\t\t\t\ttype: 'boolean',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t}),\n\t\t\t\t}\n\t\t\t)\n\n\t\tconst currentClient = await this.connectToApi({\n\t\t\tshouldAuthAsCurrentSkill: true,\n\t\t})\n\n\t\tawait currentClient.disconnect()\n\n\t\tconst boot = await this.Action('skill', 'boot').execute({ local: true })\n\n\t\tassert.isFalsy(boot.errors)\n\n\t\t//give the skill time to boot\n\t\tawait this.wait(20000)\n\n\t\tconst client = (await this.connectToApi({\n\t\t\tskillId: skill2.id,\n\t\t\tapiKey: skill2.apiKey,\n\t\t})) as any\n\n\t\tconst eventName = `${skill2.slug}.my-new-event::${this.expectedVersion}`\n\n\t\tclient.mixinContract({\n\t\t\teventSignatures: {\n\t\t\t\t[eventName]:\n\t\t\t\t\teventContract.eventSignatures[\n\t\t\t\t\t\t`my-new-event::${this.expectedVersion}`\n\t\t\t\t\t],\n\t\t\t},\n\t\t})\n\n\t\tlet results: any\n\n\t\tdo {\n\t\t\tawait this.wait(5000)\n\n\t\t\tresults = await client.emit(eventName, {\n\t\t\t\ttarget: {\n\t\t\t\t\torganizationId: org.id,\n\t\t\t\t},\n\t\t\t\tpayload: {\n\t\t\t\t\tbooleanField: true,\n\t\t\t\t},\n\t\t\t})\n\t\t} while (results.totalContracts < 1)\n\n\t\tassert.isEqual(results.totalContracts, 1)\n\t\tassert.isEqual(results.totalErrors, 1)\n\t\tassert.isEqual(results.totalResponses, 1)\n\n\t\tboot.meta?.promise?.catch((err: Error) => {\n\t\t\tassert.fail(err.stack)\n\t\t})\n\n\t\tawait boot.meta?.kill()\n\n\t\tconst error = assert.doesThrow(() =>\n\t\t\teventResponseUtil.getFirstResponseOrThrow(results)\n\t\t)\n\n\t\teventErrorAssertUtil.assertError(error, 'LISTENER_NOT_IMPLEMENTED')\n\n\t\tconst responderRef = results.responses[0].responderRef\n\t\tassert.isEqual(\n\t\t\tresponderRef,\n\t\t\t`skill:${currentSkill.id}:${currentSkill.slug}`\n\t\t)\n\t}\n\n\tprivate static async setupSkillsInstallAtOrgRegisterEventContractAndGenerateListener(\n\t\teventSignature: EventSignature\n\t) {\n\t\tconst expectedVersion = this.expectedVersion\n\n\t\tconst eventContract = {\n\t\t\teventSignatures: {\n\t\t\t\t[`my-new-event::${expectedVersion}`]: eventSignature,\n\t\t\t},\n\t\t} as const\n\n\t\tconst { skillFixture, skill2, currentSkill, cli, org } =\n\t\t\tawait this.seedDummySkillRegisterCurrentSkillAndInstallToOrg()\n\n\t\tawait skillFixture.registerEventContract(skill2, eventContract)\n\n\t\tthis.Service('dependency').add({\n\t\t\tid: skill2.id,\n\t\t\tnamespace: skill2.slug,\n\t\t})\n\n\t\tconst results = await this.Action('event', 'listen').execute({\n\t\t\teventNamespace: skill2.slug,\n\t\t\teventName: `my-new-event`,\n\t\t\tversion: expectedVersion,\n\t\t})\n\n\t\tassert.isFalsy(results.errors)\n\n\t\tconst listener = testUtil.assertFileByNameInGeneratedFiles(\n\t\t\t`my-new-event.${expectedVersion}.listener.ts`,\n\t\t\tresults.files\n\t\t)\n\n\t\tawait this.Service('typeChecker').check(listener)\n\n\t\tconst contents = diskUtil.readFile(listener)\n\n\t\treturn {\n\t\t\tcontents,\n\t\t\tskill2,\n\t\t\tlistenerPath: listener,\n\t\t\tcli,\n\t\t\teventContract,\n\t\t\torg,\n\t\t\tcurrentSkill,\n\t\t}\n\t}\n}\n"],"file":"CreatingAListener.test.js"}
|
|
@@ -163,6 +163,13 @@ var KeepingEventsInSyncTest = (_dec = (0, _test.test)(), _dec2 = (0, _test.test)
|
|
|
163
163
|
case 7:
|
|
164
164
|
skill2 = _context3.sent;
|
|
165
165
|
_context3.next = 10;
|
|
166
|
+
return this.Service('dependency').add({
|
|
167
|
+
id: skill2.id,
|
|
168
|
+
namespace: skill2.slug
|
|
169
|
+
});
|
|
170
|
+
|
|
171
|
+
case 10:
|
|
172
|
+
_context3.next = 12;
|
|
166
173
|
return skills.registerEventContract(skill2, {
|
|
167
174
|
eventSignatures: {
|
|
168
175
|
'test-sync::v2021_01_01': {
|
|
@@ -171,25 +178,25 @@ var KeepingEventsInSyncTest = (_dec = (0, _test.test)(), _dec2 = (0, _test.test)
|
|
|
171
178
|
}
|
|
172
179
|
});
|
|
173
180
|
|
|
174
|
-
case
|
|
175
|
-
_context3.next =
|
|
181
|
+
case 12:
|
|
182
|
+
_context3.next = 14;
|
|
176
183
|
return this.Action('event', 'sync').execute({});
|
|
177
184
|
|
|
178
|
-
case
|
|
185
|
+
case 14:
|
|
179
186
|
results = _context3.sent;
|
|
180
|
-
_context3.next =
|
|
187
|
+
_context3.next = 17;
|
|
181
188
|
return this.assertValidSyncEventsResults(results);
|
|
182
189
|
|
|
183
|
-
case
|
|
190
|
+
case 17:
|
|
184
191
|
fqen = _spruceEventUtils.eventNameUtil.join({
|
|
185
192
|
eventName: 'test-sync',
|
|
186
193
|
version: 'v2021_01_01',
|
|
187
194
|
eventNamespace: skill2.slug
|
|
188
195
|
});
|
|
189
|
-
_context3.next =
|
|
196
|
+
_context3.next = 20;
|
|
190
197
|
return this.assertGlobalEventsAreTyped(fqen);
|
|
191
198
|
|
|
192
|
-
case
|
|
199
|
+
case 20:
|
|
193
200
|
case "end":
|
|
194
201
|
return _context3.stop();
|
|
195
202
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/__tests__/behavioral/events/KeepingEventsInSync.test.ts"],"names":["coreContract","eventContractUtil","unifyContracts","coreEventContracts","KeepingEventsInSyncTest","resolveHashSprucePath","Cli","assert","isFunction","Action","execute","FeatureFixture","installCachedFeatures","skipInstallSkillPrompts","results","assertValidSyncEventsResults","skills","getSkillFixture","registerCurrentSkill","name","seedDemoSkill","skill2","registerEventContract","eventSignatures","isGlobal","fqen","eventNameUtil","join","eventName","version","eventNamespace","slug","assertGlobalEventsAreTyped","skillEventContractTypesFile","contents","diskUtil","readFile","eventContractPath","doesInclude","promise","syncCoreEventsPretendingToBeMercuryTypes","cli","event","getFeature","wasHit","getEventContractBuilder","assertCoreEventContractsSavedToDisk","assertCorePayloadSchemasAreCreated","isFalse","doesFileExist","oldGetter","bind","isTrue","assertValidSyncSchemasResults","shouldSyncOnlyCoreEvents","eventBuilderFile","builder","writeFile","resolvePath","Service","uninstall","isFalsy","errors","assertEventsHavePayloads","assertCombinedContractContents","coreContractContents","search","doesNotInclude","importCombinedContractsFile","imported","isTruthy","isArray","localContract","sigs","getNamedEventSignatures","sig","getSignatureByName","fullyQualifiedEventName","eventContractsFile","doesDirExist","importDefault","contract","signature","emitPayloadSchema","responsePayloadSchema","shouldHaveWritten","filesToCheck","path","pathUtil","sep","MERCURY_API_NAMESPACE","assertFilesWereGenerated","file","expected","doesExist","namesUtil","toCamel","AbstractEventTest"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AAKA;;AACA;;AAIA;;AAKA;;AAEA;;;;;;;;;;;;;;AAEA,IAAMA,YAAY,GAAGC,oCAAkBC,cAAlB,CACpBC,qCADoB,CAArB;;IAIqBC,uB,WAKnB,iB,UAMA,iB,UAWA,iB,UA+BA,iB,UAcA,iB,UAaA,iB,UAoBA,iB,UAwBA,iB;;;;;;;;;;;;SA3HD,eAAuC;AACtC,aAAO,KAAKC,qBAAL,CAA2B,QAA3B,EAAqC,oBAArC,CAAP;AACA;;;;+GAED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAEO,KAAKC,GAAL,EAFP;;AAAA;AAGCC,6BAAOC,UAAP,CAAkB,KAAKC,MAAL,CAAY,OAAZ,EAAqB,MAArB,EAA6BC,OAA/C;;AAHD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;iIAMA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAEO,KAAKC,cAAL,GAAsBC,qBAAtB,CAA4C,oBAA5C,CAFP;;AAAA;AAAA;AAAA,uBAIuB,KAAKC,uBAAL,CAA6B;AAAA,yBAClD,KAAI,CAACJ,MAAL,CAAY,OAAZ,EAAqB,MAArB,EAA6BC,OAA7B,CAAqC,EAArC,CADkD;AAAA,iBAA7B,CAJvB;;AAAA;AAIOI,gBAAAA,OAJP;AAAA;AAAA,uBAQO,KAAKC,4BAAL,CAAkCD,OAAlC,CARP;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;8GAWA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAEO,KAAKH,cAAL,GAAsBC,qBAAtB,CAA4C,QAA5C,CAFP;;AAAA;AAIOI,gBAAAA,MAJP,GAIgB,KAAKC,eAAL,EAJhB;AAAA;AAAA,uBAKOD,MAAM,CAACE,oBAAP,CAA4B;AACjCC,kBAAAA,IAAI,EAAE;AAD2B,iBAA5B,CALP;;AAAA;AAAA;AAAA,uBASsBH,MAAM,CAACI,aAAP,CAAqB;AAAED,kBAAAA,IAAI,EAAE;AAAR,iBAArB,CATtB;;AAAA;AASOE,gBAAAA,MATP;AAAA;AAAA,uBAWOL,MAAM,CAACM,qBAAP,CAA6BD,MAA7B,EAAqC;AAC1CE,kBAAAA,eAAe,EAAE;AAChB,8CAA0B;AACzBC,sBAAAA,QAAQ,EAAE;AADe;AADV;AADyB,iBAArC,CAXP;;AAAA;AAAA;AAAA,uBAmBuB,KAAKf,MAAL,CAAY,OAAZ,EAAqB,MAArB,EAA6BC,OAA7B,CAAqC,EAArC,CAnBvB;;AAAA;AAmBOI,gBAAAA,OAnBP;AAAA;AAAA,uBAqBO,KAAKC,4BAAL,CAAkCD,OAAlC,CArBP;;AAAA;AAuBOW,gBAAAA,IAvBP,GAuBcC,gCAAcC,IAAd,CAAmB;AAC/BC,kBAAAA,SAAS,EAAE,WADoB;AAE/BC,kBAAAA,OAAO,EAAE,aAFsB;AAG/BC,kBAAAA,cAAc,EAAET,MAAM,CAACU;AAHQ,iBAAnB,CAvBd;AAAA;AAAA,uBA4BO,KAAKC,0BAAL,CAAgCP,IAAhC,CA5BP;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;6HA+BA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAEO,KAAKd,cAAL,GAAsBC,qBAAtB,CAA4C,oBAA5C,CAFP;;AAAA;AAAA;AAAA,uBAIO,KAAKC,uBAAL,CAA6B;AAAA,yBAClC,MAAI,CAACJ,MAAL,CAAY,OAAZ,EAAqB,MAArB,EAA6BC,OAA7B,CAAqC;AACpCuB,oBAAAA,2BAA2B,EAAE;AADO,mBAArC,CADkC;AAAA,iBAA7B,CAJP;;AAAA;AAUOC,gBAAAA,QAVP,GAUkBC,2BAASC,QAAT,CAAkB,KAAKC,iBAAvB,CAVlB;;AAWC9B,6BAAO+B,WAAP,CAAmBJ,QAAnB;;AAXD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;iHAcA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAEO,KAAKvB,cAAL,GAAsBC,qBAAtB,CAA4C,oBAA5C,CAFP;;AAAA;AAIO2B,gBAAAA,OAJP,GAIiB,KAAKC,wCAAL,EAJjB;AAAA;AAAA,uBAMO,KAAK3B,uBAAL,EANP;;AAAA;AAAA;AAAA,uBAQuB0B,OARvB;;AAAA;AAQOzB,gBAAAA,OARP;AAAA;AAAA,uBAUO,KAAKC,4BAAL,CAAkCD,OAAlC,EAA2C,IAA3C,CAVP;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;4JAaA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAEmB,KAAKH,cAAL,GAAsBC,qBAAtB,CAA4C,QAA5C,CAFnB;;AAAA;AAEO6B,gBAAAA,GAFP;AAGOC,gBAAAA,KAHP,GAGeD,GAAG,CAACE,UAAJ,CAAe,OAAf,CAHf;AAIKC,gBAAAA,MAJL,GAIc,KAJd,EAMC;;AACAF,gBAAAA,KAAK,CAACG,uBAAN,GAAgC,YAAM;AACrCD,kBAAAA,MAAM,GAAG,IAAT;AACA,iBAFD;;AAPD;AAAA,uBAWuB,KAAKnC,MAAL,CAAY,QAAZ,EAAsB,MAAtB,EAA8BC,OAA9B,CAAsC,EAAtC,CAXvB;;AAAA;AAWOI,gBAAAA,OAXP;AAaC,qBAAKgC,mCAAL,CAAyC,KAAzC;AACA,qBAAKC,kCAAL,CAAwCjC,OAAxC,EAAiD,KAAjD;;AAEAP,6BAAOyC,OAAP,CAAeJ,MAAf;;AACArC,6BAAOyC,OAAP,CAAeb,2BAASc,aAAT,CAAuB,KAAKZ,iBAA5B,CAAf;;AAjBD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;6JAoBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAEmB,KAAK1B,cAAL,GAAsBC,qBAAtB,CAA4C,QAA5C,CAFnB;;AAAA;AAEO6B,gBAAAA,GAFP;AAAA;AAAA,uBAIO,KAAKhC,MAAL,CAAY,OAAZ,EAAqB,MAArB,EAA6BC,OAA7B,CAAqC,EAArC,CAJP;;AAAA;AAMOgC,gBAAAA,KANP,GAMeD,GAAG,CAACE,UAAJ,CAAe,OAAf,CANf;AAOKC,gBAAAA,MAPL,GAOc,KAPd;AASOM,gBAAAA,SATP,GASmBR,KAAK,CAACG,uBAAN,CAA8BM,IAA9B,CAAmCT,KAAnC,CATnB,EAWC;;AACAA,gBAAAA,KAAK,CAACG,uBAAN,GAAgC,YAAM;AACrCD,kBAAAA,MAAM,GAAG,IAAT;AACA,yBAAOM,SAAS,EAAhB;AACA,iBAHD;;AAZD;AAAA,uBAiBuB,KAAKzC,MAAL,CAAY,QAAZ,EAAsB,MAAtB,EAA8BC,OAA9B,CAAsC,EAAtC,CAjBvB;;AAAA;AAiBOI,gBAAAA,OAjBP;;AAmBCP,6BAAO6C,MAAP,CAAcR,MAAd;;AAnBD;AAAA,uBAqBO,KAAKS,6BAAL,CAAmCvC,OAAnC,EAA4C,KAA5C,CArBP;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;+IAwBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAEO,KAAKH,cAAL,GAAsBC,qBAAtB,CAA4C,QAA5C,CAFP;;AAAA;AAAA;AAAA,uBAIO,KAAK4B,wCAAL,EAJP;;AAAA;AAAA;AAAA,uBAMuB,KAAK/B,MAAL,CAAY,QAAZ,EAAsB,MAAtB,EAA8BC,OAA9B,CAAsC,EAAtC,CANvB;;AAAA;AAMOI,gBAAAA,OANP;AAAA;AAAA,uBAOO,KAAKuC,6BAAL,CAAmCvC,OAAnC,EAA4C,IAA5C,CAPP;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;oIAUA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBACuB,KAAKL,MAAL,CAAY,OAAZ,EAAqB,MAArB,EAA6BC,OAA7B,CAAqC;AAC1D4C,kBAAAA,wBAAwB,EAAE,IADgC;AAE1DC,kBAAAA,gBAAgB,EAAE,kBAFwC;AAG1DtB,kBAAAA,2BAA2B,EAAE;AAH6B,iBAArC,CADvB;;AAAA;AACOnB,gBAAAA,OADP;AAOO0C,gBAAAA,OAPP;;AAYCrB,2CAASsB,SAAT,CAAmB,KAAKC,WAAL,CAAiB,KAAjB,EAAwB,YAAxB,CAAnB,EAA0DF,OAA1D;;AAZD;AAAA,uBAaO,KAAKG,OAAL,CAAa,KAAb,EAAoBC,SAApB,CAA8B,CACnC,2BADmC,EAEnC,4BAFmC,EAGnC,iCAHmC,CAA9B,CAbP;;AAAA;AAAA,kDAkBQ9C,OAlBR;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;wHAqBA,mBACCA,OADD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAECwC,gBAAAA,wBAFD,iEAE4B,KAF5B;;AAIC/C,6BAAOsD,OAAP,CAAe/C,OAAO,CAACgD,MAAvB;;AAJD;AAAA,uBAMO,KAAKT,6BAAL,CAAmCvC,OAAnC,EAA4CwC,wBAA5C,CANP;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;sHASA,mBAAgD1B,SAAhD;AAAA;AAAA;AAAA;AAAA;AAAA;AACOM,gBAAAA,QADP,GACkBC,2BAASC,QAAT,CAAkB,KAAKC,iBAAvB,CADlB;;AAGC9B,6BAAO+B,WAAP,CAAmBJ,QAAnB,aAAiCN,SAAjC;;AAHD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;yHAMA,mBACCd,OADD,EAECwC,wBAFD;AAAA;AAAA;AAAA;AAAA;AAAA;AAIC/C,6BAAOsD,OAAP,CAAe/C,OAAO,CAACgD,MAAvB;;AAEA,qBAAKhB,mCAAL,CAAyCQ,wBAAzC;AACA,qBAAKP,kCAAL,CAAwCjC,OAAxC,EAAiDwC,wBAAjD;AAPD;AAAA,uBASO,KAAKS,wBAAL,CAA8BjD,OAA9B,CATP;;AAAA;AAAA;AAAA,uBAUO,KAAKkD,8BAAL,EAVP;;AAAA;AAYOC,gBAAAA,oBAZP,GAY8B9B,2BAASC,QAAT,CAAkB,KAAKC,iBAAvB,CAZ9B;AAaO6B,gBAAAA,MAbP;;AAeC,oBAAIZ,wBAAJ,EAA8B;AAC7B/C,+BAAO+B,WAAP,CAAmB2B,oBAAnB,EAAyCC,MAAzC;AACA,iBAFD,MAEO;AACN3D,+BAAO4D,cAAP,CAAsBF,oBAAtB,EAA4CC,MAA5C;AACA;;AAnBF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;0HAsBA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBACwB,KAAKE,2BAAL,EADxB;;AAAA;AACOC,gBAAAA,QADP;;AAGC9D,6BAAO+D,QAAP,CAAgBD,QAAhB;;AACA9D,6BAAOgE,OAAP,CAAeF,QAAf;;AAEMG,gBAAAA,aANP,GAMuBvE,oCAAkBC,cAAlB,CAAiCmE,QAAjC,CANvB;;AAOC9D,6BAAO+D,QAAP,CAAgBE,aAAhB;;AAEMC,gBAAAA,IATP,GAScxE,oCAAkByE,uBAAlB,CAA0C1E,YAA1C,CATd;AAAA,uDAWmByE,IAXnB;;AAAA;AAWC,sEAAwB;AAAbE,oBAAAA,GAAa;;AACvB1E,wDAAkB2E,kBAAlB,CACCJ,aADD,EAECG,GAAG,CAACE,uBAFL;AAIA;AAhBF;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;uHAmBA;AAAA;AAAA;AAAA;AAAA;AAAA;AACOC,gBAAAA,kBADP,GAC4B,KAAKzC,iBADjC,EAGC;;AACA,oBACCF,2BAAS4C,YAAT,CACC,KAAKrB,WAAL,CAAiB,wCAAjB,CADD,CADD,EAIE;AACKxB,kBAAAA,QADL,GACgBC,2BAASC,QAAT,CAAkB0C,kBAAlB,CADhB;;AAED3C,6CAASsB,SAAT,CACCqB,kBADD,gDAEwC5C,QAFxC;AAIA;;AAdF;AAAA,uBAgByC,KAAKyB,OAAL,CACvC,QADuC,EAEtCqB,aAFsC,CAExBF,kBAFwB,CAhBzC;;AAAA;AAgBOT,gBAAAA,QAhBP;AAAA,mDAoBQA,QApBR;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;;oHAuBA,mBACCvD,OADD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAECc,gBAAAA,SAFD,iEAEa,cAFb;AAAA;AAAA,uBAIwB,KAAKwC,2BAAL,EAJxB;;AAAA;AAIOC,gBAAAA,QAJP;AAKOY,gBAAAA,QALP,GAKkBhF,oCAAkBC,cAAlB,CAAiCmE,QAAjC,CALlB;;AAOC9D,6BAAO+D,QAAP,CAAgBW,QAAhB;;AAEA,yDAAsBA,QAAtB;AAEMC,gBAAAA,SAXP,GAWmBjF,oCAAkB2E,kBAAlB,CAAqCK,QAArC,EAA+CrD,SAA/C,CAXnB;;AAaCrB,6BAAO+D,QAAP,CAAgBY,SAAS,CAACC,iBAA1B;;AACA,4CAAeD,SAAS,CAACC,iBAAzB;;AAEA5E,6BAAO+D,QAAP,CAAgBY,SAAS,CAACE,qBAA1B;;AACA,4CAAeF,SAAS,CAACE,qBAAzB;;AAjBD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,O;;;;;;;;;;WAoBA,4CACCtE,OADD,EAGE;AAAA,UADDuE,iBACC,uEADmB,IACnB;AACD,UAAMC,YAAY,GAAG,CACpB;AACCnE,QAAAA,IAAI,qDADL;AAECoE,QAAAA,IAAI,mBAAYC,iBAASC,GAArB,SAA2BC,uCAA3B;AAFL,OADoB,CAArB;AAOA,WAAKC,wBAAL,CAA8BL,YAA9B,EAA4CxE,OAA5C,EAAqDuE,iBAArD;AACA;;;WAED,kCACCC,YADD,EAECxE,OAFD,EAIE;AAAA,UADDuE,iBACC,uEADmB,IACnB;;AAAA,kDACkBC,YADlB;AAAA;;AAAA;AACD,+DAAiC;AAAA,cAAtBM,IAAsB;AAChC,cAAMC,QAAQ,GAAG,KAAKxF,qBAAL,CAChB,6BADgB,EAEhBuF,IAAI,CAACzE,IAFW,CAAjB;;AAIA,cAAM2E,SAAS,GAAG3D,2BAASc,aAAT,CAAuB4C,QAAvB,CAAlB;;AAEA,cAAIR,iBAAJ,EAAuB;AACtB9E,yBAAO6C,MAAP,CAAc0C,SAAd,6BAA6CF,IAA7C;AACA,WAFD,MAEO;AACNrF,yBAAOyC,OAAP,CAAe8C,SAAf,oCAAqDF,IAArD;AACA;AACD;AAbA;AAAA;AAAA;AAAA;AAAA;AAcD;;;WAED,+CAA6E;AAAA,UAA1BP,iBAA0B,uEAAN,IAAM;;AAC5E,UAAMZ,IAAI,GAAGxE,oCAAkByE,uBAAlB,CAA0C1E,YAA1C,CAAb;;AAD4E,kDAG1DyE,IAH0D;AAAA;;AAAA;AAG5E,+DAAwB;AAAA,cAAbE,GAAa;AACvB,cAAMkB,QAAQ,GAAG,KAAKxF,qBAAL,0BACE0F,4BAAUC,OAAV,CACjBrB,GAAG,CAAC/C,SADa,CADF,8BAAjB;;AAKA,cAAMkE,SAAS,GAAG3D,2BAASc,aAAT,CAAuB4C,QAAvB,CAAlB;;AAEA,cAAIR,iBAAJ,EAAuB;AACtB9E,yBAAO6C,MAAP,CAAc0C,SAAd,qCAAqDD,QAArD;AACA,WAFD,MAEO;AACNtF,yBAAOyC,OAAP,CACC8C,SADD,mCAE2BnB,GAAG,CAACE,uBAF/B;AAIA;AACD;AAnB2E;AAAA;AAAA;AAAA;AAAA;AAoB5E;;;EApTmDoB,8B","sourcesContent":["import pathUtil from 'path'\nimport { coreEventContracts } from '@sprucelabs/mercury-core-events'\nimport {\n\tEventContract,\n\tSpruceSchemas,\n\tvalidateEventContract,\n} from '@sprucelabs/mercury-types'\nimport { validateSchema } from '@sprucelabs/schema'\nimport {\n\teventContractUtil,\n\teventNameUtil,\n} from '@sprucelabs/spruce-event-utils'\nimport {\n\tdiskUtil,\n\tMERCURY_API_NAMESPACE,\n\tnamesUtil,\n} from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test'\nimport { FeatureActionResponse } from '../../../features/features.types'\nimport AbstractEventTest from '../../../tests/AbstractEventTest'\n\nconst coreContract = eventContractUtil.unifyContracts(\n\tcoreEventContracts as any\n) as SpruceSchemas.Mercury.v2020_12_25.EventContract\n\nexport default class KeepingEventsInSyncTest extends AbstractEventTest {\n\tprivate static get eventContractPath() {\n\t\treturn this.resolveHashSprucePath('events', 'events.contract.ts')\n\t}\n\n\t@test()\n\tprotected static async hasSyncEventsAction() {\n\t\tawait this.Cli()\n\t\tassert.isFunction(this.Action('event', 'sync').execute)\n\t}\n\n\t@test()\n\tprotected static async syncsWithoutSavingCoreEventsByDefault() {\n\t\tawait this.FeatureFixture().installCachedFeatures('eventsInNodeModule')\n\n\t\tconst results = await this.skipInstallSkillPrompts(() =>\n\t\t\tthis.Action('event', 'sync').execute({})\n\t\t)\n\n\t\tawait this.assertValidSyncEventsResults(results)\n\t}\n\n\t@test()\n\tprotected static async mergesGlobalEvents() {\n\t\tawait this.FeatureFixture().installCachedFeatures('events')\n\n\t\tconst skills = this.getSkillFixture()\n\t\tawait skills.registerCurrentSkill({\n\t\t\tname: 'events in sync skill',\n\t\t})\n\n\t\tconst skill2 = await skills.seedDemoSkill({ name: 'a temp skill' })\n\n\t\tawait skills.registerEventContract(skill2, {\n\t\t\teventSignatures: {\n\t\t\t\t'test-sync::v2021_01_01': {\n\t\t\t\t\tisGlobal: true,\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\n\t\tconst results = await this.Action('event', 'sync').execute({})\n\n\t\tawait this.assertValidSyncEventsResults(results)\n\n\t\tconst fqen = eventNameUtil.join({\n\t\t\teventName: 'test-sync',\n\t\t\tversion: 'v2021_01_01',\n\t\t\teventNamespace: skill2.slug,\n\t\t})\n\t\tawait this.assertGlobalEventsAreTyped(fqen)\n\t}\n\n\t@test()\n\tprotected static async canSetSkillEventContractTypesFile() {\n\t\tawait this.FeatureFixture().installCachedFeatures('eventsInNodeModule')\n\n\t\tawait this.skipInstallSkillPrompts(() =>\n\t\t\tthis.Action('event', 'sync').execute({\n\t\t\t\tskillEventContractTypesFile: 'testy test',\n\t\t\t})\n\t\t)\n\n\t\tconst contents = diskUtil.readFile(this.eventContractPath)\n\t\tassert.doesInclude(contents, `declare module 'testy test'`)\n\t}\n\n\t@test()\n\tprotected static async canSyncOnlyCoreEvents() {\n\t\tawait this.FeatureFixture().installCachedFeatures('eventsInNodeModule')\n\n\t\tconst promise = this.syncCoreEventsPretendingToBeMercuryTypes()\n\n\t\tawait this.skipInstallSkillPrompts()\n\n\t\tconst results = await promise\n\n\t\tawait this.assertValidSyncEventsResults(results, true)\n\t}\n\n\t@test()\n\tprotected static async syncingSchemasDoesNotSyncEventSchemasIfEventsHaveNeverBeenSynced() {\n\t\tconst cli = await this.FeatureFixture().installCachedFeatures('events')\n\t\tconst event = cli.getFeature('event')\n\t\tlet wasHit = false\n\n\t\t//@ts-ignore\n\t\tevent.getEventContractBuilder = () => {\n\t\t\twasHit = true\n\t\t}\n\n\t\tconst results = await this.Action('schema', 'sync').execute({})\n\n\t\tthis.assertCoreEventContractsSavedToDisk(false)\n\t\tthis.assertCorePayloadSchemasAreCreated(results, false)\n\n\t\tassert.isFalse(wasHit)\n\t\tassert.isFalse(diskUtil.doesFileExist(this.eventContractPath))\n\t}\n\n\t@test()\n\tprotected static async syncingSchemaAfterSyncEventsSyncsSchemasAndDoesNotWriteCoreEvents() {\n\t\tconst cli = await this.FeatureFixture().installCachedFeatures('events')\n\n\t\tawait this.Action('event', 'sync').execute({})\n\n\t\tconst event = cli.getFeature('event')\n\t\tlet wasHit = false\n\n\t\tconst oldGetter = event.getEventContractBuilder.bind(event)\n\n\t\t//@ts-ignore\n\t\tevent.getEventContractBuilder = () => {\n\t\t\twasHit = true\n\t\t\treturn oldGetter()\n\t\t}\n\n\t\tconst results = await this.Action('schema', 'sync').execute({})\n\n\t\tassert.isTrue(wasHit)\n\n\t\tawait this.assertValidSyncSchemasResults(results, false)\n\t}\n\n\t@test()\n\tprotected static async syncingSchemasAfterSyncingCoreEventsSavesCoreEvents() {\n\t\tawait this.FeatureFixture().installCachedFeatures('events')\n\n\t\tawait this.syncCoreEventsPretendingToBeMercuryTypes()\n\n\t\tconst results = await this.Action('schema', 'sync').execute({})\n\t\tawait this.assertValidSyncSchemasResults(results, true)\n\t}\n\n\tprivate static async syncCoreEventsPretendingToBeMercuryTypes() {\n\t\tconst results = await this.Action('event', 'sync').execute({\n\t\t\tshouldSyncOnlyCoreEvents: true,\n\t\t\teventBuilderFile: '../../../builder',\n\t\t\tskillEventContractTypesFile: '../../builder',\n\t\t})\n\n\t\tconst builder = `\nexport function buildEventContract(..._: any[]):any { return _[0] }\nexport function buildPermissionContract(..._: any[]):any { return _[0] }\n`\n\n\t\tdiskUtil.writeFile(this.resolvePath('src', 'builder.ts'), builder)\n\t\tawait this.Service('pkg').uninstall([\n\t\t\t'@sprucelabs/mercury-types',\n\t\t\t'@sprucelabs/mercury-client',\n\t\t\t'@sprucelabs/spruce-event-plugin',\n\t\t])\n\t\treturn results\n\t}\n\n\tprivate static async assertValidSyncEventsResults(\n\t\tresults: FeatureActionResponse,\n\t\tshouldSyncOnlyCoreEvents = false\n\t) {\n\t\tassert.isFalsy(results.errors)\n\n\t\tawait this.assertValidSyncSchemasResults(results, shouldSyncOnlyCoreEvents)\n\t}\n\n\tprivate static async assertGlobalEventsAreTyped(eventName: string) {\n\t\tconst contents = diskUtil.readFile(this.eventContractPath)\n\n\t\tassert.doesInclude(contents, `'${eventName}':`)\n\t}\n\n\tprivate static async assertValidSyncSchemasResults(\n\t\tresults: FeatureActionResponse,\n\t\tshouldSyncOnlyCoreEvents: boolean\n\t) {\n\t\tassert.isFalsy(results.errors)\n\n\t\tthis.assertCoreEventContractsSavedToDisk(shouldSyncOnlyCoreEvents)\n\t\tthis.assertCorePayloadSchemasAreCreated(results, shouldSyncOnlyCoreEvents)\n\n\t\tawait this.assertEventsHavePayloads(results)\n\t\tawait this.assertCombinedContractContents()\n\n\t\tconst coreContractContents = diskUtil.readFile(this.eventContractPath)\n\t\tconst search = `did-message::v2020_12_25': MercuryDidMessageEventContract_v2020_12_25['eventSignatures']['did-message::v2020_12_25']`\n\n\t\tif (shouldSyncOnlyCoreEvents) {\n\t\t\tassert.doesInclude(coreContractContents, search)\n\t\t} else {\n\t\t\tassert.doesNotInclude(coreContractContents, search)\n\t\t}\n\t}\n\n\tprivate static async assertCombinedContractContents() {\n\t\tconst imported = await this.importCombinedContractsFile()\n\n\t\tassert.isTruthy(imported)\n\t\tassert.isArray(imported)\n\n\t\tconst localContract = eventContractUtil.unifyContracts(imported)\n\t\tassert.isTruthy(localContract)\n\n\t\tconst sigs = eventContractUtil.getNamedEventSignatures(coreContract)\n\n\t\tfor (const sig of sigs) {\n\t\t\teventContractUtil.getSignatureByName(\n\t\t\t\tlocalContract,\n\t\t\t\tsig.fullyQualifiedEventName\n\t\t\t)\n\t\t}\n\t}\n\n\tprivate static async importCombinedContractsFile(): Promise<EventContract[]> {\n\t\tconst eventContractsFile = this.eventContractPath\n\n\t\t// hack import to bring types in when importing contract file\n\t\tif (\n\t\t\tdiskUtil.doesDirExist(\n\t\t\t\tthis.resolvePath('node_modules/@sprucelabs/mercury-types')\n\t\t\t)\n\t\t) {\n\t\t\tconst contents = diskUtil.readFile(eventContractsFile)\n\t\t\tdiskUtil.writeFile(\n\t\t\t\teventContractsFile,\n\t\t\t\t`import '@sprucelabs/mercury-types'\\n${contents}`\n\t\t\t)\n\t\t}\n\n\t\tconst imported: EventContract[] = await this.Service(\n\t\t\t'import'\n\t\t).importDefault(eventContractsFile)\n\n\t\treturn imported\n\t}\n\n\tprivate static async assertEventsHavePayloads(\n\t\tresults: FeatureActionResponse,\n\t\teventName = 'authenticate'\n\t) {\n\t\tconst imported = await this.importCombinedContractsFile()\n\t\tconst contract = eventContractUtil.unifyContracts(imported)\n\n\t\tassert.isTruthy(contract)\n\n\t\tvalidateEventContract(contract)\n\n\t\tconst signature = eventContractUtil.getSignatureByName(contract, eventName)\n\n\t\tassert.isTruthy(signature.emitPayloadSchema)\n\t\tvalidateSchema(signature.emitPayloadSchema)\n\n\t\tassert.isTruthy(signature.responsePayloadSchema)\n\t\tvalidateSchema(signature.responsePayloadSchema)\n\t}\n\n\tprivate static assertCorePayloadSchemasAreCreated(\n\t\tresults: FeatureActionResponse,\n\t\tshouldHaveWritten = true\n\t) {\n\t\tconst filesToCheck = [\n\t\t\t{\n\t\t\t\tname: `unregisterListenersEmitTargetAndPayload.schema.ts`,\n\t\t\t\tpath: `schemas${pathUtil.sep}${MERCURY_API_NAMESPACE}`,\n\t\t\t},\n\t\t]\n\n\t\tthis.assertFilesWereGenerated(filesToCheck, results, shouldHaveWritten)\n\t}\n\n\tprivate static assertFilesWereGenerated(\n\t\tfilesToCheck: { name: string; path: string }[],\n\t\tresults: FeatureActionResponse,\n\t\tshouldHaveWritten = true\n\t) {\n\t\tfor (const file of filesToCheck) {\n\t\t\tconst expected = this.resolveHashSprucePath(\n\t\t\t\t'schemas/mercury/v2020_12_25',\n\t\t\t\tfile.name\n\t\t\t)\n\t\t\tconst doesExist = diskUtil.doesFileExist(expected)\n\n\t\t\tif (shouldHaveWritten) {\n\t\t\t\tassert.isTrue(doesExist, `Expected to find ${file} on the filesystem.`)\n\t\t\t} else {\n\t\t\t\tassert.isFalse(doesExist, `Should not have written ${file}.`)\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate static assertCoreEventContractsSavedToDisk(shouldHaveWritten = true) {\n\t\tconst sigs = eventContractUtil.getNamedEventSignatures(coreContract)\n\n\t\tfor (const sig of sigs) {\n\t\t\tconst expected = this.resolveHashSprucePath(\n\t\t\t\t`events/mercury/${namesUtil.toCamel(\n\t\t\t\t\tsig.eventName\n\t\t\t\t)}.v2020_12_25.contract.ts`\n\t\t\t)\n\t\t\tconst doesExist = diskUtil.doesFileExist(expected)\n\n\t\t\tif (shouldHaveWritten) {\n\t\t\t\tassert.isTrue(doesExist, `Expected to write a file ${expected}.`)\n\t\t\t} else {\n\t\t\t\tassert.isFalse(\n\t\t\t\t\tdoesExist,\n\t\t\t\t\t`Generated contract for ${sig.fullyQualifiedEventName} and it should not have because it's a core contract.`\n\t\t\t\t)\n\t\t\t}\n\t\t}\n\t}\n}\n"],"file":"KeepingEventsInSync.test.js"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/__tests__/behavioral/events/KeepingEventsInSync.test.ts"],"names":["coreContract","eventContractUtil","unifyContracts","coreEventContracts","KeepingEventsInSyncTest","resolveHashSprucePath","Cli","assert","isFunction","Action","execute","FeatureFixture","installCachedFeatures","skipInstallSkillPrompts","results","assertValidSyncEventsResults","skills","getSkillFixture","registerCurrentSkill","name","seedDemoSkill","skill2","Service","add","id","namespace","slug","registerEventContract","eventSignatures","isGlobal","fqen","eventNameUtil","join","eventName","version","eventNamespace","assertGlobalEventsAreTyped","skillEventContractTypesFile","contents","diskUtil","readFile","eventContractPath","doesInclude","promise","syncCoreEventsPretendingToBeMercuryTypes","cli","event","getFeature","wasHit","getEventContractBuilder","assertCoreEventContractsSavedToDisk","assertCorePayloadSchemasAreCreated","isFalse","doesFileExist","oldGetter","bind","isTrue","assertValidSyncSchemasResults","shouldSyncOnlyCoreEvents","eventBuilderFile","builder","writeFile","resolvePath","uninstall","isFalsy","errors","assertEventsHavePayloads","assertCombinedContractContents","coreContractContents","search","doesNotInclude","importCombinedContractsFile","imported","isTruthy","isArray","localContract","sigs","getNamedEventSignatures","sig","getSignatureByName","fullyQualifiedEventName","eventContractsFile","doesDirExist","importDefault","contract","signature","emitPayloadSchema","responsePayloadSchema","shouldHaveWritten","filesToCheck","path","pathUtil","sep","MERCURY_API_NAMESPACE","assertFilesWereGenerated","file","expected","doesExist","namesUtil","toCamel","AbstractEventTest"],"mappings":"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","sourcesContent":["import pathUtil from 'path'\nimport { coreEventContracts } from '@sprucelabs/mercury-core-events'\nimport {\n\tEventContract,\n\tSpruceSchemas,\n\tvalidateEventContract,\n} from '@sprucelabs/mercury-types'\nimport { validateSchema } from '@sprucelabs/schema'\nimport {\n\teventContractUtil,\n\teventNameUtil,\n} from '@sprucelabs/spruce-event-utils'\nimport {\n\tdiskUtil,\n\tMERCURY_API_NAMESPACE,\n\tnamesUtil,\n} from '@sprucelabs/spruce-skill-utils'\nimport { test, assert } from '@sprucelabs/test'\nimport { FeatureActionResponse } from '../../../features/features.types'\nimport AbstractEventTest from '../../../tests/AbstractEventTest'\n\nconst coreContract = eventContractUtil.unifyContracts(\n\tcoreEventContracts as any\n) as SpruceSchemas.Mercury.v2020_12_25.EventContract\n\nexport default class KeepingEventsInSyncTest extends AbstractEventTest {\n\tprivate static get eventContractPath() {\n\t\treturn this.resolveHashSprucePath('events', 'events.contract.ts')\n\t}\n\n\t@test()\n\tprotected static async hasSyncEventsAction() {\n\t\tawait this.Cli()\n\t\tassert.isFunction(this.Action('event', 'sync').execute)\n\t}\n\n\t@test()\n\tprotected static async syncsWithoutSavingCoreEventsByDefault() {\n\t\tawait this.FeatureFixture().installCachedFeatures('eventsInNodeModule')\n\n\t\tconst results = await this.skipInstallSkillPrompts(() =>\n\t\t\tthis.Action('event', 'sync').execute({})\n\t\t)\n\n\t\tawait this.assertValidSyncEventsResults(results)\n\t}\n\n\t@test()\n\tprotected static async mergesGlobalEvents() {\n\t\tawait this.FeatureFixture().installCachedFeatures('events')\n\n\t\tconst skills = this.getSkillFixture()\n\t\tawait skills.registerCurrentSkill({\n\t\t\tname: 'events in sync skill',\n\t\t})\n\n\t\tconst skill2 = await skills.seedDemoSkill({ name: 'a temp skill' })\n\n\t\tawait this.Service('dependency').add({\n\t\t\tid: skill2.id,\n\t\t\tnamespace: skill2.slug,\n\t\t})\n\n\t\tawait skills.registerEventContract(skill2, {\n\t\t\teventSignatures: {\n\t\t\t\t'test-sync::v2021_01_01': {\n\t\t\t\t\tisGlobal: true,\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\n\t\tconst results = await this.Action('event', 'sync').execute({})\n\n\t\tawait this.assertValidSyncEventsResults(results)\n\n\t\tconst fqen = eventNameUtil.join({\n\t\t\teventName: 'test-sync',\n\t\t\tversion: 'v2021_01_01',\n\t\t\teventNamespace: skill2.slug,\n\t\t})\n\t\tawait this.assertGlobalEventsAreTyped(fqen)\n\t}\n\n\t@test()\n\tprotected static async canSetSkillEventContractTypesFile() {\n\t\tawait this.FeatureFixture().installCachedFeatures('eventsInNodeModule')\n\n\t\tawait this.skipInstallSkillPrompts(() =>\n\t\t\tthis.Action('event', 'sync').execute({\n\t\t\t\tskillEventContractTypesFile: 'testy test',\n\t\t\t})\n\t\t)\n\n\t\tconst contents = diskUtil.readFile(this.eventContractPath)\n\t\tassert.doesInclude(contents, `declare module 'testy test'`)\n\t}\n\n\t@test()\n\tprotected static async canSyncOnlyCoreEvents() {\n\t\tawait this.FeatureFixture().installCachedFeatures('eventsInNodeModule')\n\n\t\tconst promise = this.syncCoreEventsPretendingToBeMercuryTypes()\n\n\t\tawait this.skipInstallSkillPrompts()\n\n\t\tconst results = await promise\n\n\t\tawait this.assertValidSyncEventsResults(results, true)\n\t}\n\n\t@test()\n\tprotected static async syncingSchemasDoesNotSyncEventSchemasIfEventsHaveNeverBeenSynced() {\n\t\tconst cli = await this.FeatureFixture().installCachedFeatures('events')\n\t\tconst event = cli.getFeature('event')\n\t\tlet wasHit = false\n\n\t\t//@ts-ignore\n\t\tevent.getEventContractBuilder = () => {\n\t\t\twasHit = true\n\t\t}\n\n\t\tconst results = await this.Action('schema', 'sync').execute({})\n\n\t\tthis.assertCoreEventContractsSavedToDisk(false)\n\t\tthis.assertCorePayloadSchemasAreCreated(results, false)\n\n\t\tassert.isFalse(wasHit)\n\t\tassert.isFalse(diskUtil.doesFileExist(this.eventContractPath))\n\t}\n\n\t@test()\n\tprotected static async syncingSchemaAfterSyncEventsSyncsSchemasAndDoesNotWriteCoreEvents() {\n\t\tconst cli = await this.FeatureFixture().installCachedFeatures('events')\n\n\t\tawait this.Action('event', 'sync').execute({})\n\n\t\tconst event = cli.getFeature('event')\n\t\tlet wasHit = false\n\n\t\tconst oldGetter = event.getEventContractBuilder.bind(event)\n\n\t\t//@ts-ignore\n\t\tevent.getEventContractBuilder = () => {\n\t\t\twasHit = true\n\t\t\treturn oldGetter()\n\t\t}\n\n\t\tconst results = await this.Action('schema', 'sync').execute({})\n\n\t\tassert.isTrue(wasHit)\n\n\t\tawait this.assertValidSyncSchemasResults(results, false)\n\t}\n\n\t@test()\n\tprotected static async syncingSchemasAfterSyncingCoreEventsSavesCoreEvents() {\n\t\tawait this.FeatureFixture().installCachedFeatures('events')\n\n\t\tawait this.syncCoreEventsPretendingToBeMercuryTypes()\n\n\t\tconst results = await this.Action('schema', 'sync').execute({})\n\n\t\tawait this.assertValidSyncSchemasResults(results, true)\n\t}\n\n\tprivate static async syncCoreEventsPretendingToBeMercuryTypes() {\n\t\tconst results = await this.Action('event', 'sync').execute({\n\t\t\tshouldSyncOnlyCoreEvents: true,\n\t\t\teventBuilderFile: '../../../builder',\n\t\t\tskillEventContractTypesFile: '../../builder',\n\t\t})\n\n\t\tconst builder = `\nexport function buildEventContract(..._: any[]):any { return _[0] }\nexport function buildPermissionContract(..._: any[]):any { return _[0] }\n`\n\n\t\tdiskUtil.writeFile(this.resolvePath('src', 'builder.ts'), builder)\n\t\tawait this.Service('pkg').uninstall([\n\t\t\t'@sprucelabs/mercury-types',\n\t\t\t'@sprucelabs/mercury-client',\n\t\t\t'@sprucelabs/spruce-event-plugin',\n\t\t])\n\t\treturn results\n\t}\n\n\tprivate static async assertValidSyncEventsResults(\n\t\tresults: FeatureActionResponse,\n\t\tshouldSyncOnlyCoreEvents = false\n\t) {\n\t\tassert.isFalsy(results.errors)\n\n\t\tawait this.assertValidSyncSchemasResults(results, shouldSyncOnlyCoreEvents)\n\t}\n\n\tprivate static async assertGlobalEventsAreTyped(eventName: string) {\n\t\tconst contents = diskUtil.readFile(this.eventContractPath)\n\n\t\tassert.doesInclude(contents, `'${eventName}':`)\n\t}\n\n\tprivate static async assertValidSyncSchemasResults(\n\t\tresults: FeatureActionResponse,\n\t\tshouldSyncOnlyCoreEvents: boolean\n\t) {\n\t\tassert.isFalsy(results.errors)\n\n\t\tthis.assertCoreEventContractsSavedToDisk(shouldSyncOnlyCoreEvents)\n\t\tthis.assertCorePayloadSchemasAreCreated(results, shouldSyncOnlyCoreEvents)\n\n\t\tawait this.assertEventsHavePayloads(results)\n\t\tawait this.assertCombinedContractContents()\n\n\t\tconst coreContractContents = diskUtil.readFile(this.eventContractPath)\n\t\tconst search = `did-message::v2020_12_25': MercuryDidMessageEventContract_v2020_12_25['eventSignatures']['did-message::v2020_12_25']`\n\n\t\tif (shouldSyncOnlyCoreEvents) {\n\t\t\tassert.doesInclude(coreContractContents, search)\n\t\t} else {\n\t\t\tassert.doesNotInclude(coreContractContents, search)\n\t\t}\n\t}\n\n\tprivate static async assertCombinedContractContents() {\n\t\tconst imported = await this.importCombinedContractsFile()\n\n\t\tassert.isTruthy(imported)\n\t\tassert.isArray(imported)\n\n\t\tconst localContract = eventContractUtil.unifyContracts(imported)\n\t\tassert.isTruthy(localContract)\n\n\t\tconst sigs = eventContractUtil.getNamedEventSignatures(coreContract)\n\n\t\tfor (const sig of sigs) {\n\t\t\teventContractUtil.getSignatureByName(\n\t\t\t\tlocalContract,\n\t\t\t\tsig.fullyQualifiedEventName\n\t\t\t)\n\t\t}\n\t}\n\n\tprivate static async importCombinedContractsFile(): Promise<EventContract[]> {\n\t\tconst eventContractsFile = this.eventContractPath\n\n\t\t// hack import to bring types in when importing contract file\n\t\tif (\n\t\t\tdiskUtil.doesDirExist(\n\t\t\t\tthis.resolvePath('node_modules/@sprucelabs/mercury-types')\n\t\t\t)\n\t\t) {\n\t\t\tconst contents = diskUtil.readFile(eventContractsFile)\n\t\t\tdiskUtil.writeFile(\n\t\t\t\teventContractsFile,\n\t\t\t\t`import '@sprucelabs/mercury-types'\\n${contents}`\n\t\t\t)\n\t\t}\n\n\t\tconst imported: EventContract[] = await this.Service(\n\t\t\t'import'\n\t\t).importDefault(eventContractsFile)\n\n\t\treturn imported\n\t}\n\n\tprivate static async assertEventsHavePayloads(\n\t\tresults: FeatureActionResponse,\n\t\teventName = 'authenticate'\n\t) {\n\t\tconst imported = await this.importCombinedContractsFile()\n\t\tconst contract = eventContractUtil.unifyContracts(imported)\n\n\t\tassert.isTruthy(contract)\n\n\t\tvalidateEventContract(contract)\n\n\t\tconst signature = eventContractUtil.getSignatureByName(contract, eventName)\n\n\t\tassert.isTruthy(signature.emitPayloadSchema)\n\t\tvalidateSchema(signature.emitPayloadSchema)\n\n\t\tassert.isTruthy(signature.responsePayloadSchema)\n\t\tvalidateSchema(signature.responsePayloadSchema)\n\t}\n\n\tprivate static assertCorePayloadSchemasAreCreated(\n\t\tresults: FeatureActionResponse,\n\t\tshouldHaveWritten = true\n\t) {\n\t\tconst filesToCheck = [\n\t\t\t{\n\t\t\t\tname: `unregisterListenersEmitTargetAndPayload.schema.ts`,\n\t\t\t\tpath: `schemas${pathUtil.sep}${MERCURY_API_NAMESPACE}`,\n\t\t\t},\n\t\t]\n\n\t\tthis.assertFilesWereGenerated(filesToCheck, results, shouldHaveWritten)\n\t}\n\n\tprivate static assertFilesWereGenerated(\n\t\tfilesToCheck: { name: string; path: string }[],\n\t\tresults: FeatureActionResponse,\n\t\tshouldHaveWritten = true\n\t) {\n\t\tfor (const file of filesToCheck) {\n\t\t\tconst expected = this.resolveHashSprucePath(\n\t\t\t\t'schemas/mercury/v2020_12_25',\n\t\t\t\tfile.name\n\t\t\t)\n\t\t\tconst doesExist = diskUtil.doesFileExist(expected)\n\n\t\t\tif (shouldHaveWritten) {\n\t\t\t\tassert.isTrue(doesExist, `Expected to find ${file} on the filesystem.`)\n\t\t\t} else {\n\t\t\t\tassert.isFalse(doesExist, `Should not have written ${file}.`)\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate static assertCoreEventContractsSavedToDisk(shouldHaveWritten = true) {\n\t\tconst sigs = eventContractUtil.getNamedEventSignatures(coreContract)\n\n\t\tfor (const sig of sigs) {\n\t\t\tconst expected = this.resolveHashSprucePath(\n\t\t\t\t`events/mercury/${namesUtil.toCamel(\n\t\t\t\t\tsig.eventName\n\t\t\t\t)}.v2020_12_25.contract.ts`\n\t\t\t)\n\t\t\tconst doesExist = diskUtil.doesFileExist(expected)\n\n\t\t\tif (shouldHaveWritten) {\n\t\t\t\tassert.isTrue(doesExist, `Expected to write a file ${expected}.`)\n\t\t\t} else {\n\t\t\t\tassert.isFalse(\n\t\t\t\t\tdoesExist,\n\t\t\t\t\t`Generated contract for ${sig.fullyQualifiedEventName} and it should not have because it's a core contract.`\n\t\t\t\t)\n\t\t\t}\n\t\t}\n\t}\n}\n"],"file":"KeepingEventsInSync.test.js"}
|
|
@@ -310,18 +310,25 @@ var KeepingEventsInSyncTest = (_dec = (0, _test.test)(), _dec2 = (0, _test.test)
|
|
|
310
310
|
|
|
311
311
|
case 9:
|
|
312
312
|
_context4.next = 11;
|
|
313
|
-
return this.
|
|
313
|
+
return this.Service('dependency').add({
|
|
314
|
+
id: skill2.id,
|
|
315
|
+
namespace: skill2.slug
|
|
316
|
+
});
|
|
314
317
|
|
|
315
318
|
case 11:
|
|
319
|
+
_context4.next = 13;
|
|
320
|
+
return this.Action('event', 'sync').execute({});
|
|
321
|
+
|
|
322
|
+
case 13:
|
|
316
323
|
results = _context4.sent;
|
|
317
324
|
match = _test2["default"].assertFileByNameInGeneratedFiles("myNewEvent.".concat(this.todaysVersion.dirValue, ".contract.ts"), results.files);
|
|
318
325
|
|
|
319
326
|
_test.assert.doesInclude(match, "".concat(_spruceSkillUtils.namesUtil.toCamel(skill2.slug)).concat(_path["default"].sep, "myNewEvent.").concat(this.todaysVersion.dirValue, ".contract.ts"));
|
|
320
327
|
|
|
321
|
-
_context4.next =
|
|
328
|
+
_context4.next = 18;
|
|
322
329
|
return this.Service('import').importDefault(match);
|
|
323
330
|
|
|
324
|
-
case
|
|
331
|
+
case 18:
|
|
325
332
|
contract = _context4.sent;
|
|
326
333
|
sig = _spruceEventUtils.eventContractUtil.getSignatureByName(contract, fqen);
|
|
327
334
|
|
|
@@ -344,7 +351,7 @@ var KeepingEventsInSyncTest = (_dec = (0, _test.test)(), _dec2 = (0, _test.test)
|
|
|
344
351
|
|
|
345
352
|
_test.assert.isEqual(sig.listenPermissionContract.permissions[0].id, 'can-listen');
|
|
346
353
|
|
|
347
|
-
case
|
|
354
|
+
case 29:
|
|
348
355
|
case "end":
|
|
349
356
|
return _context4.stop();
|
|
350
357
|
}
|
|
@@ -412,15 +419,25 @@ var KeepingEventsInSyncTest = (_dec = (0, _test.test)(), _dec2 = (0, _test.test)
|
|
|
412
419
|
|
|
413
420
|
case 17:
|
|
414
421
|
_context5.next = 19;
|
|
415
|
-
return this.
|
|
422
|
+
return this.Service('dependency').set([{
|
|
423
|
+
id: skill2.id,
|
|
424
|
+
namespace: skill2.slug
|
|
425
|
+
}, {
|
|
426
|
+
id: skill3.id,
|
|
427
|
+
namespace: skill3.slug
|
|
428
|
+
}]);
|
|
416
429
|
|
|
417
430
|
case 19:
|
|
431
|
+
_context5.next = 21;
|
|
432
|
+
return this.Action('event', 'sync').execute({});
|
|
433
|
+
|
|
434
|
+
case 21:
|
|
418
435
|
results = _context5.sent;
|
|
419
436
|
contract = _test2["default"].assertFileByNameInGeneratedFiles('events.contract.ts', results.files);
|
|
420
|
-
_context5.next =
|
|
437
|
+
_context5.next = 25;
|
|
421
438
|
return this.Service('typeChecker').check(contract);
|
|
422
439
|
|
|
423
|
-
case
|
|
440
|
+
case 25:
|
|
424
441
|
case "end":
|
|
425
442
|
return _context5.stop();
|
|
426
443
|
}
|
|
@@ -472,15 +489,22 @@ var KeepingEventsInSyncTest = (_dec = (0, _test.test)(), _dec2 = (0, _test.test)
|
|
|
472
489
|
|
|
473
490
|
case 9:
|
|
474
491
|
_context6.next = 11;
|
|
475
|
-
return this.
|
|
492
|
+
return this.Service('dependency').add({
|
|
493
|
+
id: skill2.id,
|
|
494
|
+
namespace: skill2.slug
|
|
495
|
+
});
|
|
476
496
|
|
|
477
497
|
case 11:
|
|
498
|
+
_context6.next = 13;
|
|
499
|
+
return this.Action('event', 'sync').execute({});
|
|
500
|
+
|
|
501
|
+
case 13:
|
|
478
502
|
results = _context6.sent;
|
|
479
503
|
contract = _test2["default"].assertFileByNameInGeneratedFiles('events.contract.ts', results.files);
|
|
480
|
-
_context6.next =
|
|
504
|
+
_context6.next = 17;
|
|
481
505
|
return this.Service('typeChecker').check(contract);
|
|
482
506
|
|
|
483
|
-
case
|
|
507
|
+
case 17:
|
|
484
508
|
case "end":
|
|
485
509
|
return _context6.stop();
|
|
486
510
|
}
|
|
@@ -730,16 +754,23 @@ var KeepingEventsInSyncTest = (_dec = (0, _test.test)(), _dec2 = (0, _test.test)
|
|
|
730
754
|
|
|
731
755
|
case 6:
|
|
732
756
|
_context11.next = 8;
|
|
733
|
-
return this.
|
|
757
|
+
return this.Service('dependency').add({
|
|
758
|
+
id: skill.id,
|
|
759
|
+
namespace: skill.slug
|
|
760
|
+
});
|
|
734
761
|
|
|
735
762
|
case 8:
|
|
763
|
+
_context11.next = 10;
|
|
764
|
+
return this.Action('event', 'sync').execute({});
|
|
765
|
+
|
|
766
|
+
case 10:
|
|
736
767
|
results = _context11.sent;
|
|
737
768
|
return _context11.abrupt("return", {
|
|
738
769
|
results: results,
|
|
739
770
|
filename: filename
|
|
740
771
|
});
|
|
741
772
|
|
|
742
|
-
case
|
|
773
|
+
case 12:
|
|
743
774
|
case "end":
|
|
744
775
|
return _context11.stop();
|
|
745
776
|
}
|