@cucumber/query 5.0.0 → 7.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -41,90 +41,100 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
41
41
  Object.defineProperty(exports, "__esModule", { value: true });
42
42
  require("source-map-support/register");
43
43
  var gherkin_1 = require("@cucumber/gherkin");
44
+ var gherkin_utils_1 = require("@cucumber/gherkin-utils");
44
45
  var messages_1 = require("@cucumber/messages");
45
46
  var stream_1 = require("stream");
46
47
  var assert_1 = __importDefault(require("assert"));
47
- var SupportCode_1 = __importDefault(require("@cucumber/fake-cucumber/dist/src/SupportCode"));
48
- var ErrorMessageGenerator_1 = require("@cucumber/fake-cucumber/dist/src/ErrorMessageGenerator");
48
+ var fake_cucumber_1 = require("@cucumber/fake-cucumber");
49
49
  var util_1 = require("util");
50
50
  var IncrementClock_1 = __importDefault(require("@cucumber/fake-cucumber/dist/src/IncrementClock"));
51
51
  var Query_1 = __importDefault(require("../src/Query"));
52
- var makeTestPlan_1 = __importDefault(require("@cucumber/fake-cucumber/dist/src/makeTestPlan"));
52
+ var fake_cucumber_2 = require("@cucumber/fake-cucumber");
53
+ var IncrementStopwatch_1 = __importDefault(require("@cucumber/fake-cucumber/dist/src/IncrementStopwatch"));
53
54
  var pipelinePromise = util_1.promisify(stream_1.pipeline);
54
55
  describe('Query', function () {
55
56
  var gherkinQuery;
56
57
  var cucumberQuery;
57
58
  beforeEach(function () {
58
- gherkinQuery = new gherkin_1.Query();
59
+ gherkinQuery = new gherkin_utils_1.Query();
59
60
  cucumberQuery = new Query_1.default();
60
61
  });
61
62
  describe('#getWorstTestStepResult(testStepResults)', function () {
62
63
  it('returns a FAILED result for PASSED,FAILED,PASSED', function () {
63
64
  var result = cucumberQuery.getWorstTestStepResult([
64
- new messages_1.messages.TestStepResult({
65
- status: messages_1.messages.TestStepResult.Status.PASSED,
65
+ new messages_1.messages.TestStepFinished.TestStepResult({
66
+ status: messages_1.messages.TestStepFinished.TestStepResult.Status.PASSED,
66
67
  }),
67
- new messages_1.messages.TestStepResult({
68
- status: messages_1.messages.TestStepResult.Status.FAILED,
68
+ new messages_1.messages.TestStepFinished.TestStepResult({
69
+ status: messages_1.messages.TestStepFinished.TestStepResult.Status.FAILED,
69
70
  }),
70
- new messages_1.messages.TestStepResult({
71
- status: messages_1.messages.TestStepResult.Status.PASSED,
71
+ new messages_1.messages.TestStepFinished.TestStepResult({
72
+ status: messages_1.messages.TestStepFinished.TestStepResult.Status.PASSED,
72
73
  }),
73
74
  ]);
74
- assert_1.default.strictEqual(result.status, messages_1.messages.TestStepResult.Status.FAILED);
75
+ assert_1.default.strictEqual(result.status, messages_1.messages.TestStepFinished.TestStepResult.Status.FAILED);
75
76
  });
76
77
  });
77
78
  describe('#getPickleStepTestStepResults(pickleStepIds)', function () {
78
79
  it('returns a single UNKNOWN when the list is empty', function () {
79
80
  var results = cucumberQuery.getPickleTestStepResults([]);
80
- assert_1.default.deepStrictEqual(results.map(function (r) { return r.status; }), [messages_1.messages.TestStepResult.Status.UNKNOWN]);
81
+ assert_1.default.deepStrictEqual(results.map(function (r) { return r.status; }), [messages_1.messages.TestStepFinished.TestStepResult.Status.UNKNOWN]);
81
82
  });
82
83
  it('looks up results for scenario steps', function () { return __awaiter(void 0, void 0, void 0, function () {
83
- var pickleStepIds, testStepResults;
84
+ var envelopes, scenario, pickleStepIds, testStepResults;
84
85
  return __generator(this, function (_a) {
85
86
  switch (_a.label) {
86
- case 0: return [4 /*yield*/, execute("Feature: hello\n Scenario: ok\n Given a passed step\n")];
87
+ case 0:
88
+ envelopes = [];
89
+ return [4 /*yield*/, execute("Feature: hello\n Scenario: ok\n Given a passed step\n", function (envelope) { return envelopes.push(envelope); })];
87
90
  case 1:
88
91
  _a.sent();
89
- pickleStepIds = gherkinQuery.getPickleStepIds('test.feature', 3);
92
+ scenario = findScenario(envelopes);
93
+ pickleStepIds = gherkinQuery.getPickleStepIds(scenario.steps[0].id);
90
94
  assert_1.default.strictEqual(pickleStepIds.length, 1);
91
95
  testStepResults = cucumberQuery.getPickleStepTestStepResults(pickleStepIds);
92
96
  assert_1.default.strictEqual(testStepResults.length, 1);
93
- assert_1.default.strictEqual(testStepResults[0].status, messages_1.messages.TestStepResult.Status.PASSED);
97
+ assert_1.default.strictEqual(testStepResults[0].status, messages_1.messages.TestStepFinished.TestStepResult.Status.PASSED);
94
98
  return [2 /*return*/];
95
99
  }
96
100
  });
97
101
  }); });
98
102
  it('looks up results for background steps', function () { return __awaiter(void 0, void 0, void 0, function () {
99
- var pickleStepIds, testStepResults;
103
+ var envelopes, background, pickleStepIds, testStepResults;
100
104
  return __generator(this, function (_a) {
101
105
  switch (_a.label) {
102
- case 0: return [4 /*yield*/, execute("Feature: hello\n Background:\n Given a passed step\n\n Scenario: ok\n Given a passed step\n\n Scenario: ko\n Given a failed step\n")];
106
+ case 0:
107
+ envelopes = [];
108
+ return [4 /*yield*/, execute("Feature: hello\n Background:\n Given a passed step\n\n Scenario: ok\n Given a passed step\n\n Scenario: ko\n Given a failed step\n", function (envelope) { return envelopes.push(envelope); })];
103
109
  case 1:
104
110
  _a.sent();
105
- pickleStepIds = gherkinQuery.getPickleStepIds('test.feature', 3);
111
+ background = findBackground(envelopes);
112
+ pickleStepIds = gherkinQuery.getPickleStepIds(background.steps[0].id);
106
113
  assert_1.default.strictEqual(pickleStepIds.length, 2);
107
114
  testStepResults = cucumberQuery.getPickleStepTestStepResults(pickleStepIds);
108
115
  assert_1.default.deepStrictEqual(testStepResults.map(function (r) { return r.status; }), [
109
- messages_1.messages.TestStepResult.Status.PASSED,
110
- messages_1.messages.TestStepResult.Status.PASSED,
116
+ messages_1.messages.TestStepFinished.TestStepResult.Status.PASSED,
117
+ messages_1.messages.TestStepFinished.TestStepResult.Status.PASSED,
111
118
  ]);
112
119
  return [2 /*return*/];
113
120
  }
114
121
  });
115
122
  }); });
116
123
  it('looks up results for background steps when scenarios are empty', function () { return __awaiter(void 0, void 0, void 0, function () {
117
- var pickleStepIds, testStepResults;
124
+ var envelopes, background, pickleStepIds, testStepResults;
118
125
  return __generator(this, function (_a) {
119
126
  switch (_a.label) {
120
- case 0: return [4 /*yield*/, execute("Feature: hello\n Background:\n Given a passed step\n\n Scenario: ok\n\n Scenario: ok too\n")];
127
+ case 0:
128
+ envelopes = [];
129
+ return [4 /*yield*/, execute("Feature: hello\n Background:\n Given a passed step\n\n Scenario: ok\n\n Scenario: ok too\n", function (envelope) { return envelopes.push(envelope); })];
121
130
  case 1:
122
131
  _a.sent();
123
- pickleStepIds = gherkinQuery.getPickleStepIds('test.feature', 3);
132
+ background = findBackground(envelopes);
133
+ pickleStepIds = gherkinQuery.getPickleStepIds(background.steps[0].id);
124
134
  assert_1.default.strictEqual(pickleStepIds.length, 0);
125
135
  testStepResults = cucumberQuery.getPickleStepTestStepResults(pickleStepIds);
126
136
  assert_1.default.strictEqual(testStepResults.length, 1);
127
- assert_1.default.strictEqual(testStepResults[0].status, messages_1.messages.TestStepResult.Status.UNKNOWN);
137
+ assert_1.default.strictEqual(testStepResults[0].status, messages_1.messages.TestStepFinished.TestStepResult.Status.UNKNOWN);
128
138
  return [2 /*return*/];
129
139
  }
130
140
  });
@@ -132,59 +142,70 @@ describe('Query', function () {
132
142
  });
133
143
  describe('#getPickleTestStepResults(pickleIds)', function () {
134
144
  it('looks up results for scenarios', function () { return __awaiter(void 0, void 0, void 0, function () {
135
- var pickleIds, testStepResults;
145
+ var envelopes, scenario, pickleIds, testStepResults;
136
146
  return __generator(this, function (_a) {
137
147
  switch (_a.label) {
138
- case 0: return [4 /*yield*/, execute("Feature: hello\n Scenario: ko\n Given a passed step\n Given a failed step\n")];
148
+ case 0:
149
+ envelopes = [];
150
+ return [4 /*yield*/, execute("Feature: hello\n Scenario: ko\n Given a passed step\n Given a failed step\n", function (envelope) { return envelopes.push(envelope); })];
139
151
  case 1:
140
152
  _a.sent();
141
- pickleIds = gherkinQuery.getPickleIds('test.feature', 2);
153
+ scenario = findScenario(envelopes);
154
+ pickleIds = gherkinQuery.getPickleIds('test.feature', scenario.id);
142
155
  assert_1.default.strictEqual(pickleIds.length, 1);
143
156
  testStepResults = cucumberQuery.getPickleTestStepResults(pickleIds);
144
157
  assert_1.default.deepStrictEqual(testStepResults.map(function (r) { return r.status; }), [
145
- messages_1.messages.TestStepResult.Status.PASSED,
146
- messages_1.messages.TestStepResult.Status.FAILED,
158
+ messages_1.messages.TestStepFinished.TestStepResult.Status.PASSED,
159
+ messages_1.messages.TestStepFinished.TestStepResult.Status.FAILED,
147
160
  ]);
148
161
  return [2 /*return*/];
149
162
  }
150
163
  });
151
164
  }); });
152
165
  it('looks up results for scenario outlines', function () { return __awaiter(void 0, void 0, void 0, function () {
153
- var pickleIds;
166
+ var envelopes, scenario, pickleIds;
154
167
  return __generator(this, function (_a) {
155
168
  switch (_a.label) {
156
- case 0: return [4 /*yield*/, execute("Feature: hello\n Scenario: hi <status1> and <status2>\n Given a <status1> step\n And a <status2> step\n\n Examples:\n | status1 | status2 |\n | passed | passed |\n | passed | failed |\n")];
169
+ case 0:
170
+ envelopes = [];
171
+ return [4 /*yield*/, execute("Feature: hello\n Scenario: hi <status1> and <status2>\n Given a <status1> step\n And a <status2> step\n\n Examples:\n | status1 | status2 |\n | passed | passed |\n | passed | failed |\n", function (envelope) { return envelopes.push(envelope); })];
157
172
  case 1:
158
173
  _a.sent();
159
- pickleIds = gherkinQuery.getPickleIds('test.feature', 2);
174
+ scenario = findScenario(envelopes);
175
+ pickleIds = gherkinQuery.getPickleIds('test.feature', scenario.id);
160
176
  assert_1.default.strictEqual(pickleIds.length, 2);
161
177
  assert_1.default.deepStrictEqual(cucumberQuery.getPickleTestStepResults(pickleIds).map(function (r) { return r.status; }), [
162
- messages_1.messages.TestStepResult.Status.PASSED,
163
- messages_1.messages.TestStepResult.Status.PASSED,
164
- messages_1.messages.TestStepResult.Status.PASSED,
165
- messages_1.messages.TestStepResult.Status.FAILED,
178
+ messages_1.messages.TestStepFinished.TestStepResult.Status.PASSED,
179
+ messages_1.messages.TestStepFinished.TestStepResult.Status.PASSED,
180
+ messages_1.messages.TestStepFinished.TestStepResult.Status.PASSED,
181
+ messages_1.messages.TestStepFinished.TestStepResult.Status.FAILED,
166
182
  ]);
167
183
  return [2 /*return*/];
168
184
  }
169
185
  });
170
186
  }); });
171
187
  it('looks up results for examples rows outlines', function () { return __awaiter(void 0, void 0, void 0, function () {
188
+ var envelopes, scenario, exampleIds;
172
189
  return __generator(this, function (_a) {
173
190
  switch (_a.label) {
174
- case 0: return [4 /*yield*/, execute("Feature: hello\n Scenario: hi <status1> and <status2>\n Given a <status1> step\n And a <status2> step\n\n Examples:\n | status1 | status2 |\n | passed | passed |\n | passed | failed |\n")];
191
+ case 0:
192
+ envelopes = [];
193
+ return [4 /*yield*/, execute("Feature: hello\n Scenario: hi <status1> and <status2>\n Given a <status1> step\n And a <status2> step\n\n Examples:\n | status1 | status2 |\n | passed | passed |\n | passed | failed |\n", function (envelope) { return envelopes.push(envelope); })];
175
194
  case 1:
176
195
  _a.sent();
196
+ scenario = findScenario(envelopes);
197
+ exampleIds = scenario.examples[0].tableBody.map(function (row) { return row.id; });
177
198
  assert_1.default.deepStrictEqual(cucumberQuery
178
- .getPickleTestStepResults(gherkinQuery.getPickleIds('test.feature', 8))
199
+ .getPickleTestStepResults(gherkinQuery.getPickleIds('test.feature', exampleIds[0]))
179
200
  .map(function (r) { return r.status; }), [
180
- messages_1.messages.TestStepResult.Status.PASSED,
181
- messages_1.messages.TestStepResult.Status.PASSED,
201
+ messages_1.messages.TestStepFinished.TestStepResult.Status.PASSED,
202
+ messages_1.messages.TestStepFinished.TestStepResult.Status.PASSED,
182
203
  ]);
183
204
  assert_1.default.deepStrictEqual(cucumberQuery
184
- .getPickleTestStepResults(gherkinQuery.getPickleIds('test.feature', 9))
205
+ .getPickleTestStepResults(gherkinQuery.getPickleIds('test.feature', exampleIds[1]))
185
206
  .map(function (r) { return r.status; }), [
186
- messages_1.messages.TestStepResult.Status.PASSED,
187
- messages_1.messages.TestStepResult.Status.FAILED,
207
+ messages_1.messages.TestStepFinished.TestStepResult.Status.PASSED,
208
+ messages_1.messages.TestStepFinished.TestStepResult.Status.FAILED,
188
209
  ]);
189
210
  return [2 /*return*/];
190
211
  }
@@ -193,13 +214,16 @@ describe('Query', function () {
193
214
  });
194
215
  describe('#getPickleStepAttachments(pickleIds)', function () {
195
216
  it('looks up attachments', function () { return __awaiter(void 0, void 0, void 0, function () {
196
- var pickleStepIds, attachments;
217
+ var envelopes, scenario, pickleStepIds, attachments;
197
218
  return __generator(this, function (_a) {
198
219
  switch (_a.label) {
199
- case 0: return [4 /*yield*/, execute("Feature: hello\n Scenario: ok\n Given a passed step with attachment\n")];
220
+ case 0:
221
+ envelopes = [];
222
+ return [4 /*yield*/, execute("Feature: hello\n Scenario: ok\n Given a passed step with attachment\n ", function (envelope) { return envelopes.push(envelope); })];
200
223
  case 1:
201
224
  _a.sent();
202
- pickleStepIds = gherkinQuery.getPickleStepIds('test.feature', 3);
225
+ scenario = findScenario(envelopes);
226
+ pickleStepIds = gherkinQuery.getPickleStepIds(scenario.steps[0].id);
203
227
  assert_1.default.strictEqual(pickleStepIds.length, 1);
204
228
  attachments = cucumberQuery.getPickleStepAttachments(pickleStepIds);
205
229
  assert_1.default.strictEqual(attachments.length, 1);
@@ -211,18 +235,22 @@ describe('Query', function () {
211
235
  });
212
236
  describe('#getStepMatchArguments(uri, lineNumber)', function () {
213
237
  it("looks up result for step's uri and line", function () { return __awaiter(void 0, void 0, void 0, function () {
238
+ var envelopes, scenario;
214
239
  return __generator(this, function (_a) {
215
240
  switch (_a.label) {
216
- case 0: return [4 /*yield*/, execute("Feature: hello\n Scenario: hi\n Given a passed step\n And I have 567 cukes in my belly\n")];
241
+ case 0:
242
+ envelopes = [];
243
+ return [4 /*yield*/, execute("Feature: hello\n Scenario: ok\n Given a passed step\n And I have 567 cukes in my belly\n ", function (envelope) { return envelopes.push(envelope); })];
217
244
  case 1:
218
245
  _a.sent();
246
+ scenario = findScenario(envelopes);
219
247
  assert_1.default.deepStrictEqual(cucumberQuery
220
- .getStepMatchArgumentsLists(gherkinQuery.getPickleStepIds('test.feature', 3)[0])
248
+ .getStepMatchArgumentsLists(gherkinQuery.getPickleStepIds(scenario.steps[0].id)[0])
221
249
  .map(function (sal) {
222
250
  return sal.stepMatchArguments.map(function (arg) { return arg.parameterTypeName; });
223
251
  }), [[]]);
224
252
  assert_1.default.deepStrictEqual(cucumberQuery
225
- .getStepMatchArgumentsLists(gherkinQuery.getPickleStepIds('test.feature', 4)[0])
253
+ .getStepMatchArgumentsLists(gherkinQuery.getPickleStepIds(scenario.steps[1].id)[0])
226
254
  .map(function (sal) {
227
255
  return sal.stepMatchArguments.map(function (arg) { return arg.parameterTypeName; });
228
256
  }), [['int', 'word']]);
@@ -230,17 +258,204 @@ describe('Query', function () {
230
258
  }
231
259
  });
232
260
  }); });
261
+ describe('#getBeforeHookSteps(pickleId: string)', function () {
262
+ it('returns an empty list when there is no hooks', function () { return __awaiter(void 0, void 0, void 0, function () {
263
+ var envelopes, scenarioId, pickleId;
264
+ return __generator(this, function (_a) {
265
+ switch (_a.label) {
266
+ case 0:
267
+ envelopes = [];
268
+ return [4 /*yield*/, execute("Feature: hello\n Scenario: hi\n Given a passed step\n ", function (envelope) { return envelopes.push(envelope); })];
269
+ case 1:
270
+ _a.sent();
271
+ scenarioId = findScenario(envelopes).id;
272
+ pickleId = gherkinQuery.getPickleIds('test.feature', scenarioId)[0];
273
+ assert_1.default.deepStrictEqual(cucumberQuery.getBeforeHookSteps(pickleId), []);
274
+ return [2 /*return*/];
275
+ }
276
+ });
277
+ }); });
278
+ it('returns one before hook step', function () { return __awaiter(void 0, void 0, void 0, function () {
279
+ var envelopes, scenarioId, pickleId;
280
+ return __generator(this, function (_a) {
281
+ switch (_a.label) {
282
+ case 0:
283
+ envelopes = [];
284
+ return [4 /*yield*/, execute("Feature: hello\n @beforeHook\n Scenario: hi\n Given a passed step\n ", function (envelope) { return envelopes.push(envelope); })];
285
+ case 1:
286
+ _a.sent();
287
+ scenarioId = findScenario(envelopes).id;
288
+ pickleId = gherkinQuery.getPickleIds('test.feature', scenarioId)[0];
289
+ assert_1.default.strictEqual(cucumberQuery.getBeforeHookSteps(pickleId).length, 1);
290
+ return [2 /*return*/];
291
+ }
292
+ });
293
+ }); });
294
+ it('does not return after hook steps', function () { return __awaiter(void 0, void 0, void 0, function () {
295
+ var envelopes, scenarioId, pickleId;
296
+ return __generator(this, function (_a) {
297
+ switch (_a.label) {
298
+ case 0:
299
+ envelopes = [];
300
+ return [4 /*yield*/, execute("Feature: hello\n @afterHook\n Scenario: hi\n Given a passed step\n ", function (envelope) { return envelopes.push(envelope); })];
301
+ case 1:
302
+ _a.sent();
303
+ scenarioId = findScenario(envelopes).id;
304
+ pickleId = gherkinQuery.getPickleIds('test.feature', scenarioId)[0];
305
+ assert_1.default.deepStrictEqual(cucumberQuery.getBeforeHookSteps(pickleId), []);
306
+ return [2 /*return*/];
307
+ }
308
+ });
309
+ }); });
310
+ });
311
+ describe('#getAfterHookSteps(pickleId: string)', function () {
312
+ it('returns an empty list when there is no hooks', function () { return __awaiter(void 0, void 0, void 0, function () {
313
+ var envelopes, scenarioId, pickleId;
314
+ return __generator(this, function (_a) {
315
+ switch (_a.label) {
316
+ case 0:
317
+ envelopes = [];
318
+ return [4 /*yield*/, execute("Feature: hello\n Scenario: hi\n Given a passed step\n ", function (envelope) { return envelopes.push(envelope); })];
319
+ case 1:
320
+ _a.sent();
321
+ scenarioId = findScenario(envelopes).id;
322
+ pickleId = gherkinQuery.getPickleIds('test.feature', scenarioId)[0];
323
+ assert_1.default.deepStrictEqual(cucumberQuery.getAfterHookSteps(pickleId), []);
324
+ return [2 /*return*/];
325
+ }
326
+ });
327
+ }); });
328
+ it('returns one after hook step', function () { return __awaiter(void 0, void 0, void 0, function () {
329
+ var envelopes, scenarioId, pickleId;
330
+ return __generator(this, function (_a) {
331
+ switch (_a.label) {
332
+ case 0:
333
+ envelopes = [];
334
+ return [4 /*yield*/, execute("Feature: hello\n @afterHook\n Scenario: hi\n Given a passed step\n ", function (envelope) { return envelopes.push(envelope); })];
335
+ case 1:
336
+ _a.sent();
337
+ scenarioId = findScenario(envelopes).id;
338
+ pickleId = gherkinQuery.getPickleIds('test.feature', scenarioId)[0];
339
+ assert_1.default.strictEqual(cucumberQuery.getAfterHookSteps(pickleId).length, 1);
340
+ return [2 /*return*/];
341
+ }
342
+ });
343
+ }); });
344
+ it('does not return before hook steps', function () { return __awaiter(void 0, void 0, void 0, function () {
345
+ var envelopes, scenarioId, pickleId;
346
+ return __generator(this, function (_a) {
347
+ switch (_a.label) {
348
+ case 0:
349
+ envelopes = [];
350
+ return [4 /*yield*/, execute("Feature: hello\n @beforeHook\n Scenario: hi\n Given a passed step\n ", function (envelope) { return envelopes.push(envelope); })];
351
+ case 1:
352
+ _a.sent();
353
+ scenarioId = findScenario(envelopes).id;
354
+ pickleId = gherkinQuery.getPickleIds('test.feature', scenarioId)[0];
355
+ assert_1.default.deepStrictEqual(cucumberQuery.getAfterHookSteps(pickleId), []);
356
+ return [2 /*return*/];
357
+ }
358
+ });
359
+ }); });
360
+ });
361
+ describe('#getTestStepResult', function () {
362
+ it('returns one test step result', function () { return __awaiter(void 0, void 0, void 0, function () {
363
+ var emittedMessages, testCase, testStep, results;
364
+ return __generator(this, function (_a) {
365
+ switch (_a.label) {
366
+ case 0:
367
+ emittedMessages = [];
368
+ return [4 /*yield*/, execute("Feature: hello\n Scenario: hi\n Given a passed step\n ", function (message) { return emittedMessages.push(message); })];
369
+ case 1:
370
+ _a.sent();
371
+ testCase = emittedMessages.find(function (child) { return child.testCase; })
372
+ .testCase;
373
+ testStep = testCase.testSteps[0];
374
+ results = cucumberQuery.getTestStepResults(testStep.id);
375
+ assert_1.default.deepStrictEqual(results.length, 1);
376
+ assert_1.default.deepStrictEqual(results[0].status, messages_1.messages.TestStepFinished.TestStepResult.Status.PASSED);
377
+ return [2 /*return*/];
378
+ }
379
+ });
380
+ }); });
381
+ it('returns a result for hook step', function () { return __awaiter(void 0, void 0, void 0, function () {
382
+ var emittedMessages, testCase, testStep, results;
383
+ return __generator(this, function (_a) {
384
+ switch (_a.label) {
385
+ case 0:
386
+ emittedMessages = [];
387
+ return [4 /*yield*/, execute("Feature: hello\n @beforeHook\n Scenario: hi\n Given a passed step\n ", function (message) { return emittedMessages.push(message); })];
388
+ case 1:
389
+ _a.sent();
390
+ testCase = emittedMessages.find(function (child) { return child.testCase; })
391
+ .testCase;
392
+ testStep = testCase.testSteps[0];
393
+ results = cucumberQuery.getTestStepResults(testStep.id);
394
+ assert_1.default.deepStrictEqual(results.length, 1);
395
+ assert_1.default.deepStrictEqual(results[0].status, messages_1.messages.TestStepFinished.TestStepResult.Status.PASSED);
396
+ return [2 /*return*/];
397
+ }
398
+ });
399
+ }); });
400
+ });
401
+ describe('#getHook(HookId)', function () {
402
+ it('returns undefined if the id does not match any hook', function () {
403
+ assert_1.default.strictEqual(cucumberQuery.getHook('tralala'), undefined);
404
+ });
405
+ it('returns the matching hook', function () {
406
+ var hook = messages_1.messages.Hook.create({
407
+ id: 'tralala',
408
+ });
409
+ var envelope = messages_1.messages.Envelope.create({
410
+ hook: hook,
411
+ });
412
+ cucumberQuery.update(envelope);
413
+ assert_1.default.deepStrictEqual(cucumberQuery.getHook('tralala'), hook);
414
+ });
415
+ });
416
+ describe('#getAttachmentByTestStepId', function () {
417
+ it('looks up attachments', function () { return __awaiter(void 0, void 0, void 0, function () {
418
+ var testCases, attachments;
419
+ return __generator(this, function (_a) {
420
+ switch (_a.label) {
421
+ case 0:
422
+ testCases = [];
423
+ return [4 /*yield*/, execute("Feature: hello\n Scenario: ok\n Given a passed step with attachment\n ", function (envelope) {
424
+ if (envelope.testCase) {
425
+ testCases.push(envelope.testCase);
426
+ }
427
+ })];
428
+ case 1:
429
+ _a.sent();
430
+ attachments = cucumberQuery.getTestStepsAttachments([
431
+ testCases[0].testSteps[0].id,
432
+ ]);
433
+ assert_1.default.strictEqual(attachments.length, 1);
434
+ assert_1.default.strictEqual(attachments[0].body, 'Hello');
435
+ return [2 /*return*/];
436
+ }
437
+ });
438
+ }); });
439
+ });
233
440
  });
234
- function execute(gherkinSource) {
441
+ function execute(gherkinSource, messagesHandler) {
442
+ if (messagesHandler === void 0) { messagesHandler = function () { return null; }; }
235
443
  return __awaiter(this, void 0, void 0, function () {
236
- var newId, clock, makeErrorMessage, supportCode, queryUpdateStream, testPlan;
444
+ var newId, clock, stopwatch, makeErrorMessage, supportCode, queryUpdateStream, testPlan;
237
445
  return __generator(this, function (_a) {
238
446
  switch (_a.label) {
239
447
  case 0:
240
448
  newId = messages_1.IdGenerator.incrementing();
241
449
  clock = new IncrementClock_1.default();
242
- makeErrorMessage = ErrorMessageGenerator_1.withFullStackTrace();
243
- supportCode = new SupportCode_1.default(newId, clock, makeErrorMessage);
450
+ stopwatch = new IncrementStopwatch_1.default();
451
+ makeErrorMessage = fake_cucumber_1.withFullStackTrace();
452
+ supportCode = new fake_cucumber_1.SupportCode(newId, clock, stopwatch, makeErrorMessage);
453
+ supportCode.defineBeforeHook(null, '@beforeHook', function () {
454
+ // no-op
455
+ });
456
+ supportCode.defineAfterHook(null, '@afterHook', function () {
457
+ // no-op
458
+ });
244
459
  supportCode.defineStepDefinition(null, 'a passed step', function () {
245
460
  // no-op
246
461
  });
@@ -257,6 +472,7 @@ describe('Query', function () {
257
472
  objectMode: true,
258
473
  write: function (envelope, encoding, callback) {
259
474
  try {
475
+ messagesHandler(envelope);
260
476
  gherkinQuery.update(envelope);
261
477
  cucumberQuery.update(envelope);
262
478
  callback();
@@ -269,8 +485,11 @@ describe('Query', function () {
269
485
  return [4 /*yield*/, pipelinePromise(gherkinMessages(gherkinSource, 'test.feature', newId), queryUpdateStream)];
270
486
  case 1:
271
487
  _a.sent();
272
- testPlan = makeTestPlan_1.default(gherkinQuery, supportCode);
273
- return [4 /*yield*/, testPlan.execute(function (envelope) { return cucumberQuery.update(envelope); })];
488
+ testPlan = fake_cucumber_2.makeTestPlan(gherkinQuery, supportCode, fake_cucumber_2.makeTestCase);
489
+ return [4 /*yield*/, testPlan.execute(function (envelope) {
490
+ messagesHandler(envelope);
491
+ cucumberQuery.update(envelope);
492
+ })];
274
493
  case 2:
275
494
  _a.sent();
276
495
  return [2 /*return*/];
@@ -288,5 +507,15 @@ describe('Query', function () {
288
507
  });
289
508
  return gherkin_1.GherkinStreams.fromSources([source], { newId: newId });
290
509
  }
510
+ function findScenario(envelopes) {
511
+ var gherkinDocument = envelopes.find(function (envelope) { return envelope.gherkinDocument; }).gherkinDocument;
512
+ return gherkinDocument.feature.children.find(function (child) { return child.scenario; })
513
+ .scenario;
514
+ }
515
+ function findBackground(envelopes) {
516
+ var gherkinDocument = envelopes.find(function (envelope) { return envelope.gherkinDocument; }).gherkinDocument;
517
+ return gherkinDocument.feature.children.find(function (child) { return child.background; })
518
+ .background;
519
+ }
291
520
  });
292
521
  //# sourceMappingURL=QueryTest.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"QueryTest.js","sourceRoot":"","sources":["../../test/QueryTest.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"QueryTest.js","sourceRoot":"","sources":["../../test/QueryTest.ts"],"names":[],"mappings":"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"}