UNPKG

enqueuer-cucumber

Version:

Plugin to implement cucumber steps as enqueuer requisitions

173 lines 8.07 kB
'use strict'; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.CucumberStepsBuilder = void 0; var assert = require("assert"); var cucumber_1 = require("@cucumber/cucumber"); var _ = __importStar(require("lodash")); var debug_1 = __importDefault(require("debug")); var CucumberStepsBuilder = /** @class */ (function () { function CucumberStepsBuilder() { this.debugger = { build: debug_1.default('EnqueuerCucumber:Steps:Build'), runtime: debug_1.default('EnqueuerCucumber:Steps') }; } CucumberStepsBuilder.prototype.createGivenStep = function (requisition) { var self = this; this.debugger.build('Creating Given Step for requisition <<%s>>', requisition.name); cucumber_1.Given(requisition.name, this.createCucumberHook(requisition, function () { self.checkRequisitionExecution(this.testReport, requisition); })); }; CucumberStepsBuilder.prototype.createWhenStep = function (publisher) { var self = this; this.debugger.build('Creating When Step for publisher <<%s>>', publisher.name); cucumber_1.When(publisher.name, this.createCucumberHook(publisher, function () { self.checkPublisherExecution(this.testReport, publisher); })); }; CucumberStepsBuilder.prototype.createThenStep = function (subscription) { var self = this; this.debugger.build('Creating Then Step for subscription <<%s>>', subscription.name); cucumber_1.Then(subscription.name, this.createCucumberHook(subscription, function () { self.checkSubscriptionExecution(this.testReport, subscription); })); }; CucumberStepsBuilder.prototype.createGroupStep = function (group) { var step = this.getCucumberStepFunction(group.step); var self = this; this.debugger.build('Creating <<%s>> Step for group <<%s>>', group.step, group.name); step(group.name, this.createCucumberHook(group, function () { var _this = this; if (group.subscriptions) { group.subscriptions.forEach(function (subscription) { return self.checkSubscriptionExecution(_this.testReport, subscription); }); } if (group.publishers) { group.publishers.forEach(function (publisher) { return self.checkPublisherExecution(_this.testReport, publisher); }); } if (group.requisitions) { group.requisitions.forEach(function (requisition) { return self.checkRequisitionExecution(_this.testReport, requisition); }); } })); }; CucumberStepsBuilder.prototype.checkRequisitionExecution = function (testReport, requisition) { var requisitionReport = this.findRequisitionReport(testReport, requisition.name); this.checkTests(requisition, requisitionReport); }; CucumberStepsBuilder.prototype.checkSubscriptionExecution = function (testReport, subscription) { var subscriptionReport = this.findSubscriptionReport(testReport, subscription.name); this.checkTests(subscription, subscriptionReport); }; CucumberStepsBuilder.prototype.checkPublisherExecution = function (testReport, publisher) { var publisherReport = this.findPublisherReport(testReport, publisher.name); this.checkTests(publisher, publisherReport); }; CucumberStepsBuilder.prototype.checkTests = function (step, testReport) { this.debugger.runtime('Enqueuer report for <<%s>>: %J', step.name, testReport); if (testReport && testReport.hooks) { _.values(testReport.hooks).forEach(function (hook) { hook.tests.forEach(function (test) { assert(test.valid, test.description); }); }); } }; CucumberStepsBuilder.prototype.getCucumberStepFunction = function (name) { if (name) { if (name.toLowerCase() === 'then') { return cucumber_1.Then; } if (name.toLowerCase() === 'when') { return cucumber_1.When; } if (name.toLowerCase() === 'given') { return cucumber_1.Given; } } return cucumber_1.Then; }; CucumberStepsBuilder.prototype.findSubscriptionReport = function (requisitions, name) { if (!requisitions) { return null; } var subscriptionReport = null; for (var _i = 0, requisitions_1 = requisitions; _i < requisitions_1.length; _i++) { var requisition = requisitions_1[_i]; var subscriptions = requisition.subscriptions || []; subscriptionReport = subscriptions.find(function (sub) { return name === sub.name; }); if (subscriptionReport) { return subscriptionReport; } subscriptionReport = this.findSubscriptionReport(requisition.requisitions, name); if (subscriptionReport) { return subscriptionReport; } } return subscriptionReport; }; CucumberStepsBuilder.prototype.findPublisherReport = function (requisitions, name) { if (!requisitions) { return null; } var publisherReport = null; for (var _i = 0, requisitions_2 = requisitions; _i < requisitions_2.length; _i++) { var requisition = requisitions_2[_i]; var publishers = requisition.publishers || []; publisherReport = publishers.find(function (pub) { return name === pub.name; }); if (publisherReport) { return publisherReport; } publisherReport = this.findPublisherReport(requisition.requisitions, name); if (publisherReport) { return publisherReport; } } return publisherReport; }; CucumberStepsBuilder.prototype.findRequisitionReport = function (requisitions, name) { if (!requisitions) { return null; } var requisitionReport = requisitions.find(function (req) { return name === req.name; }); if (!requisitionReport) { for (var _i = 0, requisitions_3 = requisitions; _i < requisitions_3.length; _i++) { var requisition = requisitions_3[_i]; requisitionReport = this.findRequisitionReport(requisition.requisitions, name); if (requisitionReport) { return requisitionReport; } } } return requisitionReport; }; CucumberStepsBuilder.prototype.createCucumberHook = function (step, stepDefinition) { var params = (step.variables || []).join(','); // tslint:disable-next-line:no-eval return eval("(function(){ return function(" + params + ") {return stepDefinition.apply(this);}})();"); }; return CucumberStepsBuilder; }()); exports.CucumberStepsBuilder = CucumberStepsBuilder; //# sourceMappingURL=cucumber-steps.js.map