@serenity-js/core 2.33.1 → 3.0.0-rc.11
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 +476 -0
- package/lib/index.d.ts +2 -1
- package/lib/index.js +6 -1
- package/lib/index.js.map +1 -1
- package/lib/io/ErrorSerialiser.js +4 -1
- package/lib/io/ErrorSerialiser.js.map +1 -1
- package/lib/io/ErrorStackParser.d.ts +2 -2
- package/lib/io/ErrorStackParser.js.map +1 -1
- package/lib/io/asyncMap.d.ts +8 -0
- package/lib/io/asyncMap.js +18 -0
- package/lib/io/asyncMap.js.map +1 -0
- package/lib/io/format.d.ts +39 -0
- package/lib/io/format.js +51 -0
- package/lib/io/format.js.map +1 -0
- package/lib/io/formatted.d.ts +5 -1
- package/lib/io/formatted.js +6 -13
- package/lib/io/formatted.js.map +1 -1
- package/lib/io/index.d.ts +2 -1
- package/lib/io/index.js +2 -1
- package/lib/io/index.js.map +1 -1
- package/lib/io/inspected.d.ts +9 -1
- package/lib/io/inspected.js +52 -15
- package/lib/io/inspected.js.map +1 -1
- package/lib/model/Timestamp.d.ts +4 -2
- package/lib/model/Timestamp.js +8 -2
- package/lib/model/Timestamp.js.map +1 -1
- package/lib/screenplay/Optional.d.ts +29 -0
- package/lib/{io/collections/reducible.js → screenplay/Optional.js} +1 -1
- package/lib/screenplay/Optional.js.map +1 -0
- package/lib/screenplay/Question.d.ts +41 -82
- package/lib/screenplay/Question.js +132 -100
- package/lib/screenplay/Question.js.map +1 -1
- package/lib/screenplay/actor/Actor.js +2 -2
- package/lib/screenplay/actor/Actor.js.map +1 -1
- package/lib/screenplay/index.d.ts +1 -1
- package/lib/screenplay/index.js +1 -1
- package/lib/screenplay/index.js.map +1 -1
- package/lib/screenplay/interactions/index.d.ts +0 -1
- package/lib/screenplay/interactions/index.js +0 -1
- package/lib/screenplay/interactions/index.js.map +1 -1
- package/lib/screenplay/questions/Check.d.ts +3 -3
- package/lib/screenplay/questions/Check.js +5 -7
- package/lib/screenplay/questions/Check.js.map +1 -1
- package/lib/screenplay/questions/Expectation.d.ts +15 -10
- package/lib/screenplay/questions/Expectation.js +28 -37
- package/lib/screenplay/questions/Expectation.js.map +1 -1
- package/lib/screenplay/questions/List.d.ts +22 -192
- package/lib/screenplay/questions/List.js +160 -208
- package/lib/screenplay/questions/List.js.map +1 -1
- package/lib/screenplay/questions/Note.d.ts +10 -0
- package/lib/screenplay/questions/Note.js +17 -1
- package/lib/screenplay/questions/Note.js.map +1 -1
- package/lib/screenplay/questions/index.d.ts +0 -3
- package/lib/screenplay/questions/index.js +0 -5
- package/lib/screenplay/questions/index.js.map +1 -1
- package/lib/stage/index.d.ts +0 -2
- package/lib/stage/index.js +0 -2
- package/lib/stage/index.js.map +1 -1
- package/package.json +7 -6
- package/src/index.ts +2 -1
- package/src/io/ErrorSerialiser.ts +5 -1
- package/src/io/ErrorStackParser.ts +2 -1
- package/src/io/asyncMap.ts +18 -0
- package/src/io/format.ts +49 -0
- package/src/io/formatted.ts +7 -15
- package/src/io/index.ts +2 -1
- package/src/io/inspected.ts +68 -15
- package/src/model/Timestamp.ts +10 -2
- package/src/screenplay/Optional.ts +30 -0
- package/src/screenplay/Question.ts +206 -124
- package/src/screenplay/actor/Actor.ts +2 -2
- package/src/screenplay/index.ts +1 -1
- package/src/screenplay/interactions/index.ts +0 -1
- package/src/screenplay/questions/Check.ts +10 -15
- package/src/screenplay/questions/Expectation.ts +47 -55
- package/src/screenplay/questions/List.ts +224 -233
- package/src/screenplay/questions/Note.ts +21 -1
- package/src/screenplay/questions/index.ts +0 -3
- package/src/stage/index.ts +0 -2
- package/lib/io/collections/index.d.ts +0 -2
- package/lib/io/collections/index.js +0 -15
- package/lib/io/collections/index.js.map +0 -1
- package/lib/io/collections/mappable.d.ts +0 -52
- package/lib/io/collections/mappable.js +0 -28
- package/lib/io/collections/mappable.js.map +0 -1
- package/lib/io/collections/reducible.d.ts +0 -16
- package/lib/io/collections/reducible.js.map +0 -1
- package/lib/screenplay/interactions/See.d.ts +0 -31
- package/lib/screenplay/interactions/See.js +0 -43
- package/lib/screenplay/interactions/See.js.map +0 -1
- package/lib/screenplay/questions/Property.d.ts +0 -91
- package/lib/screenplay/questions/Property.js +0 -99
- package/lib/screenplay/questions/Property.js.map +0 -1
- package/lib/screenplay/questions/Transform.d.ts +0 -31
- package/lib/screenplay/questions/Transform.js +0 -46
- package/lib/screenplay/questions/Transform.js.map +0 -1
- package/lib/screenplay/questions/lists/ArrayListAdapter.d.ts +0 -88
- package/lib/screenplay/questions/lists/ArrayListAdapter.js +0 -152
- package/lib/screenplay/questions/lists/ArrayListAdapter.js.map +0 -1
- package/lib/screenplay/questions/lists/ListAdapter.d.ts +0 -20
- package/lib/screenplay/questions/lists/ListAdapter.js +0 -3
- package/lib/screenplay/questions/lists/ListAdapter.js.map +0 -1
- package/lib/screenplay/questions/lists/index.d.ts +0 -2
- package/lib/screenplay/questions/lists/index.js +0 -15
- package/lib/screenplay/questions/lists/index.js.map +0 -1
- package/lib/screenplay/questions/mappings/AnswerMappingFunction.d.ts +0 -11
- package/lib/screenplay/questions/mappings/AnswerMappingFunction.js +0 -3
- package/lib/screenplay/questions/mappings/AnswerMappingFunction.js.map +0 -1
- package/lib/screenplay/questions/mappings/index.d.ts +0 -2
- package/lib/screenplay/questions/mappings/index.js +0 -15
- package/lib/screenplay/questions/mappings/index.js.map +0 -1
- package/lib/screenplay/questions/mappings/string/append.d.ts +0 -14
- package/lib/screenplay/questions/mappings/string/append.js +0 -25
- package/lib/screenplay/questions/mappings/string/append.js.map +0 -1
- package/lib/screenplay/questions/mappings/string/index.d.ts +0 -11
- package/lib/screenplay/questions/mappings/string/index.js +0 -24
- package/lib/screenplay/questions/mappings/string/index.js.map +0 -1
- package/lib/screenplay/questions/mappings/string/normalize.d.ts +0 -20
- package/lib/screenplay/questions/mappings/string/normalize.js +0 -30
- package/lib/screenplay/questions/mappings/string/normalize.js.map +0 -1
- package/lib/screenplay/questions/mappings/string/replace.d.ts +0 -17
- package/lib/screenplay/questions/mappings/string/replace.js +0 -30
- package/lib/screenplay/questions/mappings/string/replace.js.map +0 -1
- package/lib/screenplay/questions/mappings/string/slice.d.ts +0 -28
- package/lib/screenplay/questions/mappings/string/slice.js +0 -47
- package/lib/screenplay/questions/mappings/string/slice.js.map +0 -1
- package/lib/screenplay/questions/mappings/string/split.d.ts +0 -19
- package/lib/screenplay/questions/mappings/string/split.js +0 -36
- package/lib/screenplay/questions/mappings/string/split.js.map +0 -1
- package/lib/screenplay/questions/mappings/string/toLocaleLowerCase.d.ts +0 -17
- package/lib/screenplay/questions/mappings/string/toLocaleLowerCase.js +0 -28
- package/lib/screenplay/questions/mappings/string/toLocaleLowerCase.js.map +0 -1
- package/lib/screenplay/questions/mappings/string/toLocaleUpperCase.d.ts +0 -17
- package/lib/screenplay/questions/mappings/string/toLocaleUpperCase.js +0 -29
- package/lib/screenplay/questions/mappings/string/toLocaleUpperCase.js.map +0 -1
- package/lib/screenplay/questions/mappings/string/toLowerCase.d.ts +0 -10
- package/lib/screenplay/questions/mappings/string/toLowerCase.js +0 -19
- package/lib/screenplay/questions/mappings/string/toLowerCase.js.map +0 -1
- package/lib/screenplay/questions/mappings/string/toNumber.d.ts +0 -10
- package/lib/screenplay/questions/mappings/string/toNumber.js +0 -18
- package/lib/screenplay/questions/mappings/string/toNumber.js.map +0 -1
- package/lib/screenplay/questions/mappings/string/toUpperCase.d.ts +0 -10
- package/lib/screenplay/questions/mappings/string/toUpperCase.js +0 -19
- package/lib/screenplay/questions/mappings/string/toUpperCase.js.map +0 -1
- package/lib/screenplay/questions/mappings/string/trim.d.ts +0 -12
- package/lib/screenplay/questions/mappings/string/trim.js +0 -21
- package/lib/screenplay/questions/mappings/string/trim.js.map +0 -1
- package/lib/screenplay/questions/proxies/PropertyPathKey.d.ts +0 -4
- package/lib/screenplay/questions/proxies/PropertyPathKey.js +0 -3
- package/lib/screenplay/questions/proxies/PropertyPathKey.js.map +0 -1
- package/lib/screenplay/questions/proxies/createMetaQuestionProxy.d.ts +0 -14
- package/lib/screenplay/questions/proxies/createMetaQuestionProxy.js +0 -35
- package/lib/screenplay/questions/proxies/createMetaQuestionProxy.js.map +0 -1
- package/lib/screenplay/questions/proxies/createQuestionProxy.d.ts +0 -13
- package/lib/screenplay/questions/proxies/createQuestionProxy.js +0 -34
- package/lib/screenplay/questions/proxies/createQuestionProxy.js.map +0 -1
- package/lib/screenplay/questions/proxies/describePath.d.ts +0 -5
- package/lib/screenplay/questions/proxies/describePath.js +0 -19
- package/lib/screenplay/questions/proxies/describePath.js.map +0 -1
- package/lib/screenplay/questions/proxies/index.d.ts +0 -2
- package/lib/screenplay/questions/proxies/index.js +0 -15
- package/lib/screenplay/questions/proxies/index.js.map +0 -1
- package/lib/screenplay/questions/proxies/key.d.ts +0 -8
- package/lib/screenplay/questions/proxies/key.js +0 -16
- package/lib/screenplay/questions/proxies/key.js.map +0 -1
- package/lib/screenplay/tasks/Loop.d.ts +0 -198
- package/lib/screenplay/tasks/Loop.js +0 -222
- package/lib/screenplay/tasks/Loop.js.map +0 -1
- package/lib/screenplay/tasks/index.d.ts +0 -1
- package/lib/screenplay/tasks/index.js +0 -14
- package/lib/screenplay/tasks/index.js.map +0 -1
- package/lib/stage/DressingRoom.d.ts +0 -37
- package/lib/stage/DressingRoom.js +0 -53
- package/lib/stage/DressingRoom.js.map +0 -1
- package/lib/stage/WithStage.d.ts +0 -51
- package/lib/stage/WithStage.js +0 -3
- package/lib/stage/WithStage.js.map +0 -1
- package/src/io/collections/index.ts +0 -2
- package/src/io/collections/mappable.ts +0 -60
- package/src/io/collections/reducible.ts +0 -16
- package/src/screenplay/interactions/See.ts +0 -45
- package/src/screenplay/questions/Property.ts +0 -98
- package/src/screenplay/questions/Transform.ts +0 -51
- package/src/screenplay/questions/lists/ArrayListAdapter.ts +0 -186
- package/src/screenplay/questions/lists/ListAdapter.ts +0 -33
- package/src/screenplay/questions/lists/index.ts +0 -2
- package/src/screenplay/questions/mappings/AnswerMappingFunction.ts +0 -13
- package/src/screenplay/questions/mappings/index.ts +0 -2
- package/src/screenplay/questions/mappings/string/append.ts +0 -28
- package/src/screenplay/questions/mappings/string/index.ts +0 -11
- package/src/screenplay/questions/mappings/string/normalize.ts +0 -33
- package/src/screenplay/questions/mappings/string/replace.ts +0 -34
- package/src/screenplay/questions/mappings/string/slice.ts +0 -53
- package/src/screenplay/questions/mappings/string/split.ts +0 -38
- package/src/screenplay/questions/mappings/string/toLocaleLowerCase.ts +0 -31
- package/src/screenplay/questions/mappings/string/toLocaleUpperCase.ts +0 -30
- package/src/screenplay/questions/mappings/string/toLowerCase.ts +0 -20
- package/src/screenplay/questions/mappings/string/toNumber.ts +0 -19
- package/src/screenplay/questions/mappings/string/toUpperCase.ts +0 -20
- package/src/screenplay/questions/mappings/string/trim.ts +0 -22
- package/src/screenplay/questions/proxies/PropertyPathKey.ts +0 -4
- package/src/screenplay/questions/proxies/createMetaQuestionProxy.ts +0 -51
- package/src/screenplay/questions/proxies/createQuestionProxy.ts +0 -49
- package/src/screenplay/questions/proxies/describePath.ts +0 -23
- package/src/screenplay/questions/proxies/index.ts +0 -2
- package/src/screenplay/questions/proxies/key.ts +0 -14
- package/src/screenplay/tasks/Loop.ts +0 -240
- package/src/screenplay/tasks/index.ts +0 -1
- package/src/stage/DressingRoom.ts +0 -53
- package/src/stage/WithStage.ts +0 -52
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Question = void 0;
|
|
4
|
-
const
|
|
4
|
+
const io_1 = require("../io");
|
|
5
|
+
const Interaction_1 = require("./Interaction");
|
|
5
6
|
/**
|
|
6
7
|
* @desc
|
|
7
8
|
* Enables the {@link Actor} to query the system under test.
|
|
@@ -52,15 +53,6 @@ const collections_1 = require("../io/collections");
|
|
|
52
53
|
* @abstract
|
|
53
54
|
*/
|
|
54
55
|
class Question {
|
|
55
|
-
/**
|
|
56
|
-
* @param {string} subject
|
|
57
|
-
* The subject of this question
|
|
58
|
-
*
|
|
59
|
-
* @protected
|
|
60
|
-
*/
|
|
61
|
-
constructor(subject) {
|
|
62
|
-
this.subject = subject;
|
|
63
|
-
}
|
|
64
56
|
/**
|
|
65
57
|
* @desc
|
|
66
58
|
* Factory method that simplifies the process of defining custom questions.
|
|
@@ -77,7 +69,7 @@ class Question {
|
|
|
77
69
|
* @returns {Question<R>}
|
|
78
70
|
*/
|
|
79
71
|
static about(description, body) {
|
|
80
|
-
return new
|
|
72
|
+
return Question.createAdapter(new QuestionStatement(description, body));
|
|
81
73
|
}
|
|
82
74
|
/**
|
|
83
75
|
* @desc
|
|
@@ -93,115 +85,155 @@ class Question {
|
|
|
93
85
|
static isAQuestion(maybeQuestion) {
|
|
94
86
|
return !!maybeQuestion && !!maybeQuestion.answeredBy;
|
|
95
87
|
}
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
88
|
+
static createAdapter(statement) {
|
|
89
|
+
return new Proxy(() => statement, {
|
|
90
|
+
get(currentStatement, key, receiver) {
|
|
91
|
+
const target = currentStatement();
|
|
92
|
+
if (key === Symbol.toPrimitive) {
|
|
93
|
+
return (_hint) => {
|
|
94
|
+
return target.toString();
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
if (key in target) {
|
|
98
|
+
return Reflect.get(target, key);
|
|
99
|
+
}
|
|
100
|
+
if (key === 'then') {
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
const originalSubject = (0, io_1.f) `${target}`;
|
|
104
|
+
const fieldDescription = (typeof key === 'number' || /^\d+$/.test(String(key)))
|
|
105
|
+
? `[${String(key)}]` // array index
|
|
106
|
+
: `.${String(key)}`; // field/method name
|
|
107
|
+
return Question.about(`${originalSubject}${fieldDescription}`, async (actor) => {
|
|
108
|
+
const answer = await actor.answer(target);
|
|
109
|
+
if (!isDefined(answer)) {
|
|
110
|
+
return undefined; // eslint-disable-line unicorn/no-useless-undefined
|
|
111
|
+
}
|
|
112
|
+
const field = answer[key];
|
|
113
|
+
return typeof field === 'function'
|
|
114
|
+
? field.bind(answer)
|
|
115
|
+
: field;
|
|
116
|
+
});
|
|
117
|
+
},
|
|
118
|
+
set(currentStatement, key, value, receiver) {
|
|
119
|
+
const target = currentStatement();
|
|
120
|
+
return Reflect.set(target, key, value);
|
|
121
|
+
},
|
|
122
|
+
apply(currentStatement, _thisArgument, parameters) {
|
|
123
|
+
const target = currentStatement();
|
|
124
|
+
const parameterDescriptions = [
|
|
125
|
+
'(',
|
|
126
|
+
parameters.map(p => (0, io_1.f) `${p}`).join(', '),
|
|
127
|
+
')'
|
|
128
|
+
].join('');
|
|
129
|
+
return Question.about(target.toString() + parameterDescriptions, async (actor) => {
|
|
130
|
+
const params = [];
|
|
131
|
+
for (const parameter of parameters) {
|
|
132
|
+
const answered = await actor.answer(parameter);
|
|
133
|
+
params.push(answered);
|
|
134
|
+
}
|
|
135
|
+
const field = await actor.answer(target);
|
|
136
|
+
return typeof field === 'function'
|
|
137
|
+
? field(...params)
|
|
138
|
+
: field;
|
|
139
|
+
});
|
|
140
|
+
},
|
|
141
|
+
getPrototypeOf(currentStatement) {
|
|
142
|
+
return Reflect.getPrototypeOf(currentStatement());
|
|
143
|
+
},
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
as(mapping) {
|
|
147
|
+
return Question.about((0, io_1.f) `${this}.as(${mapping})`, async (actor) => {
|
|
148
|
+
const answer = (await actor.answer(this));
|
|
149
|
+
return mapping(answer);
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
exports.Question = Question;
|
|
154
|
+
class QuestionStatement extends Interaction_1.Interaction {
|
|
155
|
+
constructor(subject, body) {
|
|
156
|
+
super();
|
|
157
|
+
this.subject = subject;
|
|
158
|
+
this.body = body;
|
|
104
159
|
}
|
|
105
160
|
/**
|
|
106
161
|
* @desc
|
|
107
|
-
*
|
|
162
|
+
* Returns a Question that resolves to `true` if resolving the {@link QuestionStatement}
|
|
163
|
+
* returns a value other than `null` or `undefined` and doesn't throw errors.
|
|
108
164
|
*
|
|
109
|
-
* @
|
|
110
|
-
* @returns {Question<T>}
|
|
165
|
+
* @returns {Question<Promise<boolean>>}
|
|
111
166
|
*/
|
|
167
|
+
isPresent() {
|
|
168
|
+
return new IsPresent((0, io_1.f) `${this}.isPresent()`, this.body);
|
|
169
|
+
}
|
|
170
|
+
async answeredBy(actor) {
|
|
171
|
+
const result = await this.body(actor);
|
|
172
|
+
return isDefined(result)
|
|
173
|
+
? result
|
|
174
|
+
: undefined;
|
|
175
|
+
}
|
|
176
|
+
async performAs(actor) {
|
|
177
|
+
await this.body(actor);
|
|
178
|
+
}
|
|
112
179
|
describedAs(subject) {
|
|
113
180
|
this.subject = subject;
|
|
114
181
|
return this;
|
|
115
182
|
}
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
*
|
|
128
|
-
* // => Question<Promise<number>>
|
|
129
|
-
* // 3.99
|
|
130
|
-
*
|
|
131
|
-
* @example <caption>Mapping all items of Question<string[]> to Question<Promise<number>></caption>
|
|
132
|
-
* import { Question, trim } from '@serenity-js/core';
|
|
133
|
-
*
|
|
134
|
-
* Question.about('things to do', actor => [ ' walk the dog ', ' read a book ' ])
|
|
135
|
-
* .map(trim())
|
|
136
|
-
*
|
|
137
|
-
* // => Question<Promise<string[]>>
|
|
138
|
-
* // [ 'walk the dog', 'read a book' ]
|
|
139
|
-
*
|
|
140
|
-
* @example <caption>Using a custom mapping function</caption>
|
|
141
|
-
* import { Question } from '@serenity-js/core';
|
|
142
|
-
*
|
|
143
|
-
* Question.about('normalised percentages', actor => [ 0.1, 0.3, 0.6 ])
|
|
144
|
-
* .map((actor: AnswersQuestions) => (value: number) => value * 100)
|
|
145
|
-
*
|
|
146
|
-
* // => Question<Promise<number[]>>
|
|
147
|
-
* // [ 10, 30, 60 ]
|
|
148
|
-
*
|
|
149
|
-
* @example <caption>Extracting values from LastResponse.body()</caption>
|
|
150
|
-
* import { Question } from '@serenity-js/core';
|
|
151
|
-
* import { LastResponse } from '@serenity-js/rest';
|
|
152
|
-
*
|
|
153
|
-
* interface UserDetails {
|
|
154
|
-
* id: number;
|
|
155
|
-
* name: string;
|
|
156
|
-
* }
|
|
157
|
-
*
|
|
158
|
-
* LastResponse.body<UserDetails>().map(actor => details => details.id)
|
|
159
|
-
*
|
|
160
|
-
* // => Question<number>
|
|
161
|
-
*
|
|
162
|
-
* @param {function(value: A, index?: number): Promise<O> | O} mapping
|
|
163
|
-
* A mapping function that receives a value of type `<A>`, which is either:
|
|
164
|
-
* - an answer to the original question, if the question is defined as `Question<Promise<A>>` or `Question<A>`
|
|
165
|
-
* - or, if the question is defined as `Question<Promise<Mappable<A>>`, `Question<Mappable<A>>` - each item of the {@link Mappable} collection,
|
|
166
|
-
*
|
|
167
|
-
* @returns {Question<Promise<Mapped>>}
|
|
168
|
-
* A new Question which value is a result of applying the `mapping` function
|
|
169
|
-
* to the value of the current question, so that:
|
|
170
|
-
* - if the answer to the current question is a `Mappable<A>`, the result becomes `Question<Promise<O[]>>`
|
|
171
|
-
* - if the answer is a value `<A>` or `Promise<A>`, the result becomes `Question<Promise<O>>`
|
|
172
|
-
*
|
|
173
|
-
* @see {@link AnswerMappingFunction}
|
|
174
|
-
* @see {@link Mappable}
|
|
175
|
-
*/
|
|
176
|
-
map(mapping) {
|
|
177
|
-
return Question.about(this.subject, actor => actor.answer(this).then(value => ((0, collections_1.isMappable)(value)
|
|
178
|
-
? Promise.all((value).map(mapping(actor)))
|
|
179
|
-
: mapping(actor)(value))));
|
|
183
|
+
toString() {
|
|
184
|
+
return this.subject;
|
|
185
|
+
}
|
|
186
|
+
as(mapping) {
|
|
187
|
+
return Question.about((0, io_1.f) `${this}.as(${mapping})`, async (actor) => {
|
|
188
|
+
const answer = await actor.answer(this);
|
|
189
|
+
if (!isDefined(answer)) {
|
|
190
|
+
return undefined; // eslint-disable-line unicorn/no-useless-undefined
|
|
191
|
+
}
|
|
192
|
+
return mapping(answer);
|
|
193
|
+
});
|
|
180
194
|
}
|
|
181
195
|
}
|
|
182
|
-
exports.Question = Question;
|
|
183
196
|
/**
|
|
184
197
|
* @package
|
|
185
198
|
*/
|
|
186
|
-
class
|
|
187
|
-
constructor(
|
|
188
|
-
super(
|
|
189
|
-
this.
|
|
199
|
+
class IsPresent extends Question {
|
|
200
|
+
constructor(subject, body) {
|
|
201
|
+
super();
|
|
202
|
+
this.subject = subject;
|
|
190
203
|
this.body = body;
|
|
191
204
|
}
|
|
192
|
-
answeredBy(actor) {
|
|
193
|
-
|
|
205
|
+
async answeredBy(actor) {
|
|
206
|
+
try {
|
|
207
|
+
const answer = await this.body(actor);
|
|
208
|
+
if (answer === undefined || answer === null) {
|
|
209
|
+
return false;
|
|
210
|
+
}
|
|
211
|
+
if (this.isOptional(answer)) {
|
|
212
|
+
return await actor.answer(answer.isPresent());
|
|
213
|
+
}
|
|
214
|
+
return true;
|
|
215
|
+
}
|
|
216
|
+
catch {
|
|
217
|
+
return false;
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
isOptional(maybeOptional) {
|
|
221
|
+
return typeof maybeOptional === 'object'
|
|
222
|
+
&& Reflect.has(maybeOptional, 'isPresent');
|
|
194
223
|
}
|
|
195
|
-
/**
|
|
196
|
-
* Changes the description of this question's subject
|
|
197
|
-
* and produces a new instance without mutating the original one.
|
|
198
|
-
*
|
|
199
|
-
* @param {string} subject
|
|
200
|
-
* @returns {Question<T>}
|
|
201
|
-
*/
|
|
202
224
|
describedAs(subject) {
|
|
203
225
|
this.subject = subject;
|
|
204
226
|
return this;
|
|
205
227
|
}
|
|
228
|
+
toString() {
|
|
229
|
+
return this.subject;
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* @package
|
|
234
|
+
*/
|
|
235
|
+
function isDefined(value) {
|
|
236
|
+
return value !== undefined
|
|
237
|
+
&& value !== null;
|
|
206
238
|
}
|
|
207
239
|
//# sourceMappingURL=Question.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Question.js","sourceRoot":"","sources":["../../src/screenplay/Question.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"Question.js","sourceRoot":"","sources":["../../src/screenplay/Question.ts"],"names":[],"mappings":"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"}
|
|
@@ -89,10 +89,10 @@ class Actor {
|
|
|
89
89
|
*/
|
|
90
90
|
answer(answerable) {
|
|
91
91
|
function isAPromise(v) {
|
|
92
|
-
return
|
|
92
|
+
return Object.prototype.hasOwnProperty.call(v, 'then');
|
|
93
93
|
}
|
|
94
94
|
function isDefined(v) {
|
|
95
|
-
return !(
|
|
95
|
+
return !(v === undefined || v === null);
|
|
96
96
|
}
|
|
97
97
|
if (isDefined(answerable) && isAPromise(answerable)) {
|
|
98
98
|
return answerable;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Actor.js","sourceRoot":"","sources":["../../../src/screenplay/actor/Actor.ts"],"names":[],"mappings":";;;AAAA,yCAAwE;AACxE,yCAAgE;AAChE,uCAA6C;AAG7C,8CAAgD;AAEhD,0CAAuC;AAOvC,MAAa,KAAK;IAOd,+CAA+C;IAC/C,gDAAgD;IAChD,oEAAoE;IAEpE,YACoB,IAAY,EACX,KAAY,EACZ,YAAgD,IAAI,GAAG,EAAiC;QAFzF,SAAI,GAAJ,IAAI,CAAQ;QACX,UAAK,GAAL,KAAK,CAAO;QACZ,cAAS,GAAT,SAAS,CAA+E;IAE7G,CAAC;IAED;;;;;;;;;OASG;IACH,SAAS,CAAoB,WAA2B;QACpD,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;QAE9C,IAAI,CAAE,KAAK,EAAE;YACT,MAAM,IAAI,2BAAkB,CAAC,GAAI,IAAI,CAAC,IAAK,UAAW,WAAW,CAAC,IAAK,QAAQ;gBAC3E,yCAAyC,CAAC,CAAC;SAClD;QAED,OAAO,KAAK,CAAC;IACjB,CAAC;IAED;;;;;;;;OAQG;IACH,UAAU,CAAC,GAAG,UAAsB;QAChC,OAAO,UAAU;aACZ,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,4BAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;aAC1D,MAAM,CAAC,CAAC,QAAuB,EAAE,OAAiB,EAAE,EAAE;YACnD,OAAO,QAAQ;gBACX,uDAAuD;iBACtD,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;iBACvC,IAAI,CAAC,GAAG,EAAE;gBACP,qCAAqC;gBACrC,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YACnC,CAAC,CAAC,CAAC;QACX,CAAC,EAAE,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC;IACvC,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,GAAG,SAAoB;QAC1B,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YACxB,MAAM,WAAW,GAAG,OAAO,CAAC,WAAmC,CAAC;YAEhE,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;YAE9C,IAAI,KAAK,EAAE;gBACP,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,KAAK,WAAW,CAAC,IAAI;oBAC3D,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI;oBACxB,CAAC,CAAC,GAAI,KAAK,CAAC,WAAW,CAAC,IAAK,mBAAoB,WAAW,CAAC,IAAK,GAAG,CAAA;gBAEzE,MAAM,IAAI,2BAAkB,CAAC,GAAI,IAAI,CAAC,IAAK,8BAA+B,WAAY,+CAA+C,CAAC,CAAC;aAC1I;YAED,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,WAAmC,EAAE,OAAO,CAAC,CAAC;QAC7E,CAAC,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;;OAGG;IACH,MAAM,CAAI,UAAyB;QAC/B,SAAS,UAAU,CAAI,CAAgB;YACnC,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"Actor.js","sourceRoot":"","sources":["../../../src/screenplay/actor/Actor.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@ export * from './actor';
|
|
|
6
6
|
export * from './Answerable';
|
|
7
7
|
export * from './Interaction';
|
|
8
8
|
export * from './interactions';
|
|
9
|
+
export * from './Optional';
|
|
9
10
|
export * from './Question';
|
|
10
11
|
export * from './questions';
|
|
11
12
|
export * from './Task';
|
|
12
|
-
export * from './tasks';
|
package/lib/screenplay/index.js
CHANGED
|
@@ -18,8 +18,8 @@ __exportStar(require("./actor"), exports);
|
|
|
18
18
|
__exportStar(require("./Answerable"), exports);
|
|
19
19
|
__exportStar(require("./Interaction"), exports);
|
|
20
20
|
__exportStar(require("./interactions"), exports);
|
|
21
|
+
__exportStar(require("./Optional"), exports);
|
|
21
22
|
__exportStar(require("./Question"), exports);
|
|
22
23
|
__exportStar(require("./questions"), exports);
|
|
23
24
|
__exportStar(require("./Task"), exports);
|
|
24
|
-
__exportStar(require("./tasks"), exports);
|
|
25
25
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/screenplay/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,8CAA4B;AAC5B,4CAA0B;AAC1B,gDAA8B;AAC9B,6CAA2B;AAC3B,0CAAwB;AACxB,+CAA6B;AAC7B,gDAA8B;AAC9B,iDAA+B;AAC/B,6CAA2B;AAC3B,8CAA4B;AAC5B,yCAAuB
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/screenplay/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,8CAA4B;AAC5B,4CAA0B;AAC1B,gDAA8B;AAC9B,6CAA2B;AAC3B,0CAAwB;AACxB,+CAA6B;AAC7B,gDAA8B;AAC9B,iDAA+B;AAC/B,6CAA2B;AAC3B,6CAA2B;AAC3B,8CAA4B;AAC5B,yCAAuB"}
|
|
@@ -11,6 +11,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
11
11
|
};
|
|
12
12
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
13
|
__exportStar(require("./Log"), exports);
|
|
14
|
-
__exportStar(require("./See"), exports);
|
|
15
14
|
__exportStar(require("./TakeNote"), exports);
|
|
16
15
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/screenplay/interactions/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,wCAAsB;AACtB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/screenplay/interactions/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,wCAAsB;AACtB,6CAA2B"}
|
|
@@ -44,7 +44,7 @@ export declare class Check<Actual> extends Task {
|
|
|
44
44
|
private readonly expectation;
|
|
45
45
|
private readonly activities;
|
|
46
46
|
private readonly alternativeActivities;
|
|
47
|
-
static whether<A>(actual: Answerable<A>, expectation: Expectation<
|
|
47
|
+
static whether<A>(actual: Answerable<A>, expectation: Expectation<A>): {
|
|
48
48
|
andIfSo: (...activities: Activity[]) => Check<A>;
|
|
49
49
|
};
|
|
50
50
|
/**
|
|
@@ -54,7 +54,7 @@ export declare class Check<Actual> extends Task {
|
|
|
54
54
|
* @param activities
|
|
55
55
|
* @param alternativeActivities
|
|
56
56
|
*/
|
|
57
|
-
constructor(actual: Answerable<Actual>, expectation: Expectation<
|
|
57
|
+
constructor(actual: Answerable<Actual>, expectation: Expectation<Actual>, activities: Activity[], alternativeActivities?: Activity[]);
|
|
58
58
|
/**
|
|
59
59
|
* @param {...@serenity-js/core/lib/screenplay~Activity[]} alternativeActivities
|
|
60
60
|
* @return {@serenity-js/core/lib/screenplay~Task}
|
|
@@ -72,7 +72,7 @@ export declare class Check<Actual> extends Task {
|
|
|
72
72
|
* @see {@link @serenity-js/core/lib/screenplay/actor~AnswersQuestions}
|
|
73
73
|
* @see {@link @serenity-js/core/lib/screenplay/actor~PerformsActivities}
|
|
74
74
|
*/
|
|
75
|
-
performAs(actor: AnswersQuestions & PerformsActivities):
|
|
75
|
+
performAs(actor: AnswersQuestions & PerformsActivities): Promise<void>;
|
|
76
76
|
/**
|
|
77
77
|
* @desc
|
|
78
78
|
* Generates a description to be used when reporting this {@link @serenity-js/core/lib/screenplay~Activity}.
|
|
@@ -80,13 +80,11 @@ class Check extends Task_1.Task {
|
|
|
80
80
|
* @see {@link @serenity-js/core/lib/screenplay/actor~AnswersQuestions}
|
|
81
81
|
* @see {@link @serenity-js/core/lib/screenplay/actor~PerformsActivities}
|
|
82
82
|
*/
|
|
83
|
-
performAs(actor) {
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
actor.answer(this.expectation),
|
|
87
|
-
]).then(([actual, expectation]) => expectation(actual).then(outcome => outcome instanceof expectations_1.ExpectationMet
|
|
83
|
+
async performAs(actor) {
|
|
84
|
+
const outcome = await actor.answer(this.expectation.isMetFor(this.actual));
|
|
85
|
+
return outcome instanceof expectations_1.ExpectationMet
|
|
88
86
|
? actor.attemptsTo(...this.activities)
|
|
89
|
-
: actor.attemptsTo(...this.alternativeActivities)
|
|
87
|
+
: actor.attemptsTo(...this.alternativeActivities);
|
|
90
88
|
}
|
|
91
89
|
/**
|
|
92
90
|
* @desc
|
|
@@ -95,7 +93,7 @@ class Check extends Task_1.Task {
|
|
|
95
93
|
* @returns {string}
|
|
96
94
|
*/
|
|
97
95
|
toString() {
|
|
98
|
-
return (0, io_1.
|
|
96
|
+
return (0, io_1.d) `#actor checks whether ${this.actual} does ${this.expectation}`;
|
|
99
97
|
}
|
|
100
98
|
}
|
|
101
99
|
exports.Check = Check;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Check.js","sourceRoot":"","sources":["../../../src/screenplay/questions/Check.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"Check.js","sourceRoot":"","sources":["../../../src/screenplay/questions/Check.ts"],"names":[],"mappings":";;;AAAA,iCAA6B;AAI7B,kCAA+B;AAE/B,iDAAgD;AAEhD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,MAAa,KAAc,SAAQ,WAAI;IAQnC;;;;;;OAMG;IACH,YACqB,MAA0B,EAC1B,WAAgC,EAChC,UAAsB,EACtB,wBAAoC,EAAE;QAEvD,KAAK,EAAE,CAAC;QALS,WAAM,GAAN,MAAM,CAAoB;QAC1B,gBAAW,GAAX,WAAW,CAAqB;QAChC,eAAU,GAAV,UAAU,CAAY;QACtB,0BAAqB,GAArB,qBAAqB,CAAiB;IAG3D,CAAC;IArBD,6EAA6E;IAC7E,MAAM,CAAC,OAAO,CAAI,MAAqB,EAAE,WAA2B;QAChE,OAAO;YACH,OAAO,EAAE,CAAC,GAAG,UAAsB,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC,MAAM,EAAE,WAAW,EAAE,UAAU,CAAC;SACrF,CAAC;IACN,CAAC;IAkBD;;;OAGG;IACH,SAAS,CAAC,GAAG,qBAAiC;QAC1C,OAAO,IAAI,KAAK,CAAS,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,UAAU,EAAE,qBAAqB,CAAC,CAAC;IACpG,CAAC;IAED;;;;;;;;;;;OAWG;IACH,KAAK,CAAC,SAAS,CAAC,KAA4C;QACxD,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QAE3E,OAAO,OAAO,YAAY,6BAAc;YACpC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;YACtC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,qBAAqB,CAAC,CAAC;IAC1D,CAAC;IAED;;;;;OAKG;IACH,QAAQ;QACJ,OAAO,IAAA,MAAC,EAAA,yBAA0B,IAAI,CAAC,MAAO,SAAU,IAAI,CAAC,WAAY,EAAE,CAAC;IAChF,CAAC;CACJ;AA7DD,sBA6DC"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { Answerable, AnswersQuestions,
|
|
1
|
+
import { Answerable, AnswersQuestions, QuestionAdapter } from '../';
|
|
2
2
|
import { ExpectationOutcome } from './expectations';
|
|
3
3
|
/**
|
|
4
4
|
* @public
|
|
5
5
|
*
|
|
6
|
-
* @typedef {function(actual:
|
|
6
|
+
* @typedef {function(actual: Answerable<Actual>) => Promise<ExpectationOutcome<Expected, Actual>> | ExpectationOutcome<unknown, Actual>} Predicate<Actual>
|
|
7
7
|
*/
|
|
8
|
-
export declare type Predicate<
|
|
8
|
+
export declare type Predicate<Actual> = (actor: AnswersQuestions, actual: Answerable<Actual>) => Promise<ExpectationOutcome<unknown, Actual>> | ExpectationOutcome<unknown, Actual>;
|
|
9
9
|
/**
|
|
10
10
|
* @desc
|
|
11
11
|
* Defines an expectation to be used with [assertions](/modules/assertions)
|
|
@@ -13,7 +13,9 @@ export declare type Predicate<A, E> = (actual: A, expected: E) => boolean;
|
|
|
13
13
|
*
|
|
14
14
|
* @extends {Question}
|
|
15
15
|
*/
|
|
16
|
-
export declare
|
|
16
|
+
export declare class Expectation<Actual> {
|
|
17
|
+
private subject;
|
|
18
|
+
private readonly predicate;
|
|
17
19
|
/**
|
|
18
20
|
* @desc
|
|
19
21
|
* Used to define a simple {@link Expectation}
|
|
@@ -34,10 +36,10 @@ export declare abstract class Expectation<Expected, Actual = Expected> extends Q
|
|
|
34
36
|
* @param {string} relationshipName
|
|
35
37
|
* @param {@serenity-js/core/lib/screenplay~Answerable<E>} expectedValue
|
|
36
38
|
*
|
|
37
|
-
* @returns {"soThat": function(predicate: Predicate<
|
|
39
|
+
* @returns {"soThat": function(predicate: Predicate<Expected, Actual>): Expectation<Expected, Actual>}
|
|
38
40
|
*/
|
|
39
|
-
static thatActualShould<E, A>(relationshipName: string, expectedValue
|
|
40
|
-
soThat: (
|
|
41
|
+
static thatActualShould<E, A>(relationshipName: string, expectedValue?: Answerable<E>): {
|
|
42
|
+
soThat: (simplifiedPredicate: (actualValue: A, expectedValue: E) => Promise<boolean> | boolean) => Expectation<A>;
|
|
41
43
|
};
|
|
42
44
|
/**
|
|
43
45
|
* @desc
|
|
@@ -64,8 +66,11 @@ export declare abstract class Expectation<Expected, Actual = Expected> extends Q
|
|
|
64
66
|
*
|
|
65
67
|
* @returns {"soThat": function(...expectations: Array<Expectation<any, A>>): Expectation<any, A>}
|
|
66
68
|
*/
|
|
67
|
-
static to<A>(relationshipName: string): {
|
|
68
|
-
soThatActual: (...expectations: Array<Expectation<
|
|
69
|
+
static to<E, A>(relationshipName: string): {
|
|
70
|
+
soThatActual: (...expectations: Array<Expectation<A>>) => Expectation<A>;
|
|
69
71
|
};
|
|
70
|
-
|
|
72
|
+
protected constructor(subject: string, predicate: Predicate<Actual>);
|
|
73
|
+
isMetFor(actual: Answerable<Actual>): QuestionAdapter<ExpectationOutcome<unknown, Actual>>;
|
|
74
|
+
describedAs(subject: string): this;
|
|
75
|
+
toString(): string;
|
|
71
76
|
}
|
|
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.Expectation = void 0;
|
|
4
4
|
const io_1 = require("../../io");
|
|
5
5
|
const __1 = require("../");
|
|
6
|
-
const expectations_1 = require("./expectations");
|
|
7
6
|
/**
|
|
8
7
|
* @desc
|
|
9
8
|
* Defines an expectation to be used with [assertions](/modules/assertions)
|
|
@@ -11,7 +10,11 @@ const expectations_1 = require("./expectations");
|
|
|
11
10
|
*
|
|
12
11
|
* @extends {Question}
|
|
13
12
|
*/
|
|
14
|
-
class Expectation
|
|
13
|
+
class Expectation {
|
|
14
|
+
constructor(subject, predicate) {
|
|
15
|
+
this.subject = subject;
|
|
16
|
+
this.predicate = predicate;
|
|
17
|
+
}
|
|
15
18
|
/**
|
|
16
19
|
* @desc
|
|
17
20
|
* Used to define a simple {@link Expectation}
|
|
@@ -32,12 +35,20 @@ class Expectation extends __1.Question {
|
|
|
32
35
|
* @param {string} relationshipName
|
|
33
36
|
* @param {@serenity-js/core/lib/screenplay~Answerable<E>} expectedValue
|
|
34
37
|
*
|
|
35
|
-
* @returns {"soThat": function(predicate: Predicate<
|
|
38
|
+
* @returns {"soThat": function(predicate: Predicate<Expected, Actual>): Expectation<Expected, Actual>}
|
|
36
39
|
*/
|
|
37
40
|
static thatActualShould(relationshipName, expectedValue) {
|
|
38
41
|
return ({
|
|
39
|
-
soThat: (
|
|
40
|
-
|
|
42
|
+
soThat: (simplifiedPredicate) => {
|
|
43
|
+
const subject = relationshipName + ' ' + (0, io_1.d) `${expectedValue}`;
|
|
44
|
+
return new Expectation(subject, async (actor, actualValue) => {
|
|
45
|
+
const expected = await actor.answer(expectedValue);
|
|
46
|
+
const actual = await actor.answer(actualValue);
|
|
47
|
+
const result = await simplifiedPredicate(actual, expected);
|
|
48
|
+
return result
|
|
49
|
+
? new __1.ExpectationMet(subject, expected, actual)
|
|
50
|
+
: new __1.ExpectationNotMet(subject, expected, actual);
|
|
51
|
+
});
|
|
41
52
|
},
|
|
42
53
|
});
|
|
43
54
|
}
|
|
@@ -69,43 +80,23 @@ class Expectation extends __1.Question {
|
|
|
69
80
|
static to(relationshipName) {
|
|
70
81
|
return {
|
|
71
82
|
soThatActual: (expectation) => {
|
|
72
|
-
return new
|
|
83
|
+
return new Expectation(relationshipName, async (actor, actualValue) => {
|
|
84
|
+
const outcome = await actor.answer(expectation.isMetFor(actualValue));
|
|
85
|
+
return outcome;
|
|
86
|
+
});
|
|
73
87
|
},
|
|
74
88
|
};
|
|
75
89
|
}
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
/**
|
|
79
|
-
* @package
|
|
80
|
-
*/
|
|
81
|
-
class DynamicallyGeneratedExpectation extends Expectation {
|
|
82
|
-
constructor(description, predicate, expectedValue) {
|
|
83
|
-
super(`${description} ${(0, io_1.formatted) `${expectedValue}`}`);
|
|
84
|
-
this.description = description;
|
|
85
|
-
this.predicate = predicate;
|
|
86
|
-
this.expectedValue = expectedValue;
|
|
90
|
+
isMetFor(actual) {
|
|
91
|
+
return __1.Question.about(this.subject, actor => this.predicate(actor, actual));
|
|
87
92
|
}
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
return this.predicate(actual, expected)
|
|
92
|
-
? new expectations_1.ExpectationMet(this.toString(), expected, actual)
|
|
93
|
-
: new expectations_1.ExpectationNotMet(this.toString(), expected, actual);
|
|
94
|
-
});
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
/**
|
|
98
|
-
* @package
|
|
99
|
-
*/
|
|
100
|
-
class ExpectationAlias extends Expectation {
|
|
101
|
-
constructor(subject, expectation) {
|
|
102
|
-
super(subject);
|
|
103
|
-
this.expectation = expectation;
|
|
93
|
+
describedAs(subject) {
|
|
94
|
+
this.subject = subject;
|
|
95
|
+
return this;
|
|
104
96
|
}
|
|
105
|
-
|
|
106
|
-
return
|
|
107
|
-
? new expectations_1.ExpectationMet(this.subject, _.expected, _.actual)
|
|
108
|
-
: new expectations_1.ExpectationNotMet(_.message, _.expected, _.actual));
|
|
97
|
+
toString() {
|
|
98
|
+
return this.subject;
|
|
109
99
|
}
|
|
110
100
|
}
|
|
101
|
+
exports.Expectation = Expectation;
|
|
111
102
|
//# sourceMappingURL=Expectation.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Expectation.js","sourceRoot":"","sources":["../../../src/screenplay/questions/Expectation.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"Expectation.js","sourceRoot":"","sources":["../../../src/screenplay/questions/Expectation.ts"],"names":[],"mappings":";;;AAAA,iCAA6B;AAC7B,2BAAiH;AAWjH;;;;;;GAMG;AACH,MAAa,WAAW;IA0FpB,YACY,OAAe,EACN,SAA4B;QADrC,YAAO,GAAP,OAAO,CAAQ;QACN,cAAS,GAAT,SAAS,CAAmB;IAEjD,CAAC;IA5FD;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,MAAM,CAAC,gBAAgB,CAAO,gBAAwB,EAAE,aAA6B;QAGjF,OAAO,CAAC;YACJ,MAAM,EAAE,CAAC,mBAAqF,EAAkB,EAAE;gBAC9G,MAAM,OAAO,GAAG,gBAAgB,GAAG,GAAG,GAAG,IAAA,MAAC,EAAA,GAAG,aAAa,EAAE,CAAC;gBAE7D,OAAO,IAAI,WAAW,CAClB,OAAO,EACP,KAAK,EAAE,KAAuB,EAAE,WAA0B,EAAqC,EAAE;oBAC7F,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;oBACnD,MAAM,MAAM,GAAK,MAAM,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;oBAEjD,MAAM,MAAM,GAAK,MAAM,mBAAmB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;oBAE7D,OAAO,MAAM;wBACT,CAAC,CAAC,IAAI,kBAAc,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC;wBAC/C,CAAC,CAAC,IAAI,qBAAiB,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;gBAC3D,CAAC,CACJ,CAAC;YACN,CAAC;SACJ,CAAC,CAAC;IACP,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,MAAM,CAAC,EAAE,CAAO,gBAAwB;QAGpC,OAAO;YACH,YAAY,EAAE,CAAC,WAA2B,EAAkB,EAAE;gBAC1D,OAAO,IAAI,WAAW,CAClB,gBAAgB,EAChB,KAAK,EAAE,KAAuB,EAAE,WAA0B,EAAqC,EAAE;oBAC7F,MAAM,OAAO,GAAI,MAAM,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;oBAEvE,OAAO,OAAmC,CAAC;gBAC/C,CAAC,CACJ,CAAC;YACN,CAAC;SACJ,CAAC;IACN,CAAC;IAQD,QAAQ,CAAC,MAA0B;QAC/B,OAAO,YAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;IAChF,CAAC;IAED,WAAW,CAAC,OAAe;QACvB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,QAAQ;QACJ,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;CACJ;AA5GD,kCA4GC"}
|