@saasquatch/program-test-suite 2.1.1 → 2.1.2-2
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/README.md +45 -0
- package/dist/faker.d.ts +1 -1
- package/dist/faker.js +9 -4
- package/dist/faker.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +8 -7
- package/dist/index.js.map +1 -1
- package/dist/jest.config.js +29 -0
- package/dist/jest.config.js.map +1 -1
- package/dist/jest.setup.js +2 -2
- package/dist/jest.setup.js.map +1 -1
- package/dist/steps/assertions.js +53 -51
- package/dist/steps/assertions.js.map +1 -1
- package/dist/steps/events.js +3 -3
- package/dist/steps/events.js.map +1 -1
- package/dist/steps/index.js +2 -2
- package/dist/steps/index.js.map +1 -1
- package/dist/steps/referral.js +2 -2
- package/dist/steps/referral.js.map +1 -1
- package/dist/steps/rules.js +4 -4
- package/dist/steps/rules.js.map +1 -1
- package/dist/steps/trigger.js +26 -14
- package/dist/steps/trigger.js.map +1 -1
- package/dist/steps/user.js +35 -18
- package/dist/steps/user.js.map +1 -1
- package/dist/world.d.ts +9 -7
- package/dist/world.js +23 -16
- package/dist/world.js.map +1 -1
- package/package.json +4 -6
package/README.md
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# SaaSquatch Program Test Suite
|
|
2
|
+
|
|
3
|
+
This package contains everything needed to facilitate blackbox unit testing of the
|
|
4
|
+
SaaSquatch programs. It includes a family of default Cucumber step definitions and tools
|
|
5
|
+
for simulated execution of the programs.
|
|
6
|
+
|
|
7
|
+
## Installation
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npm install -D @saasquatch/program-test-suite
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Usage
|
|
14
|
+
|
|
15
|
+
The program test suite is based on Jest. Place the following inside your Jest config:
|
|
16
|
+
|
|
17
|
+
```typescript
|
|
18
|
+
import { jestConfig } from "@saasquatch/program-test-suite";
|
|
19
|
+
export default jestConfig;
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
Use the `runProgramTests` function to execute the tests. Here is an example of a typical
|
|
23
|
+
test program:
|
|
24
|
+
|
|
25
|
+
```typescript
|
|
26
|
+
// Import your program from the source code. This is a `types.rpc.Program` that you would
|
|
27
|
+
// pass to program-boilerplate
|
|
28
|
+
import { program } from "../src/program";
|
|
29
|
+
import { runProgramTests } from "@saasquatch/program-test-suite";
|
|
30
|
+
|
|
31
|
+
// Any additional custom steps you need for this particular program
|
|
32
|
+
import steps from "./steps";
|
|
33
|
+
|
|
34
|
+
runProgramTests(
|
|
35
|
+
program,
|
|
36
|
+
// Path to the .feature files containing the unit test steps
|
|
37
|
+
"__tests__/features/unit",
|
|
38
|
+
steps,
|
|
39
|
+
// Path to the program schema
|
|
40
|
+
"src/schema/birthday-program_schema.json",
|
|
41
|
+
// Default program template and program rules to use while testing
|
|
42
|
+
"__tests__/defaults/template.json",
|
|
43
|
+
"__tests__/defaults/rules.json"
|
|
44
|
+
);
|
|
45
|
+
```
|
package/dist/faker.d.ts
CHANGED
|
@@ -12,7 +12,7 @@ declare type ProgramTriggerInfo = {
|
|
|
12
12
|
rules: any;
|
|
13
13
|
};
|
|
14
14
|
export declare function getProgramTriggerJson(info: ProgramTriggerInfo): ProgramTriggerBody;
|
|
15
|
-
export declare function getAUCOUTJson(
|
|
15
|
+
export declare function getAUCOUTJson(previous?: any, events?: any[]): any;
|
|
16
16
|
export declare function getReferralJson(referralEventType: any, referral: any): any;
|
|
17
17
|
export declare function getAUEPTJson(events?: any[]): any;
|
|
18
18
|
export declare function getRandomUser(name: string): any;
|
package/dist/faker.js
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
3
|
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
5
9
|
}) : (function(o, m, k, k2) {
|
|
6
10
|
if (k2 === undefined) k2 = k;
|
|
7
11
|
o[k2] = m[k];
|
|
@@ -51,11 +55,12 @@ function getIntrospectionJson(template, rules, rewards) {
|
|
|
51
55
|
}
|
|
52
56
|
exports.getIntrospectionJson = getIntrospectionJson;
|
|
53
57
|
function getProgramTriggerJson(info) {
|
|
58
|
+
var _a;
|
|
54
59
|
return {
|
|
55
60
|
messageType: "PROGRAM_TRIGGER",
|
|
56
61
|
activeTrigger: {
|
|
57
62
|
type: info.type,
|
|
58
|
-
time: info.time
|
|
63
|
+
time: (_a = info.time) !== null && _a !== void 0 ? _a : Date.now(),
|
|
59
64
|
user: info.user,
|
|
60
65
|
},
|
|
61
66
|
program: {
|
|
@@ -71,11 +76,11 @@ function getProgramTriggerJson(info) {
|
|
|
71
76
|
};
|
|
72
77
|
}
|
|
73
78
|
exports.getProgramTriggerJson = getProgramTriggerJson;
|
|
74
|
-
function getAUCOUTJson(
|
|
79
|
+
function getAUCOUTJson(previous, events) {
|
|
75
80
|
return {
|
|
76
81
|
activeTrigger: {
|
|
77
82
|
events,
|
|
78
|
-
|
|
83
|
+
previous,
|
|
79
84
|
},
|
|
80
85
|
};
|
|
81
86
|
}
|
package/dist/faker.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"faker.js","sourceRoot":"","sources":["../src/faker.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"faker.js","sourceRoot":"","sources":["../src/faker.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { StepDefinitions } from "jest-cucumber";
|
|
2
1
|
import { types } from "@saasquatch/program-boilerplate";
|
|
2
|
+
import { StepDefinitions } from "jest-cucumber";
|
|
3
3
|
export { default as jestConfig } from "./jest.config";
|
|
4
4
|
export { getWorld } from "./world";
|
|
5
5
|
export declare function runProgramTests(program: types.rpc.Program, featurePath: string, steps: StepDefinitions[], schemaFile: string, templateFile: string, rulesFile: string, featureFilterTags?: string[]): void;
|
package/dist/index.js
CHANGED
|
@@ -6,24 +6,25 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.runProgramTests = exports.getWorld = exports.jestConfig = void 0;
|
|
7
7
|
const glob_1 = require("glob");
|
|
8
8
|
const jest_cucumber_1 = require("jest-cucumber");
|
|
9
|
-
const world_1 = require("./world");
|
|
10
9
|
const steps_1 = __importDefault(require("./steps"));
|
|
10
|
+
const world_1 = require("./world");
|
|
11
11
|
var jest_config_1 = require("./jest.config");
|
|
12
12
|
Object.defineProperty(exports, "jestConfig", { enumerable: true, get: function () { return __importDefault(jest_config_1).default; } });
|
|
13
13
|
var world_2 = require("./world");
|
|
14
14
|
Object.defineProperty(exports, "getWorld", { enumerable: true, get: function () { return world_2.getWorld; } });
|
|
15
15
|
function runProgramTests(program, featurePath, steps, schemaFile, templateFile, rulesFile, featureFilterTags) {
|
|
16
|
-
world_1.
|
|
17
|
-
world_1.
|
|
16
|
+
(0, world_1.getWorld)().setProgram(program);
|
|
17
|
+
(0, world_1.getWorld)().loadDefaults(templateFile, schemaFile, rulesFile);
|
|
18
18
|
const features = [];
|
|
19
|
-
const featureFiles = glob_1.sync(`${featurePath}/**/*.feature`);
|
|
19
|
+
const featureFiles = (0, glob_1.sync)(`${featurePath}/**/*.feature`);
|
|
20
20
|
if (!featureFiles.length) {
|
|
21
21
|
throw new Error(`No feature files found at path "${featurePath}"`);
|
|
22
22
|
}
|
|
23
23
|
for (let featureFile of featureFiles) {
|
|
24
24
|
try {
|
|
25
|
-
const feature = jest_cucumber_1.loadFeature(featureFile);
|
|
26
|
-
const keep = (featureFilterTags === null || featureFilterTags === void 0 ? void 0 : featureFilterTags.length)
|
|
25
|
+
const feature = (0, jest_cucumber_1.loadFeature)(featureFile);
|
|
26
|
+
const keep = (featureFilterTags === null || featureFilterTags === void 0 ? void 0 : featureFilterTags.length)
|
|
27
|
+
? featureFilterTags.every((tag) => feature.tags.includes(tag))
|
|
27
28
|
: true;
|
|
28
29
|
if (keep)
|
|
29
30
|
features.push(feature);
|
|
@@ -50,7 +51,7 @@ function runProgramTests(program, featurePath, steps, schemaFile, templateFile,
|
|
|
50
51
|
}
|
|
51
52
|
}
|
|
52
53
|
}
|
|
53
|
-
jest_cucumber_1.autoBindSteps(features, [...steps, ...steps_1.default]);
|
|
54
|
+
(0, jest_cucumber_1.autoBindSteps)(features, [...steps, ...steps_1.default]);
|
|
54
55
|
}
|
|
55
56
|
exports.runProgramTests = runProgramTests;
|
|
56
57
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;AACA,+BAAwC;AACxC,iDAA4E;AAC5E,oDAAmC;AACnC,mCAAmC;AAEnC,6CAAsD;AAA7C,0HAAA,OAAO,OAAc;AAC9B,iCAAmC;AAA1B,iGAAA,QAAQ,OAAA;AAEjB,SAAgB,eAAe,CAC7B,OAA0B,EAC1B,WAAmB,EACnB,KAAwB,EACxB,UAAkB,EAClB,YAAoB,EACpB,SAAiB,EACjB,iBAA4B;IAE5B,IAAA,gBAAQ,GAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IAC/B,IAAA,gBAAQ,GAAE,CAAC,YAAY,CAAC,YAAY,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;IAE7D,MAAM,QAAQ,GAAqC,EAAE,CAAC;IACtD,MAAM,YAAY,GAAG,IAAA,WAAQ,EAAC,GAAG,WAAW,eAAe,CAAC,CAAC;IAE7D,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;QACxB,MAAM,IAAI,KAAK,CAAC,mCAAmC,WAAW,GAAG,CAAC,CAAC;KACpE;IAED,KAAK,IAAI,WAAW,IAAI,YAAY,EAAE;QACpC,IAAI;YACF,MAAM,OAAO,GAAG,IAAA,2BAAW,EAAC,WAAW,CAAC,CAAC;YACzC,MAAM,IAAI,GAAG,CAAA,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAE,MAAM;gBACpC,CAAC,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;gBAC9D,CAAC,CAAC,IAAI,CAAC;YACT,IAAI,IAAI;gBAAE,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SAClC;QAAC,OAAO,CAAM,EAAE;YACf,OAAO,CAAC,KAAK,CAAC,gCAAgC,WAAW,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;YAC1E,MAAM,CAAC,CAAC;SACT;KACF;IAED,KAAK,IAAI,OAAO,IAAI,QAAQ,EAAE;QAC5B,6EAA6E;QAC7E,KAAK,IAAI,QAAQ,IAAI,OAAO,CAAC,SAAS,EAAE;YACtC,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM;gBACtB,QAAQ,CAAC,KAAK,GAAG,GAAG,QAAQ,CAAC,KAAK,QAAQ,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;SACxE;QACD,KAAK,IAAI,eAAe,IAAI,OAAO,CAAC,gBAAgB,EAAE;YACpD,IAAI,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE;gBAC/B,eAAe,CAAC,KAAK,GAAG,GACtB,eAAe,CAAC,KAClB,QAAQ,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;aAC3C;YACD,KAAK,IAAI,QAAQ,IAAI,eAAe,CAAC,SAAS,EAAE;gBAC9C,IAAI,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE;oBAC/B,QAAQ,CAAC,KAAK,GAAG,GAAG,QAAQ,CAAC,KAAK,QAAQ,eAAe,CAAC,IAAI,CAAC,IAAI,CACjE,GAAG,CACJ,GAAG,CAAC;iBACN;aACF;SACF;KACF;IAED,IAAA,6BAAa,EAAC,QAAQ,EAAE,CAAC,GAAG,KAAK,EAAE,GAAG,eAAY,CAAC,CAAC,CAAC;AACvD,CAAC;AAvDD,0CAuDC"}
|
package/dist/jest.config.js
CHANGED
|
@@ -109,5 +109,34 @@ exports.default = {
|
|
|
109
109
|
// testLocationInResults: false,
|
|
110
110
|
// The glob patterns Jest uses to detect test files
|
|
111
111
|
testMatch: ["**/__tests__/program-tests.ts"],
|
|
112
|
+
// An array of regexp pattern strings that are matched against all test paths, matched tests are skipped
|
|
113
|
+
// testPathIgnorePatterns: [
|
|
114
|
+
// "/node_modules/"
|
|
115
|
+
// ],
|
|
116
|
+
// The regexp pattern or array of patterns that Jest uses to detect test files
|
|
117
|
+
// testRegex: [],
|
|
118
|
+
// This option allows the use of a custom results processor
|
|
119
|
+
// testResultsProcessor: undefined,
|
|
120
|
+
// This option allows use of a custom test runner
|
|
121
|
+
// testRunner: "jasmine2",
|
|
122
|
+
// This option sets the URL for the jsdom environment. It is reflected in properties such as location.href
|
|
123
|
+
// testURL: "http://localhost",
|
|
124
|
+
// Setting this value to "fake" allows the use of fake timers for functions such as "setTimeout"
|
|
125
|
+
// timers: "real",
|
|
126
|
+
// A map from regular expressions to paths to transformers
|
|
127
|
+
// transform: undefined,
|
|
128
|
+
// An array of regexp pattern strings that are matched against all source file paths, matched files will skip transformation
|
|
129
|
+
// transformIgnorePatterns: [
|
|
130
|
+
// "/node_modules/",
|
|
131
|
+
// "\\.pnp\\.[^\\/]+$"
|
|
132
|
+
// ],
|
|
133
|
+
// An array of regexp pattern strings that are matched against all modules before the module loader will automatically return a mock for them
|
|
134
|
+
// unmockedModulePathPatterns: undefined,
|
|
135
|
+
// Indicates whether each individual test should be reported during the run
|
|
136
|
+
// verbose: undefined,
|
|
137
|
+
// An array of regexp patterns that are matched against all source file paths before re-running tests in watch mode
|
|
138
|
+
// watchPathIgnorePatterns: [],
|
|
139
|
+
// Whether to use watchman for file crawling
|
|
140
|
+
// watchman: true,
|
|
112
141
|
};
|
|
113
142
|
//# sourceMappingURL=jest.config.js.map
|
package/dist/jest.config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jest.config.js","sourceRoot":"","sources":["../src/jest.config.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAEH,kBAAe;IACb,oEAAoE;IACpE,mBAAmB;IAEnB,wCAAwC;IACxC,WAAW;IAEX,0EAA0E;IAC1E,kCAAkC;IAElC,kEAAkE;IAClE,UAAU,EAAE,IAAI;IAEhB,0FAA0F;IAC1F,eAAe,EAAE,IAAI;IAErB,yGAAyG;IACzG,kCAAkC;IAElC,4DAA4D;IAC5D,iBAAiB,EAAE,UAAU;IAE7B,sEAAsE;IACtE,gCAAgC;IAChC,qBAAqB;IACrB,KAAK;IAEL,0EAA0E;IAC1E,gBAAgB,EAAE,IAAI;IAEtB,wEAAwE;IACxE,uBAAuB;IACvB,YAAY;IACZ,YAAY;IACZ,YAAY;IACZ,aAAa;IACb,KAAK;IAEL,+EAA+E;IAC/E,gCAAgC;IAEhC,0CAA0C;IAC1C,kCAAkC;IAElC,4DAA4D;IAC5D,4BAA4B;IAE5B,+EAA+E;IAC/E,0BAA0B;IAE1B,mGAAmG;IACnG,0BAA0B;IAE1B,kGAAkG;IAClG,6BAA6B;IAE7B,+EAA+E;IAC/E,eAAe;IAEf,iOAAiO;IACjO,qBAAqB;IAErB,iGAAiG;IACjG,uBAAuB;IACvB,mBAAmB;IACnB,KAAK;IAEL,+CAA+C;IAC/C,0BAA0B;IAC1B,UAAU;IACV,YAAY;IACZ,WAAW;IACX,UAAU;IACV,WAAW;IACX,WAAW;IACX,KAAK;IAEL,oIAAoI;IACpI,wBAAwB;IAExB,wHAAwH;IACxH,gCAAgC;IAEhC,2CAA2C;IAC3C,iBAAiB;IAEjB,sEAAsE;IACtE,gCAAgC;IAEhC,2DAA2D;IAC3D,MAAM,EAAE,SAAS;IAEjB,sCAAsC;IACtC,uBAAuB;IAEvB,gEAAgE;IAChE,wBAAwB;IAExB,oDAAoD;IACpD,qBAAqB;IAErB,gEAAgE;IAChE,uBAAuB;IAEvB,8BAA8B;IAC9B,uBAAuB;IAEvB,sDAAsD;IACtD,uBAAuB;IAEvB,wEAAwE;IACxE,sBAAsB;IAEtB,6EAA6E;IAC7E,WAAW;IACX,gBAAgB;IAChB,KAAK;IAEL,0EAA0E;IAC1E,yBAAyB;IAEzB,0GAA0G;IAC1G,kBAAkB;IAElB,8GAA8G;IAC9G,kBAAkB,EAAE;QAClB,kEAAkE;KACnE;IAED,sGAAsG;IACtG,wBAAwB;IAExB,sFAAsF;IACtF,2BAA2B;IAE3B,qDAAqD;IACrD,eAAe,EAAE,MAAM;IAEvB,qDAAqD;IACrD,8BAA8B;IAE9B,wCAAwC;IACxC,gCAAgC;IAEhC,mDAAmD;IACnD,SAAS,EAAE,CAAC,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"jest.config.js","sourceRoot":"","sources":["../src/jest.config.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAEH,kBAAe;IACb,oEAAoE;IACpE,mBAAmB;IAEnB,wCAAwC;IACxC,WAAW;IAEX,0EAA0E;IAC1E,kCAAkC;IAElC,kEAAkE;IAClE,UAAU,EAAE,IAAI;IAEhB,0FAA0F;IAC1F,eAAe,EAAE,IAAI;IAErB,yGAAyG;IACzG,kCAAkC;IAElC,4DAA4D;IAC5D,iBAAiB,EAAE,UAAU;IAE7B,sEAAsE;IACtE,gCAAgC;IAChC,qBAAqB;IACrB,KAAK;IAEL,0EAA0E;IAC1E,gBAAgB,EAAE,IAAI;IAEtB,wEAAwE;IACxE,uBAAuB;IACvB,YAAY;IACZ,YAAY;IACZ,YAAY;IACZ,aAAa;IACb,KAAK;IAEL,+EAA+E;IAC/E,gCAAgC;IAEhC,0CAA0C;IAC1C,kCAAkC;IAElC,4DAA4D;IAC5D,4BAA4B;IAE5B,+EAA+E;IAC/E,0BAA0B;IAE1B,mGAAmG;IACnG,0BAA0B;IAE1B,kGAAkG;IAClG,6BAA6B;IAE7B,+EAA+E;IAC/E,eAAe;IAEf,iOAAiO;IACjO,qBAAqB;IAErB,iGAAiG;IACjG,uBAAuB;IACvB,mBAAmB;IACnB,KAAK;IAEL,+CAA+C;IAC/C,0BAA0B;IAC1B,UAAU;IACV,YAAY;IACZ,WAAW;IACX,UAAU;IACV,WAAW;IACX,WAAW;IACX,KAAK;IAEL,oIAAoI;IACpI,wBAAwB;IAExB,wHAAwH;IACxH,gCAAgC;IAEhC,2CAA2C;IAC3C,iBAAiB;IAEjB,sEAAsE;IACtE,gCAAgC;IAEhC,2DAA2D;IAC3D,MAAM,EAAE,SAAS;IAEjB,sCAAsC;IACtC,uBAAuB;IAEvB,gEAAgE;IAChE,wBAAwB;IAExB,oDAAoD;IACpD,qBAAqB;IAErB,gEAAgE;IAChE,uBAAuB;IAEvB,8BAA8B;IAC9B,uBAAuB;IAEvB,sDAAsD;IACtD,uBAAuB;IAEvB,wEAAwE;IACxE,sBAAsB;IAEtB,6EAA6E;IAC7E,WAAW;IACX,gBAAgB;IAChB,KAAK;IAEL,0EAA0E;IAC1E,yBAAyB;IAEzB,0GAA0G;IAC1G,kBAAkB;IAElB,8GAA8G;IAC9G,kBAAkB,EAAE;QAClB,kEAAkE;KACnE;IAED,sGAAsG;IACtG,wBAAwB;IAExB,sFAAsF;IACtF,2BAA2B;IAE3B,qDAAqD;IACrD,eAAe,EAAE,MAAM;IAEvB,qDAAqD;IACrD,8BAA8B;IAE9B,wCAAwC;IACxC,gCAAgC;IAEhC,mDAAmD;IACnD,SAAS,EAAE,CAAC,+BAA+B,CAAC;IAE5C,wGAAwG;IACxG,4BAA4B;IAC5B,qBAAqB;IACrB,KAAK;IAEL,8EAA8E;IAC9E,iBAAiB;IAEjB,2DAA2D;IAC3D,mCAAmC;IAEnC,iDAAiD;IACjD,0BAA0B;IAE1B,0GAA0G;IAC1G,+BAA+B;IAE/B,gGAAgG;IAChG,kBAAkB;IAElB,0DAA0D;IAC1D,wBAAwB;IAExB,4HAA4H;IAC5H,6BAA6B;IAC7B,sBAAsB;IACtB,wBAAwB;IACxB,KAAK;IAEL,6IAA6I;IAC7I,yCAAyC;IAEzC,2EAA2E;IAC3E,sBAAsB;IAEtB,mHAAmH;IACnH,+BAA+B;IAE/B,4CAA4C;IAC5C,kBAAkB;CACnB,CAAC"}
|
package/dist/jest.setup.js
CHANGED
|
@@ -9,13 +9,13 @@ function hasTag(tag) {
|
|
|
9
9
|
return match && match[1] && match[1].split(",").includes(tag);
|
|
10
10
|
}
|
|
11
11
|
function printState() {
|
|
12
|
-
const state = Object.assign({}, world_1.getWorld().state);
|
|
12
|
+
const state = Object.assign({}, (0, world_1.getWorld)().state);
|
|
13
13
|
state.current = Object.assign(Object.assign({}, state.current), { template: "REMOVED FOR CLARITY" });
|
|
14
14
|
return JSON.stringify(state, null, 2);
|
|
15
15
|
}
|
|
16
16
|
beforeEach(() => {
|
|
17
17
|
// Reset the world between each test
|
|
18
|
-
world_1.getWorld().reset();
|
|
18
|
+
(0, world_1.getWorld)().reset();
|
|
19
19
|
if (hasTag("@debug")) {
|
|
20
20
|
console.debug(`
|
|
21
21
|
===== State before "${expect.getState().currentTestName}" =====
|
package/dist/jest.setup.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jest.setup.js","sourceRoot":"","sources":["../src/jest.setup.ts"],"names":[],"mappings":";;AAAA,mCAAmC;AAEnC,mEAAmE;AACnE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB;IAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB,GAAG,MAAM,CAAC;AAE3E,SAAS,MAAM,CAAC,GAAW;IACzB,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IACnE,OAAO,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAChE,CAAC;AAED,SAAS,UAAU;IACjB,MAAM,KAAK,qBAAQ,gBAAQ,
|
|
1
|
+
{"version":3,"file":"jest.setup.js","sourceRoot":"","sources":["../src/jest.setup.ts"],"names":[],"mappings":";;AAAA,mCAAmC;AAEnC,mEAAmE;AACnE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB;IAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB,GAAG,MAAM,CAAC;AAE3E,SAAS,MAAM,CAAC,GAAW;IACzB,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IACnE,OAAO,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAChE,CAAC;AAED,SAAS,UAAU;IACjB,MAAM,KAAK,qBAAQ,IAAA,gBAAQ,GAAE,CAAC,KAAK,CAAE,CAAC;IAEtC,KAAK,CAAC,OAAO,mCACR,KAAK,CAAC,OAAO,KAChB,QAAQ,EAAE,qBAAqB,GAChC,CAAC;IAEF,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACxC,CAAC;AAED,UAAU,CAAC,GAAG,EAAE;IACd,oCAAoC;IACpC,IAAA,gBAAQ,GAAE,CAAC,KAAK,EAAE,CAAC;IAEnB,IAAI,MAAM,CAAC,QAAQ,CAAC,EAAE;QACpB,OAAO,CAAC,KAAK,CAAC;sBACI,MAAM,CAAC,QAAQ,EAAE,CAAC,eAAe;EACrD,UAAU,EAAE;;KAET,CAAC,CAAC;KACJ;AACH,CAAC,CAAC,CAAC;AAEH,SAAS,CAAC,GAAG,EAAE;IACb,IAAI,MAAM,CAAC,QAAQ,CAAC,EAAE;QACpB,OAAO,CAAC,KAAK,CAAC;qBACG,MAAM,CAAC,QAAQ,EAAE,CAAC,eAAe;EACpD,UAAU,EAAE;;KAET,CAAC,CAAC;KACJ;AACH,CAAC,CAAC,CAAC"}
|
package/dist/steps/assertions.js
CHANGED
|
@@ -3,40 +3,40 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const program_boilerplate_1 = require("@saasquatch/program-boilerplate");
|
|
6
7
|
const assert_1 = __importDefault(require("assert"));
|
|
7
8
|
const dlv_1 = __importDefault(require("dlv"));
|
|
8
|
-
const program_boilerplate_1 = require("@saasquatch/program-boilerplate");
|
|
9
9
|
const world_1 = require("../world");
|
|
10
10
|
const assertionSteps = ({ then }) => {
|
|
11
11
|
then(/^the output template will include a "?([^"]+)"? requirement$/, (key) => {
|
|
12
|
-
const reqs = world_1.getWorld().state.programTriggerResult.requirements;
|
|
12
|
+
const reqs = (0, world_1.getWorld)().state.programTriggerResult.requirements;
|
|
13
13
|
const reqFound = reqs.find((r) => r.key === key);
|
|
14
|
-
world_1.getWorld().setState({ assertionResults: { foundRequirement: reqFound } });
|
|
15
|
-
assert_1.default(reqFound);
|
|
14
|
+
(0, world_1.getWorld)().setState({ assertionResults: { foundRequirement: reqFound } });
|
|
15
|
+
(0, assert_1.default)(reqFound, `"${key}" requirement was not found in the requirements`);
|
|
16
16
|
});
|
|
17
17
|
then("the requirement will include a graphql query", () => {
|
|
18
|
-
const query = world_1.getWorld().state.assertionResults.foundRequirement.query;
|
|
19
|
-
assert_1.default(query !== null, "expected query to be not null");
|
|
20
|
-
assert_1.default(query !== undefined, "expected query to be not undefined");
|
|
21
|
-
assert_1.default(query.length !== 0, "expected query length > 0");
|
|
18
|
+
const query = (0, world_1.getWorld)().state.assertionResults.foundRequirement.query;
|
|
19
|
+
(0, assert_1.default)(query !== null, "expected query to be not null");
|
|
20
|
+
(0, assert_1.default)(query !== undefined, "expected query to be not undefined");
|
|
21
|
+
(0, assert_1.default)(query.length !== 0, "expected query length > 0");
|
|
22
22
|
});
|
|
23
23
|
then("the following validation results will exist:", (data) => {
|
|
24
|
-
const results = world_1.getWorld().state.programTriggerResult.validationResults;
|
|
24
|
+
const results = (0, world_1.getWorld)().state.programTriggerResult.validationResults;
|
|
25
25
|
data.forEach((row) => {
|
|
26
26
|
const relevantResult = results.find((r) => r.key === row.key);
|
|
27
|
-
assert_1.default(relevantResult);
|
|
28
|
-
assert_1.default(relevantResult.results.some((r) => {
|
|
27
|
+
(0, assert_1.default)(relevantResult, `Failed to locate validation result with key "${row.key}"`);
|
|
28
|
+
(0, assert_1.default)(relevantResult.results.some((r) => {
|
|
29
29
|
return r.message === row.message && r.status === row.status;
|
|
30
30
|
}), `failed to find validation result: ${row.message} ${row.status}`);
|
|
31
31
|
});
|
|
32
32
|
});
|
|
33
33
|
then("the following rewards will exist:", (data) => {
|
|
34
|
-
const rewards = world_1.getWorld().state.programTriggerResult.mutations.filter((m) => {
|
|
34
|
+
const rewards = (0, world_1.getWorld)().state.programTriggerResult.mutations.filter((m) => {
|
|
35
35
|
return m.type === "CREATE_REWARD";
|
|
36
36
|
});
|
|
37
37
|
data.forEach((row, idx) => {
|
|
38
38
|
const reward = rewards[idx];
|
|
39
|
-
assert_1.default(reward, `A reward at index ${idx} does not exist`);
|
|
39
|
+
(0, assert_1.default)(reward, `A reward at index ${idx} does not exist`);
|
|
40
40
|
assert_1.default.strictEqual(reward.data.user.id, `${row.user.toUpperCase()}ID`, "The user ID does not match");
|
|
41
41
|
assert_1.default.strictEqual(reward.data.user.accountId, `${row.user.toUpperCase()}ACCOUNTID`, "The account ID does not match");
|
|
42
42
|
assert_1.default.strictEqual(reward.data.key, row.key, "The row key does not match");
|
|
@@ -48,119 +48,121 @@ const assertionSteps = ({ then }) => {
|
|
|
48
48
|
data.forEach((row) => {
|
|
49
49
|
switch (row.type) {
|
|
50
50
|
case "reward":
|
|
51
|
-
const relevantRewards = world_1.getWorld().state.programTriggerResult.mutations.filter((m) => {
|
|
51
|
+
const relevantRewards = (0, world_1.getWorld)().state.programTriggerResult.mutations.filter((m) => {
|
|
52
52
|
return (m.type === "CREATE_REWARD" &&
|
|
53
53
|
m.data.user.id === `${row.user.toUpperCase()}ID` &&
|
|
54
54
|
m.data.user.accountId ===
|
|
55
55
|
`${row.user.toUpperCase()}ACCOUNTID` &&
|
|
56
56
|
m.data.key === row.key);
|
|
57
57
|
});
|
|
58
|
-
assert_1.default.strictEqual(relevantRewards.length, Number(row.count));
|
|
58
|
+
assert_1.default.strictEqual(relevantRewards.length, Number(row.count), `Expected to find ${row.count} rewards but only found ${relevantRewards.length}`);
|
|
59
59
|
break;
|
|
60
60
|
case "email":
|
|
61
|
-
const relevantEmails = world_1.getWorld().state.programTriggerResult.mutations.filter((m) => {
|
|
61
|
+
const relevantEmails = (0, world_1.getWorld)().state.programTriggerResult.mutations.filter((m) => {
|
|
62
62
|
return (m.type === "SEND_EMAIL" &&
|
|
63
63
|
m.data.user.id === `${row.user.toUpperCase()}ID` &&
|
|
64
64
|
m.data.user.accountId ===
|
|
65
65
|
`${row.user.toUpperCase()}ACCOUNTID` &&
|
|
66
66
|
m.data.key === row.key);
|
|
67
67
|
});
|
|
68
|
-
assert_1.default.strictEqual(relevantEmails.length, Number(row.count));
|
|
68
|
+
assert_1.default.strictEqual(relevantEmails.length, Number(row.count), `Expected to find ${row.count} emails but only found ${relevantEmails.length}`);
|
|
69
69
|
break;
|
|
70
70
|
default:
|
|
71
71
|
}
|
|
72
72
|
});
|
|
73
73
|
});
|
|
74
74
|
then(/^there will not be a "?([^"]+)"? analytic for the "?([^"]+)"? user$/, (type, user) => {
|
|
75
|
-
const relevantAnalytics = world_1.getWorld().state.programTriggerResult.analytics.filter((a) => {
|
|
75
|
+
const relevantAnalytics = (0, world_1.getWorld)().state.programTriggerResult.analytics.filter((a) => {
|
|
76
76
|
return (a.eventType === type &&
|
|
77
77
|
a.data.user.id === `${user.toUpperCase()}ID` &&
|
|
78
78
|
a.data.user.accountId === `${user.toUpperCase()}ACCOUNTID`);
|
|
79
79
|
});
|
|
80
|
-
assert_1.default.strictEqual(relevantAnalytics.length, 0);
|
|
80
|
+
assert_1.default.strictEqual(relevantAnalytics.length, 0, `Expected to find 0 "${type}" analytics for "${user}" but found ${relevantAnalytics.length}`);
|
|
81
81
|
});
|
|
82
82
|
then("the following analytics will exist:", (data) => {
|
|
83
83
|
data.forEach((row) => {
|
|
84
|
-
const relevantAnalytics = world_1.getWorld().state.programTriggerResult.analytics.filter((a) => {
|
|
84
|
+
const relevantAnalytics = (0, world_1.getWorld)().state.programTriggerResult.analytics.filter((a) => {
|
|
85
85
|
return (a.eventType === row.type &&
|
|
86
86
|
a.data.user.id === `${row.user.toUpperCase()}ID` &&
|
|
87
87
|
a.data.user.accountId === `${row.user.toUpperCase()}ACCOUNTID` &&
|
|
88
88
|
(!row.analyticsKey || a.data.analyticsKey === row.analyticsKey) &&
|
|
89
89
|
(!row.isConversion ||
|
|
90
|
-
a.data.isConversion === program_boilerplate_1.inferType(row.isConversion)));
|
|
90
|
+
a.data.isConversion === (0, program_boilerplate_1.inferType)(row.isConversion)));
|
|
91
91
|
});
|
|
92
|
-
assert_1.default.strictEqual(relevantAnalytics.length, Number(row.count));
|
|
92
|
+
assert_1.default.strictEqual(relevantAnalytics.length, Number(row.count), `Expected to find ${row.count} analytics but only found ${relevantAnalytics.length}`);
|
|
93
93
|
});
|
|
94
94
|
});
|
|
95
95
|
then("there will be no mutations", () => {
|
|
96
|
-
|
|
96
|
+
const numMutations = (0, world_1.getWorld)().state.programTriggerResult.mutations.length;
|
|
97
|
+
assert_1.default.strictEqual(numMutations, 0, `Expected 0 mutations but found ${numMutations}`);
|
|
97
98
|
});
|
|
98
99
|
then("there will be no analytics", () => {
|
|
99
|
-
|
|
100
|
+
const numAnalytics = (0, world_1.getWorld)().state.programTriggerResult.analytics.length;
|
|
101
|
+
assert_1.default.strictEqual(numAnalytics, 0, `Expected 0 analytics but found ${numAnalytics}`);
|
|
100
102
|
});
|
|
101
103
|
then(/^there will be (\d+) "?([^"]+)"? reward(s) for the "?([^"]+)"? user$/, (count, key, user) => {
|
|
102
|
-
const relevantRewards = world_1.getWorld().state.programTriggerResult.mutations.filter((m) => {
|
|
104
|
+
const relevantRewards = (0, world_1.getWorld)().state.programTriggerResult.mutations.filter((m) => {
|
|
103
105
|
return (m.type === "CREATE_REWARD" &&
|
|
104
106
|
m.data.user.id === `${user.toUpperCase()}ID` &&
|
|
105
107
|
m.data.user.accountId === `${user.toUpperCase()}ACCOUNTID` &&
|
|
106
108
|
m.data.key === key);
|
|
107
109
|
});
|
|
108
|
-
assert_1.default.strictEqual(relevantRewards.length, count);
|
|
110
|
+
assert_1.default.strictEqual(relevantRewards.length, count, `Expected to find ${count} "${key}" analytics for "${user}" but found ${relevantRewards.length}`);
|
|
109
111
|
});
|
|
110
112
|
then(/^there will be no reward "?([^"]+)"?$/, (rewardKey) => {
|
|
111
|
-
const relevantRewards = world_1.getWorld().state.programTriggerResult.mutations.filter((m) => {
|
|
113
|
+
const relevantRewards = (0, world_1.getWorld)().state.programTriggerResult.mutations.filter((m) => {
|
|
112
114
|
return m.type === "CREATE_REWARD" && m.data.key === rewardKey;
|
|
113
115
|
});
|
|
114
|
-
assert_1.default.strictEqual(relevantRewards.length, 0);
|
|
116
|
+
assert_1.default.strictEqual(relevantRewards.length, 0, `Expected to find 0 "${rewardKey}" rewards but found ${relevantRewards.length}`);
|
|
115
117
|
});
|
|
116
118
|
then(/^there will be (\d+) "?([^"]+)"? email(s) for the "?([^"]+)"? user$/, (count, key, user) => {
|
|
117
|
-
const
|
|
119
|
+
const relevantEmails = (0, world_1.getWorld)().state.programTriggerResult.mutations.filter((m) => {
|
|
118
120
|
return (m.type === "SEND_EMAIL" &&
|
|
119
121
|
m.data.user.id === `${user.toUpperCase()}ID` &&
|
|
120
122
|
m.data.user.accountId === `${user.toUpperCase()}ACCOUNTID` &&
|
|
121
123
|
m.data.key === key);
|
|
122
124
|
});
|
|
123
|
-
assert_1.default.strictEqual(
|
|
125
|
+
assert_1.default.strictEqual(relevantEmails.length, count, `Expected to find ${count} "${key}" emails for "${user}" but found ${relevantEmails.length}`);
|
|
124
126
|
});
|
|
125
127
|
then(/^the programId will be "?([^"]+)"?$/, (k) => {
|
|
126
|
-
assert_1.default.strictEqual(world_1.getWorld().state.programTriggerResult.programId, k);
|
|
128
|
+
assert_1.default.strictEqual((0, world_1.getWorld)().state.programTriggerResult.programId, k, "Incorrect program ID");
|
|
127
129
|
});
|
|
128
130
|
then(/^the output will include a "?([^"]+)"? event key trigger$/, (key) => {
|
|
129
|
-
const trigger = world_1.getWorld().state.programTriggerResult.trigger;
|
|
130
|
-
assert_1.default(trigger.eventKeys.includes(key));
|
|
131
|
+
const trigger = (0, world_1.getWorld)().state.programTriggerResult.trigger;
|
|
132
|
+
(0, assert_1.default)(trigger.eventKeys.includes(key), `Output didn't include a "${key}" event key trigger`);
|
|
131
133
|
});
|
|
132
134
|
then(/^the output will not include a "?([^"]+)"? email$/, (key) => {
|
|
133
|
-
const
|
|
134
|
-
assert_1.default(
|
|
135
|
+
const relevantEmails = (0, world_1.getWorld)().state.programTriggerResult.emails.filter((e) => e.key === key);
|
|
136
|
+
assert_1.default.deepStrictEqual(relevantEmails.length, 0, `Expected no "${key}" emails but found ${relevantEmails.length}`);
|
|
135
137
|
});
|
|
136
138
|
then(/^the output will include a "?([^"]+)"? email$/, (key) => {
|
|
137
|
-
const
|
|
138
|
-
assert_1.default(
|
|
139
|
+
const relevantEmails = (0, world_1.getWorld)().state.programTriggerResult.emails.filter((e) => e.key === key);
|
|
140
|
+
(0, assert_1.default)(relevantEmails.length > 0, `Expected to find "${key}" email but found none`);
|
|
139
141
|
});
|
|
140
142
|
then(/^the output will include a "?([^"]+)"? reward key$/, (key) => {
|
|
141
|
-
const
|
|
142
|
-
assert_1.default(
|
|
143
|
+
const relevantRewards = (0, world_1.getWorld)().state.programTriggerResult.rewards.filter((e) => e.key === key);
|
|
144
|
+
(0, assert_1.default)(relevantRewards.length > 0, `Expected to find "${key}" reward but found none`);
|
|
143
145
|
});
|
|
144
146
|
then(/^the output will not include a "?([^"]+)"? reward key$/, (key) => {
|
|
145
|
-
const
|
|
146
|
-
assert_1.default(
|
|
147
|
+
const relevantRewards = (0, world_1.getWorld)().state.programTriggerResult.rewards.filter((e) => e.key === key);
|
|
148
|
+
assert_1.default.deepStrictEqual(relevantRewards.length, 0, `Expected 0 "${key}" rewards but found ${relevantRewards.length}`);
|
|
147
149
|
});
|
|
148
150
|
then("the output will include the following rewards and emails:", (data) => {
|
|
149
|
-
const emails = world_1.getWorld().state.programTriggerResult.emails;
|
|
150
|
-
const rewards = world_1.getWorld().state.programTriggerResult.rewards;
|
|
151
|
+
const emails = (0, world_1.getWorld)().state.programTriggerResult.emails;
|
|
152
|
+
const rewards = (0, world_1.getWorld)().state.programTriggerResult.rewards;
|
|
151
153
|
data.forEach((row) => {
|
|
152
154
|
if (row.type === "reward")
|
|
153
|
-
assert_1.default(rewards.some((e) => e.key === row.key));
|
|
155
|
+
(0, assert_1.default)(rewards.some((e) => e.key === row.key));
|
|
154
156
|
if (row.type === "email")
|
|
155
|
-
assert_1.default(emails.some((e) => e.key === row.key));
|
|
157
|
+
(0, assert_1.default)(emails.some((e) => e.key === row.key));
|
|
156
158
|
});
|
|
157
159
|
});
|
|
158
160
|
then(/^the following (CREATE_REWARD|MODERATE_GRAPH_NODES|EXCHANGE_REWARD) mutation will exist:$/, (type, filters) => {
|
|
159
|
-
const matchingMutations = world_1.getWorld().state.programTriggerResult.mutations.filter((m) => {
|
|
161
|
+
const matchingMutations = (0, world_1.getWorld)().state.programTriggerResult.mutations.filter((m) => {
|
|
160
162
|
const correctType = m.type === type;
|
|
161
163
|
const passesFilters = filters.every((row) => {
|
|
162
|
-
const expected = program_boilerplate_1.inferType(row.value);
|
|
163
|
-
const actual = dlv_1.default(m.data, row.field);
|
|
164
|
+
const expected = (0, program_boilerplate_1.inferType)(row.value);
|
|
165
|
+
const actual = (0, dlv_1.default)(m.data, row.field);
|
|
164
166
|
if (expected instanceof Object) {
|
|
165
167
|
try {
|
|
166
168
|
assert_1.default.deepStrictEqual(actual, expected);
|
|
@@ -177,13 +179,13 @@ const assertionSteps = ({ then }) => {
|
|
|
177
179
|
assert_1.default.strictEqual(matchingMutations.length, 1);
|
|
178
180
|
});
|
|
179
181
|
then("the output template will be unchanged", () => {
|
|
180
|
-
assert_1.default.deepStrictEqual(world_1.getWorld().state.programTriggerResult, world_1.
|
|
182
|
+
assert_1.default.deepStrictEqual((0, world_1.getWorld)().state.programTriggerResult, (0, world_1.getWorld)().getDefaultTemplate());
|
|
181
183
|
});
|
|
182
184
|
then(/^there will be no "?([^"]+)"? analytic for "?([^"]+)"?$/, (type, key) => {
|
|
183
|
-
const matching = world_1.getWorld().state.programTriggerResult.analytics.filter((a) => {
|
|
185
|
+
const matching = (0, world_1.getWorld)().state.programTriggerResult.analytics.filter((a) => {
|
|
184
186
|
return a.eventType === type && a.data.analyticsKey === key;
|
|
185
187
|
});
|
|
186
|
-
assert_1.default.strictEqual(matching.length, 0);
|
|
188
|
+
assert_1.default.strictEqual(matching.length, 0, `Expected no "${type}" analytics for "${key}" but found ${matching.length}`);
|
|
187
189
|
});
|
|
188
190
|
};
|
|
189
191
|
exports.default = assertionSteps;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assertions.js","sourceRoot":"","sources":["../../src/steps/assertions.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"assertions.js","sourceRoot":"","sources":["../../src/steps/assertions.ts"],"names":[],"mappings":"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"}
|
package/dist/steps/events.js
CHANGED
|
@@ -3,16 +3,16 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
const world_1 = require("../world");
|
|
4
4
|
const eventSteps = ({ given }) => {
|
|
5
5
|
given("there are no events", () => {
|
|
6
|
-
world_1.getWorld().setState({
|
|
6
|
+
(0, world_1.getWorld)().setState({
|
|
7
7
|
current: {
|
|
8
8
|
events: [],
|
|
9
9
|
},
|
|
10
10
|
});
|
|
11
11
|
});
|
|
12
12
|
given("the following event exists:", (data) => {
|
|
13
|
-
world_1.getWorld().setState({
|
|
13
|
+
(0, world_1.getWorld)().setState({
|
|
14
14
|
current: {
|
|
15
|
-
events: [...(world_1.getWorld().state.current.events || []), JSON.parse(data)],
|
|
15
|
+
events: [...((0, world_1.getWorld)().state.current.events || []), JSON.parse(data)],
|
|
16
16
|
},
|
|
17
17
|
});
|
|
18
18
|
});
|
package/dist/steps/events.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/steps/events.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/steps/events.ts"],"names":[],"mappings":";;AACA,oCAAoC;AAEpC,MAAM,UAAU,GAAoB,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;IAChD,KAAK,CAAC,qBAAqB,EAAE,GAAG,EAAE;QAChC,IAAA,gBAAQ,GAAE,CAAC,QAAQ,CAAC;YAClB,OAAO,EAAE;gBACP,MAAM,EAAE,EAAE;aACX;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,6BAA6B,EAAE,CAAC,IAAS,EAAE,EAAE;QACjD,IAAA,gBAAQ,GAAE,CAAC,QAAQ,CAAC;YAClB,OAAO,EAAE;gBACP,MAAM,EAAE,CAAC,GAAG,CAAC,IAAA,gBAAQ,GAAE,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;aACvE;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,kBAAe,UAAU,CAAC"}
|
package/dist/steps/index.js
CHANGED
|
@@ -3,12 +3,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const assertions_1 = __importDefault(require("./assertions"));
|
|
6
7
|
const events_1 = __importDefault(require("./events"));
|
|
8
|
+
const referral_1 = __importDefault(require("./referral"));
|
|
7
9
|
const rules_1 = __importDefault(require("./rules"));
|
|
8
10
|
const trigger_1 = __importDefault(require("./trigger"));
|
|
9
11
|
const user_1 = __importDefault(require("./user"));
|
|
10
|
-
const assertions_1 = __importDefault(require("./assertions"));
|
|
11
|
-
const referral_1 = __importDefault(require("./referral"));
|
|
12
12
|
exports.default = [
|
|
13
13
|
events_1.default,
|
|
14
14
|
rules_1.default,
|
package/dist/steps/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/steps/index.ts"],"names":[],"mappings":";;;;;AAAA,sDAAkC;AAClC,oDAAiC;AACjC,wDAAqC;AACrC,kDAA+B;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/steps/index.ts"],"names":[],"mappings":";;;;;AAAA,8DAA0C;AAC1C,sDAAkC;AAClC,0DAAuC;AACvC,oDAAiC;AACjC,wDAAqC;AACrC,kDAA+B;AAE/B,kBAAe;IACb,gBAAU;IACV,eAAU;IACV,iBAAY;IACZ,cAAS;IACT,oBAAc;IACd,kBAAa;CACd,CAAC"}
|
package/dist/steps/referral.js
CHANGED
|
@@ -4,10 +4,10 @@ const program_boilerplate_1 = require("@saasquatch/program-boilerplate");
|
|
|
4
4
|
const world_1 = require("../world");
|
|
5
5
|
const referralSteps = ({ given }) => {
|
|
6
6
|
given(/^the referral has field "?([^"]+)"? equal to "?([^"]+)"?$/, (key, value) => {
|
|
7
|
-
world_1.getWorld().setState({
|
|
7
|
+
(0, world_1.getWorld)().setState({
|
|
8
8
|
current: {
|
|
9
9
|
referral: {
|
|
10
|
-
[key]: program_boilerplate_1.inferType(value),
|
|
10
|
+
[key]: (0, program_boilerplate_1.inferType)(value),
|
|
11
11
|
},
|
|
12
12
|
},
|
|
13
13
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"referral.js","sourceRoot":"","sources":["../../src/steps/referral.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"referral.js","sourceRoot":"","sources":["../../src/steps/referral.ts"],"names":[],"mappings":";;AAAA,yEAA4D;AAE5D,oCAAoC;AAEpC,MAAM,aAAa,GAAoB,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;IACnD,KAAK,CACH,2DAA2D,EAC3D,CAAC,GAAW,EAAE,KAAa,EAAE,EAAE;QAC7B,IAAA,gBAAQ,GAAE,CAAC,QAAQ,CAAC;YAClB,OAAO,EAAE;gBACP,QAAQ,EAAE;oBACR,CAAC,GAAG,CAAC,EAAE,IAAA,+BAAS,EAAC,KAAK,CAAC;iBACxB;aACF;SACF,CAAC,CAAC;IACL,CAAC,CACF,CAAC;AACJ,CAAC,CAAC;AAEF,kBAAe,aAAa,CAAC"}
|
package/dist/steps/rules.js
CHANGED
|
@@ -3,14 +3,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
const world_1 = require("../world");
|
|
4
4
|
const rulesSteps = ({ given }) => {
|
|
5
5
|
given("there are no program rules", () => {
|
|
6
|
-
world_1.getWorld().setState({
|
|
6
|
+
(0, world_1.getWorld)().setState({
|
|
7
7
|
current: {
|
|
8
8
|
rules: undefined,
|
|
9
9
|
},
|
|
10
10
|
});
|
|
11
11
|
});
|
|
12
12
|
given("there are no reward rules", () => {
|
|
13
|
-
world_1.getWorld().setState({
|
|
13
|
+
(0, world_1.getWorld)().setState({
|
|
14
14
|
current: {
|
|
15
15
|
rules: {
|
|
16
16
|
rewardRules: undefined,
|
|
@@ -19,9 +19,9 @@ const rulesSteps = ({ given }) => {
|
|
|
19
19
|
});
|
|
20
20
|
});
|
|
21
21
|
given(/^the current time is (\d+)$/, (time) => {
|
|
22
|
-
world_1.getWorld().setState({
|
|
22
|
+
(0, world_1.getWorld)().setState({
|
|
23
23
|
current: {
|
|
24
|
-
time,
|
|
24
|
+
time: Number(time),
|
|
25
25
|
},
|
|
26
26
|
});
|
|
27
27
|
});
|
package/dist/steps/rules.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rules.js","sourceRoot":"","sources":["../../src/steps/rules.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"rules.js","sourceRoot":"","sources":["../../src/steps/rules.ts"],"names":[],"mappings":";;AACA,oCAAoC;AAEpC,MAAM,UAAU,GAAoB,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;IAChD,KAAK,CAAC,4BAA4B,EAAE,GAAG,EAAE;QACvC,IAAA,gBAAQ,GAAE,CAAC,QAAQ,CAAC;YAClB,OAAO,EAAE;gBACP,KAAK,EAAE,SAAS;aACjB;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACtC,IAAA,gBAAQ,GAAE,CAAC,QAAQ,CAAC;YAClB,OAAO,EAAE;gBACP,KAAK,EAAE;oBACL,WAAW,EAAE,SAAS;iBACvB;aACF;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,6BAA6B,EAAE,CAAC,IAAY,EAAE,EAAE;QACpD,IAAA,gBAAQ,GAAE,CAAC,QAAQ,CAAC;YAClB,OAAO,EAAE;gBACP,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC;aACnB;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,kBAAe,UAAU,CAAC"}
|
package/dist/steps/trigger.js
CHANGED
|
@@ -5,43 +5,55 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const program_boilerplate_1 = require("@saasquatch/program-boilerplate");
|
|
7
7
|
const deepmerge_1 = __importDefault(require("deepmerge"));
|
|
8
|
-
const world_1 = require("../world");
|
|
9
8
|
const faker_1 = require("../faker");
|
|
9
|
+
const world_1 = require("../world");
|
|
10
10
|
const triggerSteps = ({ when }) => {
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
const triggerTypes = [
|
|
12
|
+
"PROGRAM_INTROSPECTION",
|
|
13
|
+
"PROGRAM_VALIDATION",
|
|
14
|
+
"AFTER_USER_CREATED_OR_UPDATED",
|
|
15
|
+
"AFTER_USER_EVENT_PROCESSED",
|
|
16
|
+
"REFERRAL",
|
|
17
|
+
"SCHEDULED",
|
|
18
|
+
"REWARD_SCHEDULED",
|
|
19
|
+
];
|
|
20
|
+
// prettier-ignore
|
|
21
|
+
const regexString = `^(?:the )?"?(${triggerTypes.join("|")})"?(?: trigger)? runs$`;
|
|
22
|
+
when(new RegExp(regexString), (type) => {
|
|
23
|
+
var _a;
|
|
24
|
+
const currentState = (_a = (0, world_1.getWorld)().state.current) !== null && _a !== void 0 ? _a : {};
|
|
13
25
|
const { template, rules, programRewards } = currentState;
|
|
14
26
|
let body;
|
|
15
27
|
switch (type) {
|
|
16
28
|
case "PROGRAM_INTROSPECTION":
|
|
17
|
-
body = faker_1.getIntrospectionJson(template, rules, programRewards);
|
|
29
|
+
body = (0, faker_1.getIntrospectionJson)(template, rules, programRewards);
|
|
18
30
|
break;
|
|
19
31
|
case "PROGRAM_VALIDATION":
|
|
20
|
-
body = faker_1.getValidationJson(world_1.getWorld().state.validationReqs, template.id, rules);
|
|
32
|
+
body = (0, faker_1.getValidationJson)((0, world_1.getWorld)().state.validationReqs, template.id, rules);
|
|
21
33
|
break;
|
|
22
34
|
default:
|
|
23
|
-
body = faker_1.getProgramTriggerJson({
|
|
35
|
+
body = (0, faker_1.getProgramTriggerJson)({
|
|
24
36
|
type,
|
|
25
|
-
user: world_1.getWorld().state.current.user,
|
|
26
|
-
rules: world_1.getWorld().state.current.rules,
|
|
27
|
-
time: world_1.getWorld().state.current.time,
|
|
37
|
+
user: (0, world_1.getWorld)().state.current.user,
|
|
38
|
+
rules: (0, world_1.getWorld)().state.current.rules,
|
|
39
|
+
time: (0, world_1.getWorld)().state.current.time,
|
|
28
40
|
});
|
|
29
41
|
}
|
|
30
42
|
switch (type) {
|
|
31
43
|
case "AFTER_USER_CREATED_OR_UPDATED":
|
|
32
|
-
body = deepmerge_1.default(body, faker_1.getAUCOUTJson(
|
|
44
|
+
body = (0, deepmerge_1.default)(body, (0, faker_1.getAUCOUTJson)((0, world_1.getWorld)().state.current.previous, (0, world_1.getWorld)().state.current.events));
|
|
33
45
|
break;
|
|
34
46
|
case "AFTER_USER_EVENT_PROCESSED":
|
|
35
|
-
body = deepmerge_1.default(body, faker_1.getAUEPTJson(world_1.getWorld().state.current.events));
|
|
47
|
+
body = (0, deepmerge_1.default)(body, (0, faker_1.getAUEPTJson)((0, world_1.getWorld)().state.current.events));
|
|
36
48
|
break;
|
|
37
49
|
case "REFERRAL":
|
|
38
|
-
body = deepmerge_1.default(body, faker_1.getReferralJson(undefined, world_1.getWorld().state.current.referral));
|
|
50
|
+
body = (0, deepmerge_1.default)(body, (0, faker_1.getReferralJson)(undefined, (0, world_1.getWorld)().state.current.referral));
|
|
39
51
|
break;
|
|
40
52
|
default:
|
|
41
53
|
break;
|
|
42
54
|
}
|
|
43
|
-
world_1.getWorld().setState({
|
|
44
|
-
programTriggerResult: program_boilerplate_1.triggerProgram(body, world_1.
|
|
55
|
+
(0, world_1.getWorld)().setState({
|
|
56
|
+
programTriggerResult: (0, program_boilerplate_1.triggerProgram)(body, (0, world_1.getWorld)().getProgram()).json,
|
|
45
57
|
});
|
|
46
58
|
});
|
|
47
59
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trigger.js","sourceRoot":"","sources":["../../src/steps/trigger.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"trigger.js","sourceRoot":"","sources":["../../src/steps/trigger.ts"],"names":[],"mappings":";;;;;AAAA,yEAAwE;AACxE,0DAAkC;AAElC,oCAOkB;AAClB,oCAAoC;AAEpC,MAAM,YAAY,GAAoB,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE;IACjD,MAAM,YAAY,GAAG;QACnB,uBAAuB;QACvB,oBAAoB;QACpB,+BAA+B;QAC/B,4BAA4B;QAC5B,UAAU;QACV,WAAW;QACX,kBAAkB;KACnB,CAAC;IAEF,kBAAkB;IAClB,MAAM,WAAW,GAAG,gBAAgB,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,wBAAwB,CAAC;IAEnF,IAAI,CAAC,IAAI,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,IAA2B,EAAE,EAAE;;QAC5D,MAAM,YAAY,GAAG,MAAA,IAAA,gBAAQ,GAAE,CAAC,KAAK,CAAC,OAAO,mCAAI,EAAE,CAAC;QACpD,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,YAAY,CAAC;QAEzD,IAAI,IAAS,CAAC;QAEd,QAAQ,IAAI,EAAE;YACZ,KAAK,uBAAuB;gBAC1B,IAAI,GAAG,IAAA,4BAAoB,EAAC,QAAQ,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC;gBAC7D,MAAM;YAER,KAAK,oBAAoB;gBACvB,IAAI,GAAG,IAAA,yBAAiB,EACtB,IAAA,gBAAQ,GAAE,CAAC,KAAK,CAAC,cAAc,EAC/B,QAAQ,CAAC,EAAE,EACX,KAAK,CACN,CAAC;gBACF,MAAM;YAER;gBACE,IAAI,GAAG,IAAA,6BAAqB,EAAC;oBAC3B,IAAI;oBACJ,IAAI,EAAE,IAAA,gBAAQ,GAAE,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI;oBACnC,KAAK,EAAE,IAAA,gBAAQ,GAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK;oBACrC,IAAI,EAAE,IAAA,gBAAQ,GAAE,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI;iBACpC,CAAC,CAAC;SACN;QAED,QAAQ,IAAI,EAAE;YACZ,KAAK,+BAA+B;gBAClC,IAAI,GAAG,IAAA,mBAAS,EACd,IAAI,EACJ,IAAA,qBAAa,EACX,IAAA,gBAAQ,GAAE,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,EACjC,IAAA,gBAAQ,GAAE,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAChC,CACF,CAAC;gBACF,MAAM;YAER,KAAK,4BAA4B;gBAC/B,IAAI,GAAG,IAAA,mBAAS,EAAC,IAAI,EAAE,IAAA,oBAAY,EAAC,IAAA,gBAAQ,GAAE,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;gBACtE,MAAM;YAER,KAAK,UAAU;gBACb,IAAI,GAAG,IAAA,mBAAS,EACd,IAAI,EACJ,IAAA,uBAAe,EAAC,SAAS,EAAE,IAAA,gBAAQ,GAAE,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAC9D,CAAC;gBACF,MAAM;YAER;gBACE,MAAM;SACT;QAED,IAAA,gBAAQ,GAAE,CAAC,QAAQ,CAAC;YAClB,oBAAoB,EAAE,IAAA,oCAAc,EAAC,IAAI,EAAE,IAAA,gBAAQ,GAAE,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI;SACzE,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,kBAAe,YAAY,CAAC"}
|
package/dist/steps/user.js
CHANGED
|
@@ -3,19 +3,31 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
const program_boilerplate_1 = require("@saasquatch/program-boilerplate");
|
|
4
4
|
const world_1 = require("../world");
|
|
5
5
|
const userSteps = ({ given }) => {
|
|
6
|
-
given(/^the (?:referred )?user has custom field "?([^"]+)"? equal to "?([^"]+)"?$/, (field, val) => {
|
|
7
|
-
world_1.getWorld().setState({
|
|
6
|
+
given(/^the (?:referred )?user (?:now )?has custom field "?([^"]+)"? equal to "?([^"]+)"?$/, (field, val) => {
|
|
7
|
+
(0, world_1.getWorld)().setState({
|
|
8
8
|
current: {
|
|
9
9
|
user: {
|
|
10
10
|
customFields: {
|
|
11
|
-
[field]: program_boilerplate_1.inferType(val),
|
|
11
|
+
[field]: (0, program_boilerplate_1.inferType)(val),
|
|
12
12
|
},
|
|
13
13
|
},
|
|
14
14
|
},
|
|
15
15
|
});
|
|
16
16
|
});
|
|
17
|
+
given(/^the (?:referred )?user previously had custom field "?([^"]+)"? equal to "?([^"]+)"?$/, (field, val) => {
|
|
18
|
+
(0, world_1.getWorld)().setState({
|
|
19
|
+
current: {
|
|
20
|
+
previous: {
|
|
21
|
+
customFields: {
|
|
22
|
+
[field]: (0, program_boilerplate_1.inferType)(val),
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
},
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
given("the user's custom fields didn't change", () => { });
|
|
17
29
|
given(/^the (?:referred )?user (is|is not|isn't) blocked$/, (blocked) => {
|
|
18
|
-
world_1.getWorld().setState({
|
|
30
|
+
(0, world_1.getWorld)().setState({
|
|
19
31
|
current: {
|
|
20
32
|
user: {
|
|
21
33
|
dateBlocked: blocked === "is" ? 123 : undefined,
|
|
@@ -23,10 +35,13 @@ const userSteps = ({ given }) => {
|
|
|
23
35
|
},
|
|
24
36
|
});
|
|
25
37
|
});
|
|
26
|
-
given(/^the segment rules include segment (
|
|
27
|
-
|
|
28
|
-
segments.
|
|
29
|
-
|
|
38
|
+
given(/^the segment rules include segment "?([^"]+)"?$/, (seg) => {
|
|
39
|
+
var _a;
|
|
40
|
+
const segments = (_a = (0, world_1.getWorld)().state.current.rules.userSegmentation) !== null && _a !== void 0 ? _a : [];
|
|
41
|
+
if (!segments.includes(seg)) {
|
|
42
|
+
segments.push(seg);
|
|
43
|
+
}
|
|
44
|
+
(0, world_1.getWorld)().setState({
|
|
30
45
|
current: {
|
|
31
46
|
rules: {
|
|
32
47
|
userSegmentation: segments,
|
|
@@ -35,9 +50,11 @@ const userSteps = ({ given }) => {
|
|
|
35
50
|
});
|
|
36
51
|
});
|
|
37
52
|
given(/^the (?:referred )?user belongs to segment "?([^"]+)"?$/, (segment) => {
|
|
38
|
-
const segments = world_1.getWorld().state.current.user.segments || [];
|
|
39
|
-
segments.
|
|
40
|
-
|
|
53
|
+
const segments = (0, world_1.getWorld)().state.current.user.segments || [];
|
|
54
|
+
if (!segments.includes(segment)) {
|
|
55
|
+
segments.push(segment);
|
|
56
|
+
}
|
|
57
|
+
(0, world_1.getWorld)().setState({
|
|
41
58
|
current: {
|
|
42
59
|
user: {
|
|
43
60
|
segments,
|
|
@@ -46,13 +63,13 @@ const userSteps = ({ given }) => {
|
|
|
46
63
|
});
|
|
47
64
|
});
|
|
48
65
|
given(/^the (?:referred )?user has the following reward:$/, (data) => {
|
|
49
|
-
const rewards = world_1.getWorld().state.current.user.rewards || {
|
|
66
|
+
const rewards = (0, world_1.getWorld)().state.current.user.rewards || {
|
|
50
67
|
totalCount: 0,
|
|
51
68
|
data: [],
|
|
52
69
|
};
|
|
53
70
|
rewards.data.push(JSON.parse(data));
|
|
54
71
|
rewards.totalCount += 1;
|
|
55
|
-
world_1.getWorld().setState({
|
|
72
|
+
(0, world_1.getWorld)().setState({
|
|
56
73
|
current: {
|
|
57
74
|
user: {
|
|
58
75
|
rewards,
|
|
@@ -61,14 +78,14 @@ const userSteps = ({ given }) => {
|
|
|
61
78
|
});
|
|
62
79
|
});
|
|
63
80
|
given("the referrer user has the following reward:", (data) => {
|
|
64
|
-
const rewards = world_1.getWorld().state.current.user.referredByReferral
|
|
81
|
+
const rewards = (0, world_1.getWorld)().state.current.user.referredByReferral
|
|
65
82
|
.referrerUser.rewards || {
|
|
66
83
|
totalCount: 0,
|
|
67
84
|
data: [],
|
|
68
85
|
};
|
|
69
86
|
rewards.data.push(JSON.parse(data));
|
|
70
87
|
rewards.totalCount += 1;
|
|
71
|
-
world_1.getWorld().setState({
|
|
88
|
+
(0, world_1.getWorld)().setState({
|
|
72
89
|
current: {
|
|
73
90
|
user: {
|
|
74
91
|
referredByReferral: {
|
|
@@ -82,15 +99,15 @@ const userSteps = ({ given }) => {
|
|
|
82
99
|
});
|
|
83
100
|
given(/^the (?:referred )?user has a program goal "?([^"]+)"? with count "?([^"]+)"?$/, (goalId, count) => {
|
|
84
101
|
var _a;
|
|
85
|
-
world_1.getWorld().setState({
|
|
102
|
+
(0, world_1.getWorld)().setState({
|
|
86
103
|
current: {
|
|
87
104
|
user: {
|
|
88
105
|
programGoals: [
|
|
89
|
-
...(((_a = world_1.getWorld().state.current.user) === null || _a === void 0 ? void 0 : _a.programGoals) || []),
|
|
106
|
+
...(((_a = (0, world_1.getWorld)().state.current.user) === null || _a === void 0 ? void 0 : _a.programGoals) || []),
|
|
90
107
|
{
|
|
91
108
|
goalId,
|
|
92
109
|
programId: "r1",
|
|
93
|
-
count: program_boilerplate_1.inferType(count),
|
|
110
|
+
count: (0, program_boilerplate_1.inferType)(count),
|
|
94
111
|
firstDate: 1,
|
|
95
112
|
lastDate: 1,
|
|
96
113
|
},
|
package/dist/steps/user.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user.js","sourceRoot":"","sources":["../../src/steps/user.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"user.js","sourceRoot":"","sources":["../../src/steps/user.ts"],"names":[],"mappings":"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"}
|
package/dist/world.d.ts
CHANGED
|
@@ -8,6 +8,7 @@ interface State {
|
|
|
8
8
|
current: Partial<{
|
|
9
9
|
events: any[];
|
|
10
10
|
time: number;
|
|
11
|
+
previous: any;
|
|
11
12
|
user: any;
|
|
12
13
|
referral: any;
|
|
13
14
|
programRewards: any[];
|
|
@@ -16,15 +17,16 @@ interface State {
|
|
|
16
17
|
}>;
|
|
17
18
|
}
|
|
18
19
|
export declare class World {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
20
|
+
private program;
|
|
21
|
+
private defaultIntrospection;
|
|
22
|
+
private defaultRules;
|
|
23
|
+
private defaultTemplate;
|
|
23
24
|
state: Readonly<State>;
|
|
24
25
|
constructor();
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
26
|
+
loadDefaults(schemaFile: string, templateFile: string, rulesFile: string): void;
|
|
27
|
+
setProgram(program: types.rpc.Program): void;
|
|
28
|
+
getProgram(): types.rpc.Program;
|
|
29
|
+
getDefaultTemplate(): any;
|
|
28
30
|
setState(newState: Partial<State>): this;
|
|
29
31
|
reset(): Readonly<State>;
|
|
30
32
|
}
|
package/dist/world.js
CHANGED
|
@@ -4,32 +4,40 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.getWorld = exports.World = void 0;
|
|
7
|
-
const fs_1 = require("fs");
|
|
8
7
|
const deepmerge_1 = __importDefault(require("deepmerge"));
|
|
8
|
+
const fs_1 = require("fs");
|
|
9
9
|
const faker_1 = require("./faker");
|
|
10
|
+
const deepCopy = (input) => JSON.parse(JSON.stringify(input));
|
|
10
11
|
class World {
|
|
11
12
|
constructor() {
|
|
13
|
+
this.defaultIntrospection = {};
|
|
14
|
+
this.defaultRules = {};
|
|
15
|
+
this.defaultTemplate = {};
|
|
12
16
|
this.state = this.reset();
|
|
13
17
|
}
|
|
14
|
-
|
|
15
|
-
this.defaultIntrospection = JSON.parse(fs_1.readFileSync(templateFile).toString());
|
|
16
|
-
const schema = JSON.parse(fs_1.readFileSync(schemaFile).toString());
|
|
17
|
-
this.defaultRules = JSON.parse(fs_1.readFileSync(rulesFile).toString());
|
|
18
|
-
this.defaultTemplate = deepmerge_1.default(this.defaultIntrospection, schema);
|
|
18
|
+
loadDefaults(schemaFile, templateFile, rulesFile) {
|
|
19
|
+
this.defaultIntrospection = JSON.parse((0, fs_1.readFileSync)(templateFile).toString());
|
|
20
|
+
const schema = JSON.parse((0, fs_1.readFileSync)(schemaFile).toString());
|
|
21
|
+
this.defaultRules = JSON.parse((0, fs_1.readFileSync)(rulesFile).toString());
|
|
22
|
+
this.defaultTemplate = (0, deepmerge_1.default)(this.defaultIntrospection, schema);
|
|
19
23
|
}
|
|
20
|
-
|
|
24
|
+
setProgram(program) {
|
|
21
25
|
this.program = program;
|
|
22
26
|
}
|
|
23
|
-
|
|
27
|
+
getProgram() {
|
|
24
28
|
if (!this.program)
|
|
25
29
|
throw new Error("The program has to be set");
|
|
26
30
|
return this.program;
|
|
27
31
|
}
|
|
32
|
+
getDefaultTemplate() {
|
|
33
|
+
return this.defaultTemplate;
|
|
34
|
+
}
|
|
28
35
|
setState(newState) {
|
|
29
|
-
this.state = deepmerge_1.default(this.state, newState, { arrayMerge: (_, a) => a });
|
|
36
|
+
this.state = (0, deepmerge_1.default)(this.state, newState, { arrayMerge: (_, a) => a });
|
|
30
37
|
return this;
|
|
31
38
|
}
|
|
32
39
|
reset() {
|
|
40
|
+
const user = (0, faker_1.getRandomUser)("REFERRED");
|
|
33
41
|
this.state = {
|
|
34
42
|
programTriggerResult: {},
|
|
35
43
|
validationReqs: [],
|
|
@@ -38,22 +46,21 @@ class World {
|
|
|
38
46
|
events: [],
|
|
39
47
|
referral: {},
|
|
40
48
|
programRewards: [],
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
49
|
+
previous: user,
|
|
50
|
+
user: user,
|
|
51
|
+
rules: deepCopy(this.defaultRules),
|
|
52
|
+
template: deepCopy(this.defaultTemplate),
|
|
44
53
|
},
|
|
45
54
|
};
|
|
46
55
|
return this.state;
|
|
47
56
|
}
|
|
48
57
|
}
|
|
49
58
|
exports.World = World;
|
|
50
|
-
World.defaultIntrospection = "{}";
|
|
51
|
-
World.defaultRules = "{}";
|
|
52
|
-
World.defaultTemplate = {};
|
|
53
59
|
let world;
|
|
54
60
|
function getWorld() {
|
|
55
|
-
if (
|
|
61
|
+
if (world === undefined) {
|
|
56
62
|
world = new World();
|
|
63
|
+
}
|
|
57
64
|
return world;
|
|
58
65
|
}
|
|
59
66
|
exports.getWorld = getWorld;
|
package/dist/world.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"world.js","sourceRoot":"","sources":["../src/world.ts"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"world.js","sourceRoot":"","sources":["../src/world.ts"],"names":[],"mappings":";;;;;;AACA,0DAAkC;AAClC,2BAAkC;AAClC,mCAAwC;AAoBxC,MAAM,QAAQ,GAAG,CAAC,KAAU,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;AAEnE,MAAa,KAAK;IAQhB;QANQ,yBAAoB,GAAG,EAAE,CAAC;QAC1B,iBAAY,GAAG,EAAE,CAAC;QAClB,oBAAe,GAAQ,EAAE,CAAC;QAKhC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;IAC5B,CAAC;IAED,YAAY,CAAC,UAAkB,EAAE,YAAoB,EAAE,SAAiB;QACtE,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,KAAK,CACpC,IAAA,iBAAY,EAAC,YAAY,CAAC,CAAC,QAAQ,EAAE,CACtC,CAAC;QACF,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAA,iBAAY,EAAC,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC/D,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,IAAA,iBAAY,EAAC,SAAS,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;QACnE,IAAI,CAAC,eAAe,GAAG,IAAA,mBAAS,EAAC,IAAI,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;IACtE,CAAC;IAED,UAAU,CAAC,OAA0B;QACnC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,UAAU;QACR,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAChE,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,kBAAkB;QAChB,OAAO,IAAI,CAAC,eAAe,CAAC;IAC9B,CAAC;IAED,QAAQ,CAAC,QAAwB;QAC/B,IAAI,CAAC,KAAK,GAAG,IAAA,mBAAS,EAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QAC1E,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK;QACH,MAAM,IAAI,GAAG,IAAA,qBAAa,EAAC,UAAU,CAAC,CAAC;QACvC,IAAI,CAAC,KAAK,GAAG;YACX,oBAAoB,EAAE,EAAE;YACxB,cAAc,EAAE,EAAE;YAClB,gBAAgB,EAAE,EAAE;YACpB,OAAO,EAAE;gBACP,MAAM,EAAE,EAAE;gBACV,QAAQ,EAAE,EAAE;gBACZ,cAAc,EAAE,EAAE;gBAClB,QAAQ,EAAE,IAAI;gBACd,IAAI,EAAE,IAAI;gBACV,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC;gBAClC,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC;aACzC;SACF,CAAC;QAEF,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;CACF;AA1DD,sBA0DC;AAED,IAAI,KAAwB,CAAC;AAE7B,SAAgB,QAAQ;IACtB,IAAI,KAAK,KAAK,SAAS,EAAE;QACvB,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC;KACrB;IAED,OAAO,KAAc,CAAC;AACxB,CAAC;AAND,4BAMC"}
|
package/package.json
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@saasquatch/program-test-suite",
|
|
3
|
-
"version": "2.1.
|
|
3
|
+
"version": "2.1.2-2",
|
|
4
4
|
"description": "A collection of utilities for creating program unit tests",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"test": "echo \"Error: no test specified\" && exit 1",
|
|
7
|
+
"dev": "tsc -w",
|
|
7
8
|
"build": "tsc"
|
|
8
9
|
},
|
|
9
10
|
"files": [
|
|
@@ -18,13 +19,10 @@
|
|
|
18
19
|
"glob": "^7.1.6",
|
|
19
20
|
"jest": "^26.6.3",
|
|
20
21
|
"jest-cucumber": "^3.0.0",
|
|
21
|
-
"ts-jest": "^26.5.0"
|
|
22
|
-
|
|
23
|
-
"peerDependencies": {
|
|
24
|
-
"@saasquatch/program-boilerplate": ">=3.5.6"
|
|
22
|
+
"ts-jest": "^26.5.0",
|
|
23
|
+
"@saasquatch/program-boilerplate": "^3.5.11"
|
|
25
24
|
},
|
|
26
25
|
"devDependencies": {
|
|
27
|
-
"@saasquatch/program-boilerplate": "^3.5.7-0",
|
|
28
26
|
"@types/dlv": "^1.1.2",
|
|
29
27
|
"@types/express": "^4.17.11",
|
|
30
28
|
"@types/faker": "^5.1.6",
|