@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.
Files changed (210) hide show
  1. package/CHANGELOG.md +476 -0
  2. package/lib/index.d.ts +2 -1
  3. package/lib/index.js +6 -1
  4. package/lib/index.js.map +1 -1
  5. package/lib/io/ErrorSerialiser.js +4 -1
  6. package/lib/io/ErrorSerialiser.js.map +1 -1
  7. package/lib/io/ErrorStackParser.d.ts +2 -2
  8. package/lib/io/ErrorStackParser.js.map +1 -1
  9. package/lib/io/asyncMap.d.ts +8 -0
  10. package/lib/io/asyncMap.js +18 -0
  11. package/lib/io/asyncMap.js.map +1 -0
  12. package/lib/io/format.d.ts +39 -0
  13. package/lib/io/format.js +51 -0
  14. package/lib/io/format.js.map +1 -0
  15. package/lib/io/formatted.d.ts +5 -1
  16. package/lib/io/formatted.js +6 -13
  17. package/lib/io/formatted.js.map +1 -1
  18. package/lib/io/index.d.ts +2 -1
  19. package/lib/io/index.js +2 -1
  20. package/lib/io/index.js.map +1 -1
  21. package/lib/io/inspected.d.ts +9 -1
  22. package/lib/io/inspected.js +52 -15
  23. package/lib/io/inspected.js.map +1 -1
  24. package/lib/model/Timestamp.d.ts +4 -2
  25. package/lib/model/Timestamp.js +8 -2
  26. package/lib/model/Timestamp.js.map +1 -1
  27. package/lib/screenplay/Optional.d.ts +29 -0
  28. package/lib/{io/collections/reducible.js → screenplay/Optional.js} +1 -1
  29. package/lib/screenplay/Optional.js.map +1 -0
  30. package/lib/screenplay/Question.d.ts +41 -82
  31. package/lib/screenplay/Question.js +132 -100
  32. package/lib/screenplay/Question.js.map +1 -1
  33. package/lib/screenplay/actor/Actor.js +2 -2
  34. package/lib/screenplay/actor/Actor.js.map +1 -1
  35. package/lib/screenplay/index.d.ts +1 -1
  36. package/lib/screenplay/index.js +1 -1
  37. package/lib/screenplay/index.js.map +1 -1
  38. package/lib/screenplay/interactions/index.d.ts +0 -1
  39. package/lib/screenplay/interactions/index.js +0 -1
  40. package/lib/screenplay/interactions/index.js.map +1 -1
  41. package/lib/screenplay/questions/Check.d.ts +3 -3
  42. package/lib/screenplay/questions/Check.js +5 -7
  43. package/lib/screenplay/questions/Check.js.map +1 -1
  44. package/lib/screenplay/questions/Expectation.d.ts +15 -10
  45. package/lib/screenplay/questions/Expectation.js +28 -37
  46. package/lib/screenplay/questions/Expectation.js.map +1 -1
  47. package/lib/screenplay/questions/List.d.ts +22 -192
  48. package/lib/screenplay/questions/List.js +160 -208
  49. package/lib/screenplay/questions/List.js.map +1 -1
  50. package/lib/screenplay/questions/Note.d.ts +10 -0
  51. package/lib/screenplay/questions/Note.js +17 -1
  52. package/lib/screenplay/questions/Note.js.map +1 -1
  53. package/lib/screenplay/questions/index.d.ts +0 -3
  54. package/lib/screenplay/questions/index.js +0 -5
  55. package/lib/screenplay/questions/index.js.map +1 -1
  56. package/lib/stage/index.d.ts +0 -2
  57. package/lib/stage/index.js +0 -2
  58. package/lib/stage/index.js.map +1 -1
  59. package/package.json +7 -6
  60. package/src/index.ts +2 -1
  61. package/src/io/ErrorSerialiser.ts +5 -1
  62. package/src/io/ErrorStackParser.ts +2 -1
  63. package/src/io/asyncMap.ts +18 -0
  64. package/src/io/format.ts +49 -0
  65. package/src/io/formatted.ts +7 -15
  66. package/src/io/index.ts +2 -1
  67. package/src/io/inspected.ts +68 -15
  68. package/src/model/Timestamp.ts +10 -2
  69. package/src/screenplay/Optional.ts +30 -0
  70. package/src/screenplay/Question.ts +206 -124
  71. package/src/screenplay/actor/Actor.ts +2 -2
  72. package/src/screenplay/index.ts +1 -1
  73. package/src/screenplay/interactions/index.ts +0 -1
  74. package/src/screenplay/questions/Check.ts +10 -15
  75. package/src/screenplay/questions/Expectation.ts +47 -55
  76. package/src/screenplay/questions/List.ts +224 -233
  77. package/src/screenplay/questions/Note.ts +21 -1
  78. package/src/screenplay/questions/index.ts +0 -3
  79. package/src/stage/index.ts +0 -2
  80. package/lib/io/collections/index.d.ts +0 -2
  81. package/lib/io/collections/index.js +0 -15
  82. package/lib/io/collections/index.js.map +0 -1
  83. package/lib/io/collections/mappable.d.ts +0 -52
  84. package/lib/io/collections/mappable.js +0 -28
  85. package/lib/io/collections/mappable.js.map +0 -1
  86. package/lib/io/collections/reducible.d.ts +0 -16
  87. package/lib/io/collections/reducible.js.map +0 -1
  88. package/lib/screenplay/interactions/See.d.ts +0 -31
  89. package/lib/screenplay/interactions/See.js +0 -43
  90. package/lib/screenplay/interactions/See.js.map +0 -1
  91. package/lib/screenplay/questions/Property.d.ts +0 -91
  92. package/lib/screenplay/questions/Property.js +0 -99
  93. package/lib/screenplay/questions/Property.js.map +0 -1
  94. package/lib/screenplay/questions/Transform.d.ts +0 -31
  95. package/lib/screenplay/questions/Transform.js +0 -46
  96. package/lib/screenplay/questions/Transform.js.map +0 -1
  97. package/lib/screenplay/questions/lists/ArrayListAdapter.d.ts +0 -88
  98. package/lib/screenplay/questions/lists/ArrayListAdapter.js +0 -152
  99. package/lib/screenplay/questions/lists/ArrayListAdapter.js.map +0 -1
  100. package/lib/screenplay/questions/lists/ListAdapter.d.ts +0 -20
  101. package/lib/screenplay/questions/lists/ListAdapter.js +0 -3
  102. package/lib/screenplay/questions/lists/ListAdapter.js.map +0 -1
  103. package/lib/screenplay/questions/lists/index.d.ts +0 -2
  104. package/lib/screenplay/questions/lists/index.js +0 -15
  105. package/lib/screenplay/questions/lists/index.js.map +0 -1
  106. package/lib/screenplay/questions/mappings/AnswerMappingFunction.d.ts +0 -11
  107. package/lib/screenplay/questions/mappings/AnswerMappingFunction.js +0 -3
  108. package/lib/screenplay/questions/mappings/AnswerMappingFunction.js.map +0 -1
  109. package/lib/screenplay/questions/mappings/index.d.ts +0 -2
  110. package/lib/screenplay/questions/mappings/index.js +0 -15
  111. package/lib/screenplay/questions/mappings/index.js.map +0 -1
  112. package/lib/screenplay/questions/mappings/string/append.d.ts +0 -14
  113. package/lib/screenplay/questions/mappings/string/append.js +0 -25
  114. package/lib/screenplay/questions/mappings/string/append.js.map +0 -1
  115. package/lib/screenplay/questions/mappings/string/index.d.ts +0 -11
  116. package/lib/screenplay/questions/mappings/string/index.js +0 -24
  117. package/lib/screenplay/questions/mappings/string/index.js.map +0 -1
  118. package/lib/screenplay/questions/mappings/string/normalize.d.ts +0 -20
  119. package/lib/screenplay/questions/mappings/string/normalize.js +0 -30
  120. package/lib/screenplay/questions/mappings/string/normalize.js.map +0 -1
  121. package/lib/screenplay/questions/mappings/string/replace.d.ts +0 -17
  122. package/lib/screenplay/questions/mappings/string/replace.js +0 -30
  123. package/lib/screenplay/questions/mappings/string/replace.js.map +0 -1
  124. package/lib/screenplay/questions/mappings/string/slice.d.ts +0 -28
  125. package/lib/screenplay/questions/mappings/string/slice.js +0 -47
  126. package/lib/screenplay/questions/mappings/string/slice.js.map +0 -1
  127. package/lib/screenplay/questions/mappings/string/split.d.ts +0 -19
  128. package/lib/screenplay/questions/mappings/string/split.js +0 -36
  129. package/lib/screenplay/questions/mappings/string/split.js.map +0 -1
  130. package/lib/screenplay/questions/mappings/string/toLocaleLowerCase.d.ts +0 -17
  131. package/lib/screenplay/questions/mappings/string/toLocaleLowerCase.js +0 -28
  132. package/lib/screenplay/questions/mappings/string/toLocaleLowerCase.js.map +0 -1
  133. package/lib/screenplay/questions/mappings/string/toLocaleUpperCase.d.ts +0 -17
  134. package/lib/screenplay/questions/mappings/string/toLocaleUpperCase.js +0 -29
  135. package/lib/screenplay/questions/mappings/string/toLocaleUpperCase.js.map +0 -1
  136. package/lib/screenplay/questions/mappings/string/toLowerCase.d.ts +0 -10
  137. package/lib/screenplay/questions/mappings/string/toLowerCase.js +0 -19
  138. package/lib/screenplay/questions/mappings/string/toLowerCase.js.map +0 -1
  139. package/lib/screenplay/questions/mappings/string/toNumber.d.ts +0 -10
  140. package/lib/screenplay/questions/mappings/string/toNumber.js +0 -18
  141. package/lib/screenplay/questions/mappings/string/toNumber.js.map +0 -1
  142. package/lib/screenplay/questions/mappings/string/toUpperCase.d.ts +0 -10
  143. package/lib/screenplay/questions/mappings/string/toUpperCase.js +0 -19
  144. package/lib/screenplay/questions/mappings/string/toUpperCase.js.map +0 -1
  145. package/lib/screenplay/questions/mappings/string/trim.d.ts +0 -12
  146. package/lib/screenplay/questions/mappings/string/trim.js +0 -21
  147. package/lib/screenplay/questions/mappings/string/trim.js.map +0 -1
  148. package/lib/screenplay/questions/proxies/PropertyPathKey.d.ts +0 -4
  149. package/lib/screenplay/questions/proxies/PropertyPathKey.js +0 -3
  150. package/lib/screenplay/questions/proxies/PropertyPathKey.js.map +0 -1
  151. package/lib/screenplay/questions/proxies/createMetaQuestionProxy.d.ts +0 -14
  152. package/lib/screenplay/questions/proxies/createMetaQuestionProxy.js +0 -35
  153. package/lib/screenplay/questions/proxies/createMetaQuestionProxy.js.map +0 -1
  154. package/lib/screenplay/questions/proxies/createQuestionProxy.d.ts +0 -13
  155. package/lib/screenplay/questions/proxies/createQuestionProxy.js +0 -34
  156. package/lib/screenplay/questions/proxies/createQuestionProxy.js.map +0 -1
  157. package/lib/screenplay/questions/proxies/describePath.d.ts +0 -5
  158. package/lib/screenplay/questions/proxies/describePath.js +0 -19
  159. package/lib/screenplay/questions/proxies/describePath.js.map +0 -1
  160. package/lib/screenplay/questions/proxies/index.d.ts +0 -2
  161. package/lib/screenplay/questions/proxies/index.js +0 -15
  162. package/lib/screenplay/questions/proxies/index.js.map +0 -1
  163. package/lib/screenplay/questions/proxies/key.d.ts +0 -8
  164. package/lib/screenplay/questions/proxies/key.js +0 -16
  165. package/lib/screenplay/questions/proxies/key.js.map +0 -1
  166. package/lib/screenplay/tasks/Loop.d.ts +0 -198
  167. package/lib/screenplay/tasks/Loop.js +0 -222
  168. package/lib/screenplay/tasks/Loop.js.map +0 -1
  169. package/lib/screenplay/tasks/index.d.ts +0 -1
  170. package/lib/screenplay/tasks/index.js +0 -14
  171. package/lib/screenplay/tasks/index.js.map +0 -1
  172. package/lib/stage/DressingRoom.d.ts +0 -37
  173. package/lib/stage/DressingRoom.js +0 -53
  174. package/lib/stage/DressingRoom.js.map +0 -1
  175. package/lib/stage/WithStage.d.ts +0 -51
  176. package/lib/stage/WithStage.js +0 -3
  177. package/lib/stage/WithStage.js.map +0 -1
  178. package/src/io/collections/index.ts +0 -2
  179. package/src/io/collections/mappable.ts +0 -60
  180. package/src/io/collections/reducible.ts +0 -16
  181. package/src/screenplay/interactions/See.ts +0 -45
  182. package/src/screenplay/questions/Property.ts +0 -98
  183. package/src/screenplay/questions/Transform.ts +0 -51
  184. package/src/screenplay/questions/lists/ArrayListAdapter.ts +0 -186
  185. package/src/screenplay/questions/lists/ListAdapter.ts +0 -33
  186. package/src/screenplay/questions/lists/index.ts +0 -2
  187. package/src/screenplay/questions/mappings/AnswerMappingFunction.ts +0 -13
  188. package/src/screenplay/questions/mappings/index.ts +0 -2
  189. package/src/screenplay/questions/mappings/string/append.ts +0 -28
  190. package/src/screenplay/questions/mappings/string/index.ts +0 -11
  191. package/src/screenplay/questions/mappings/string/normalize.ts +0 -33
  192. package/src/screenplay/questions/mappings/string/replace.ts +0 -34
  193. package/src/screenplay/questions/mappings/string/slice.ts +0 -53
  194. package/src/screenplay/questions/mappings/string/split.ts +0 -38
  195. package/src/screenplay/questions/mappings/string/toLocaleLowerCase.ts +0 -31
  196. package/src/screenplay/questions/mappings/string/toLocaleUpperCase.ts +0 -30
  197. package/src/screenplay/questions/mappings/string/toLowerCase.ts +0 -20
  198. package/src/screenplay/questions/mappings/string/toNumber.ts +0 -19
  199. package/src/screenplay/questions/mappings/string/toUpperCase.ts +0 -20
  200. package/src/screenplay/questions/mappings/string/trim.ts +0 -22
  201. package/src/screenplay/questions/proxies/PropertyPathKey.ts +0 -4
  202. package/src/screenplay/questions/proxies/createMetaQuestionProxy.ts +0 -51
  203. package/src/screenplay/questions/proxies/createQuestionProxy.ts +0 -49
  204. package/src/screenplay/questions/proxies/describePath.ts +0 -23
  205. package/src/screenplay/questions/proxies/index.ts +0 -2
  206. package/src/screenplay/questions/proxies/key.ts +0 -14
  207. package/src/screenplay/tasks/Loop.ts +0 -240
  208. package/src/screenplay/tasks/index.ts +0 -1
  209. package/src/stage/DressingRoom.ts +0 -53
  210. 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 collections_1 = require("../io/collections");
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 AnonymousQuestion(description, body);
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
- * @desc
98
- * Describes the subject of this {@link Question}.
99
- *
100
- * @returns {string}
101
- */
102
- toString() {
103
- return this.subject;
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
- * Changes the description of this question's subject.
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
- * @param {string} subject
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
- * @desc
118
- * Creates a new {@link Question}, which value is a result of applying the `mapping`
119
- * function to the value of this {@link Question}.
120
- *
121
- * @example <caption>Mapping a Question<Promise<string>> to Question<Promise<number>></caption>
122
- * import { Question, replace, toNumber } from '@serenity-js/core';
123
- *
124
- * Question.about('the price of some item', actor => '$3.99')
125
- * .map(replace('$', ''))
126
- * .map(toNumber)
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 AnonymousQuestion extends Question {
187
- constructor(description, body) {
188
- super(description);
189
- this.description = description;
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
- return this.body(actor);
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,mDAAyD;AAIzD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AACH,MAAsB,QAAQ;IAE1B;;;;;OAKG;IACH,YAAgC,OAAe;QAAf,YAAO,GAAP,OAAO,CAAQ;IAC/C,CAAC;IAED;;;;;;;;;;;;;;OAcG;IACH,MAAM,CAAC,KAAK,CAAI,WAAmB,EAAE,IAAoD;QACrF,OAAO,IAAI,iBAAiB,CAAI,WAAW,EAAE,IAAI,CAAC,CAAC;IACvD,CAAC;IAED;;;;;;;;;;OAUG;IACH,MAAM,CAAC,WAAW,CAAI,aAAsB;QACxC,OAAO,CAAC,CAAE,aAAa,IAAI,CAAC,CAAG,aAAqB,CAAC,UAAU,CAAC;IACpE,CAAC;IAED;;;;;OAKG;IACH,QAAQ;QACJ,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;IAED;;;;;;OAMG;IACH,WAAW,CAAC,OAAe;QACvB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QAEvB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2DG;IACH,GAAG,CAAI,OAAsE;QACzE,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,CACxC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAC5B,CAAC,IAAA,wBAAU,EAAC,KAAK,CAAC;YACd,CAAC,CAAC,OAAO,CAAC,GAAG,CAAE,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAA+B,CAAC;YACzE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,KAA4C,CAAC,CACxC,CAC7B,CAC+B,CAAC;IACzC,CAAC;CAMJ;AA/ID,4BA+IC;AA0BD;;GAEG;AACH,MAAM,iBAAqB,SAAQ,QAAW;IAC1C,YAAoB,WAAmB,EAAU,IAAoD;QACjG,KAAK,CAAC,WAAW,CAAC,CAAC;QADH,gBAAW,GAAX,WAAW,CAAQ;QAAU,SAAI,GAAJ,IAAI,CAAgD;IAErG,CAAC;IAED,UAAU,CAAC,KAAuC;QAC9C,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;IAED;;;;;;OAMG;IACH,WAAW,CAAC,OAAe;QACvB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QAEvB,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ"}
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 !!v.then;
92
+ return Object.prototype.hasOwnProperty.call(v, 'then');
93
93
  }
94
94
  function isDefined(v) {
95
- return !(answerable === undefined || answerable === null);
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":"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"}
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';
@@ -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;AACvB,0CAAwB"}
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"}
@@ -1,3 +1,2 @@
1
1
  export * from './Log';
2
- export * from './See';
3
2
  export * from './TakeNote';
@@ -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,wCAAsB;AACtB,6CAA2B"}
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<any, A>): {
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<any, Actual>, activities: Activity[], alternativeActivities?: Activity[]);
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): PromiseLike<void>;
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
- return Promise.all([
85
- actor.answer(this.actual),
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.formatted) `#actor checks whether ${this.actual} does ${this.expectation}`;
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,iCAAqC;AAIrC,kCAA+B;AAE/B,iDAAgD;AAEhD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,MAAa,KAAc,SAAQ,WAAI;IAQnC;;;;;;OAMG;IACH,YACqB,MAA0B,EAC1B,WAAqC,EACrC,UAAsB,EACtB,wBAAoC,EAAE;QAEvD,KAAK,EAAE,CAAC;QALS,WAAM,GAAN,MAAM,CAAoB;QAC1B,gBAAW,GAAX,WAAW,CAA0B;QACrC,eAAU,GAAV,UAAU,CAAY;QACtB,0BAAqB,GAArB,qBAAqB,CAAiB;IAG3D,CAAC;IArBD,6EAA6E;IAC7E,MAAM,CAAC,OAAO,CAAI,MAAqB,EAAE,WAAgC;QACrE,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,SAAS,CAAC,KAA4C;QAClD,OAAO,OAAO,CAAC,GAAG,CAAC;YACf,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;YACzB,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;SACjC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,EAAE,CAC9B,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAC/B,OAAO,YAAY,6BAAc;YAC7B,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;YACtC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,qBAAqB,CAAC,CACxD,CACJ,CAAC;IACN,CAAC;IAED;;;;;OAKG;IACH,QAAQ;QACJ,OAAO,IAAA,cAAS,EAAC,yBAA0B,IAAI,CAAC,MAAO,SAAU,IAAI,CAAC,WAAY,EAAE,CAAC;IACzF,CAAC;CACJ;AAlED,sBAkEC"}
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, Question } from '../';
1
+ import { Answerable, AnswersQuestions, QuestionAdapter } from '../';
2
2
  import { ExpectationOutcome } from './expectations';
3
3
  /**
4
4
  * @public
5
5
  *
6
- * @typedef {function(actual: A, expected: E) => boolean} Predicate<A,E>
6
+ * @typedef {function(actual: Answerable<Actual>) => Promise<ExpectationOutcome<Expected, Actual>> | ExpectationOutcome<unknown, Actual>} Predicate<Actual>
7
7
  */
8
- export declare type Predicate<A, E> = (actual: A, expected: E) => boolean;
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 abstract class Expectation<Expected, Actual = Expected> extends Question<(actual: Actual) => Promise<ExpectationOutcome<Expected, Actual>>> {
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<A,E>): Expectation<E, A>}
39
+ * @returns {"soThat": function(predicate: Predicate<Expected, Actual>): Expectation<Expected, Actual>}
38
40
  */
39
- static thatActualShould<E, A>(relationshipName: string, expectedValue: Answerable<E>): {
40
- soThat: (predicate: Predicate<A, E>) => Expectation<E, A>;
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<any, A>>) => Expectation<any, A>;
69
+ static to<E, A>(relationshipName: string): {
70
+ soThatActual: (...expectations: Array<Expectation<A>>) => Expectation<A>;
69
71
  };
70
- abstract answeredBy(actor: AnswersQuestions): (actual: Actual) => Promise<ExpectationOutcome<Expected, Actual>>;
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 extends __1.Question {
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<A,E>): Expectation<E, A>}
38
+ * @returns {"soThat": function(predicate: Predicate<Expected, Actual>): Expectation<Expected, Actual>}
36
39
  */
37
40
  static thatActualShould(relationshipName, expectedValue) {
38
41
  return ({
39
- soThat: (predicate) => {
40
- return new DynamicallyGeneratedExpectation(relationshipName, predicate, expectedValue);
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 ExpectationAlias(relationshipName, expectation);
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
- exports.Expectation = Expectation;
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
- answeredBy(actor) {
89
- return (actual) => actor.answer(this.expectedValue)
90
- .then(expected => {
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
- answeredBy(actor) {
106
- return (actual) => this.expectation.answeredBy(actor)(actual).then(_ => _ instanceof expectations_1.ExpectationMet
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,iCAAqC;AACrC,2BAA6D;AAC7D,iDAAwF;AASxF;;;;;;GAMG;AACH,MAAsB,WAClB,SAAQ,YAA2E;IAGnF;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,MAAM,CAAC,gBAAgB,CAAO,gBAAwB,EAAE,aAA4B;QAGhF,OAAO,CAAC;YACJ,MAAM,EAAE,CAAC,SAA0B,EAAqB,EAAE;gBACtD,OAAO,IAAI,+BAA+B,CAAO,gBAAgB,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;YACjG,CAAC;SACJ,CAAC,CAAC;IACP,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,MAAM,CAAC,EAAE,CAAI,gBAAwB;QAGjC,OAAO;YACH,YAAY,EAAE,CAAC,WAAgC,EAAuB,EAAE;gBACpE,OAAO,IAAI,gBAAgB,CAAI,gBAAgB,EAAE,WAAW,CAAC,CAAC;YAClE,CAAC;SACJ,CAAC;IACN,CAAC;CAGJ;AAxED,kCAwEC;AAED;;GAEG;AACH,MAAM,+BAAkD,SAAQ,WAA6B;IAEzF,YACqB,WAAmB,EACnB,SAAsC,EACtC,aAAmC;QAEpD,KAAK,CAAC,GAAI,WAAY,IAAK,IAAA,cAAS,EAAC,GAAI,aAAc,EAAG,EAAE,CAAC,CAAC;QAJ7C,gBAAW,GAAX,WAAW,CAAQ;QACnB,cAAS,GAAT,SAAS,CAA6B;QACtC,kBAAa,GAAb,aAAa,CAAsB;IAGxD,CAAC;IAED,UAAU,CAAC,KAAuB;QAE9B,OAAO,CAAC,MAAc,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC;aACtD,IAAI,CAAC,QAAQ,CAAC,EAAE;YACb,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC;gBACnC,CAAC,CAAC,IAAI,6BAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC;gBACvD,CAAC,CAAC,IAAI,gCAAiB,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QACnE,CAAC,CAAC,CAAC;IACX,CAAC;CACJ;AAED;;GAEG;AACH,MAAM,gBAAyB,SAAQ,WAAwB;IAE3D,YACI,OAAe,EACE,WAAqC;QAEtD,KAAK,CAAC,OAAO,CAAC,CAAC;QAFE,gBAAW,GAAX,WAAW,CAA0B;IAG1D,CAAC;IAED,UAAU,CAAC,KAAuB;QAE9B,OAAO,CAAC,MAAc,EAAE,EAAE,CACtB,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,YAAY,6BAAc;YAC5E,CAAC,CAAC,IAAI,6BAAc,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC;YACxD,CAAC,CAAC,IAAI,gCAAiB,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IACtE,CAAC;CACJ"}
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"}