@sprucelabs/spruce-heartwood-utils 7.6.2 → 7.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/esm/tests/remoteVcAssert.d.ts +5 -4
- package/build/esm/tests/remoteVcAssert.js +9 -5
- package/build/esm/viewControllers/CardRegistrar.js +5 -1
- package/build/tests/remoteVcAssert.d.ts +5 -4
- package/build/tests/remoteVcAssert.js +8 -4
- package/build/viewControllers/CardRegistrar.js +5 -1
- package/package.json +1 -1
|
@@ -1,20 +1,21 @@
|
|
|
1
1
|
import { SkillViewController } from '@sprucelabs/heartwood-view-controllers';
|
|
2
2
|
import { SkillEventContract } from '@sprucelabs/mercury-types';
|
|
3
|
-
import { ViewFixture } from '@sprucelabs/spruce-test-fixtures';
|
|
3
|
+
import { ArgsFromSvc, ViewFixture } from '@sprucelabs/spruce-test-fixtures';
|
|
4
4
|
declare type EventNames = keyof SkillEventContract['eventSignatures'];
|
|
5
|
-
export interface AssertRendersRemoteCardsOptions {
|
|
6
|
-
|
|
5
|
+
export interface AssertRendersRemoteCardsOptions<Svc extends SkillViewController = SkillViewController> {
|
|
6
|
+
svc: Svc;
|
|
7
7
|
fqen: EventNames;
|
|
8
8
|
views: ViewFixture;
|
|
9
9
|
expectedTarget?: Record<string, any>;
|
|
10
10
|
expectedPayload?: Record<string, any>;
|
|
11
|
+
loadArgs?: ArgsFromSvc<Svc>;
|
|
11
12
|
shouldInvoke?: {
|
|
12
13
|
methodName: string;
|
|
13
14
|
expectedParams?: any[];
|
|
14
15
|
};
|
|
15
16
|
}
|
|
16
17
|
declare const remoteVcAssert: {
|
|
17
|
-
assertSkillViewRendersRemoteCards(options: AssertRendersRemoteCardsOptions): Promise<void>;
|
|
18
|
+
assertSkillViewRendersRemoteCards<Svc extends SkillViewController<Record<string, any>> = SkillViewController<Record<string, any>>>(options: AssertRendersRemoteCardsOptions<Svc>): Promise<void>;
|
|
18
19
|
};
|
|
19
20
|
export declare function generateId(): string;
|
|
20
21
|
export default remoteVcAssert;
|
|
@@ -9,13 +9,17 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
9
9
|
};
|
|
10
10
|
import { AbstractViewController, vcAssert, } from '@sprucelabs/heartwood-view-controllers';
|
|
11
11
|
import { assertOptions } from '@sprucelabs/schema';
|
|
12
|
-
import { eventFaker } from '@sprucelabs/spruce-test-fixtures';
|
|
12
|
+
import { eventFaker, } from '@sprucelabs/spruce-test-fixtures';
|
|
13
13
|
import { assert } from '@sprucelabs/test';
|
|
14
14
|
const remoteVcAssert = {
|
|
15
15
|
assertSkillViewRendersRemoteCards(options) {
|
|
16
16
|
var _a;
|
|
17
17
|
return __awaiter(this, void 0, void 0, function* () {
|
|
18
|
-
const { views,
|
|
18
|
+
const { views, svc: svc, expectedTarget, expectedPayload, fqen, shouldInvoke, loadArgs, } = assertOptions(options, [
|
|
19
|
+
'svc',
|
|
20
|
+
'fqen',
|
|
21
|
+
'views',
|
|
22
|
+
]);
|
|
19
23
|
const factory = views.getFactory();
|
|
20
24
|
factory.setController('heartwood.error-card', ThrowingErrorCardVc);
|
|
21
25
|
const vc1Id = generateId();
|
|
@@ -25,7 +29,7 @@ const remoteVcAssert = {
|
|
|
25
29
|
let passedPayload;
|
|
26
30
|
yield eventFaker.on(fqen,
|
|
27
31
|
//@ts-ignore
|
|
28
|
-
({ target, payload }) => __awaiter(this, void 0, void 0, function* () {
|
|
32
|
+
({ target, payload } = {}) => __awaiter(this, void 0, void 0, function* () {
|
|
29
33
|
passedTarget = target;
|
|
30
34
|
passedPayload = payload;
|
|
31
35
|
wasHit = true;
|
|
@@ -53,7 +57,7 @@ const remoteVcAssert = {
|
|
|
53
57
|
source,
|
|
54
58
|
};
|
|
55
59
|
});
|
|
56
|
-
yield views.load(
|
|
60
|
+
yield views.load(svc, loadArgs);
|
|
57
61
|
assert.isTrue(wasHit, `You did not load any remote cards. Next step is to add the following to your skill view's load():\n\nconst registrar = new CardRegistrar(...)\nconst cards = await registrar.fetch(...)\n\nAlso, make sure you create the new event that you'll emit when trying to fetch remote cards, something like 'my-skill.register-cards::v2020_02_02'\n\n`);
|
|
58
62
|
if (expectedTarget) {
|
|
59
63
|
assert.isEqualDeep(passedTarget, expectedTarget, 'The target you passed did not match!');
|
|
@@ -63,7 +67,7 @@ const remoteVcAssert = {
|
|
|
63
67
|
}
|
|
64
68
|
let cards = [];
|
|
65
69
|
try {
|
|
66
|
-
cards = vcAssert.assertSkillViewRendersCards(
|
|
70
|
+
cards = vcAssert.assertSkillViewRendersCards(svc, [vc1Id, vc2Id]);
|
|
67
71
|
}
|
|
68
72
|
catch (err) {
|
|
69
73
|
assert.fail(`You didn't drop in the cards to your skill view! Make sure your vcIdsTransformer looks something like:
|
|
@@ -40,9 +40,13 @@ export default class CardRegistrar {
|
|
|
40
40
|
const { each, controllerOptionsHandler, target, payload } = options !== null && options !== void 0 ? options : {};
|
|
41
41
|
const targetAndPayload = target || payload ? { target, payload } : undefined;
|
|
42
42
|
const cards = [];
|
|
43
|
-
yield this.client.emitAndFlattenResponses(this.eventName, targetAndPayload, (
|
|
43
|
+
yield this.client.emitAndFlattenResponses(this.eventName, targetAndPayload, (targetAndPayload) => __awaiter(this, void 0, void 0, function* () {
|
|
44
44
|
var _a;
|
|
45
|
+
const { payload } = targetAndPayload !== null && targetAndPayload !== void 0 ? targetAndPayload : {};
|
|
45
46
|
const vcIds = this.vcIdsTransformer(payload);
|
|
47
|
+
if (!Array.isArray(vcIds)) {
|
|
48
|
+
throw 'Your vcIdsTransform MUST return an array!';
|
|
49
|
+
}
|
|
46
50
|
const responseCards = [];
|
|
47
51
|
for (const id of vcIds) {
|
|
48
52
|
try {
|
|
@@ -1,20 +1,21 @@
|
|
|
1
1
|
import { SkillViewController } from '@sprucelabs/heartwood-view-controllers';
|
|
2
2
|
import { SkillEventContract } from '@sprucelabs/mercury-types';
|
|
3
|
-
import { ViewFixture } from '@sprucelabs/spruce-test-fixtures';
|
|
3
|
+
import { ArgsFromSvc, ViewFixture } from '@sprucelabs/spruce-test-fixtures';
|
|
4
4
|
declare type EventNames = keyof SkillEventContract['eventSignatures'];
|
|
5
|
-
export interface AssertRendersRemoteCardsOptions {
|
|
6
|
-
|
|
5
|
+
export interface AssertRendersRemoteCardsOptions<Svc extends SkillViewController = SkillViewController> {
|
|
6
|
+
svc: Svc;
|
|
7
7
|
fqen: EventNames;
|
|
8
8
|
views: ViewFixture;
|
|
9
9
|
expectedTarget?: Record<string, any>;
|
|
10
10
|
expectedPayload?: Record<string, any>;
|
|
11
|
+
loadArgs?: ArgsFromSvc<Svc>;
|
|
11
12
|
shouldInvoke?: {
|
|
12
13
|
methodName: string;
|
|
13
14
|
expectedParams?: any[];
|
|
14
15
|
};
|
|
15
16
|
}
|
|
16
17
|
declare const remoteVcAssert: {
|
|
17
|
-
assertSkillViewRendersRemoteCards(options: AssertRendersRemoteCardsOptions): Promise<void>;
|
|
18
|
+
assertSkillViewRendersRemoteCards<Svc extends SkillViewController<Record<string, any>> = SkillViewController<Record<string, any>>>(options: AssertRendersRemoteCardsOptions<Svc>): Promise<void>;
|
|
18
19
|
};
|
|
19
20
|
export declare function generateId(): string;
|
|
20
21
|
export default remoteVcAssert;
|
|
@@ -8,7 +8,11 @@ const test_1 = require("@sprucelabs/test");
|
|
|
8
8
|
const remoteVcAssert = {
|
|
9
9
|
async assertSkillViewRendersRemoteCards(options) {
|
|
10
10
|
var _a;
|
|
11
|
-
const { views,
|
|
11
|
+
const { views, svc: svc, expectedTarget, expectedPayload, fqen, shouldInvoke, loadArgs, } = (0, schema_1.assertOptions)(options, [
|
|
12
|
+
'svc',
|
|
13
|
+
'fqen',
|
|
14
|
+
'views',
|
|
15
|
+
]);
|
|
12
16
|
const factory = views.getFactory();
|
|
13
17
|
factory.setController('heartwood.error-card', ThrowingErrorCardVc);
|
|
14
18
|
const vc1Id = generateId();
|
|
@@ -18,7 +22,7 @@ const remoteVcAssert = {
|
|
|
18
22
|
let passedPayload;
|
|
19
23
|
await spruce_test_fixtures_1.eventFaker.on(fqen,
|
|
20
24
|
//@ts-ignore
|
|
21
|
-
async ({ target, payload }) => {
|
|
25
|
+
async ({ target, payload } = {}) => {
|
|
22
26
|
passedTarget = target;
|
|
23
27
|
passedPayload = payload;
|
|
24
28
|
wasHit = true;
|
|
@@ -46,7 +50,7 @@ const remoteVcAssert = {
|
|
|
46
50
|
source,
|
|
47
51
|
};
|
|
48
52
|
});
|
|
49
|
-
await views.load(
|
|
53
|
+
await views.load(svc, loadArgs);
|
|
50
54
|
test_1.assert.isTrue(wasHit, `You did not load any remote cards. Next step is to add the following to your skill view's load():\n\nconst registrar = new CardRegistrar(...)\nconst cards = await registrar.fetch(...)\n\nAlso, make sure you create the new event that you'll emit when trying to fetch remote cards, something like 'my-skill.register-cards::v2020_02_02'\n\n`);
|
|
51
55
|
if (expectedTarget) {
|
|
52
56
|
test_1.assert.isEqualDeep(passedTarget, expectedTarget, 'The target you passed did not match!');
|
|
@@ -56,7 +60,7 @@ const remoteVcAssert = {
|
|
|
56
60
|
}
|
|
57
61
|
let cards = [];
|
|
58
62
|
try {
|
|
59
|
-
cards = heartwood_view_controllers_1.vcAssert.assertSkillViewRendersCards(
|
|
63
|
+
cards = heartwood_view_controllers_1.vcAssert.assertSkillViewRendersCards(svc, [vc1Id, vc2Id]);
|
|
60
64
|
}
|
|
61
65
|
catch (err) {
|
|
62
66
|
test_1.assert.fail(`You didn't drop in the cards to your skill view! Make sure your vcIdsTransformer looks something like:
|
|
@@ -35,9 +35,13 @@ class CardRegistrar {
|
|
|
35
35
|
const { each, controllerOptionsHandler, target, payload } = options !== null && options !== void 0 ? options : {};
|
|
36
36
|
const targetAndPayload = target || payload ? { target, payload } : undefined;
|
|
37
37
|
const cards = [];
|
|
38
|
-
await this.client.emitAndFlattenResponses(this.eventName, targetAndPayload, async (
|
|
38
|
+
await this.client.emitAndFlattenResponses(this.eventName, targetAndPayload, async (targetAndPayload) => {
|
|
39
39
|
var _a;
|
|
40
|
+
const { payload } = targetAndPayload !== null && targetAndPayload !== void 0 ? targetAndPayload : {};
|
|
40
41
|
const vcIds = this.vcIdsTransformer(payload);
|
|
42
|
+
if (!Array.isArray(vcIds)) {
|
|
43
|
+
throw 'Your vcIdsTransform MUST return an array!';
|
|
44
|
+
}
|
|
41
45
|
const responseCards = [];
|
|
42
46
|
for (const id of vcIds) {
|
|
43
47
|
try {
|