UNPKG

enqueuer-cucumber

Version:

Plugin to implement cucumber steps as enqueuer requisitions

229 lines 10.3 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.EnqueuerData = void 0; var debug_1 = __importDefault(require("debug")); var _ = __importStar(require("lodash")); var enqueuer_1 = require("enqueuer"); var requisition_file_pattern_parser_1 = require("enqueuer/js/requisition-runners/requisition-file-pattern-parser"); var cucumber_expressions_1 = require("./cucumber-expressions"); var EnqueuerData = /** @class */ (function () { function EnqueuerData() { this.debugger = { build: debug_1.default('EnqueuerCucumber:EnqueuerData:Build'), runtime: debug_1.default('EnqueuerCucumber:EnqueuerData') }; this.requisitionsCache = new Map(); this.publishersCache = new Map(); this.subscriptionsCache = new Map(); this.groupsCache = new Map(); this.cucumberMatcher = new cucumber_expressions_1.CucumberMatcher(); } EnqueuerData.prototype.initEnqueuer = function () { this.debugger.build('Initializing enqueuer'); var configuration = enqueuer_1.Configuration.getInstance(); this.requisitionFileParser = new requisition_file_pattern_parser_1.RequisitionFilePatternParser(configuration.getFiles()); var enqueuerRequisitions = this.requisitionFileParser.parse(); this.debugger.build('Enqueuer Requisitions loaded: %J', enqueuerRequisitions); this.debugger.build('Building cache for enqueuer requisitions'); this.buildRequisitionsCache(enqueuerRequisitions); if (this.debugger.build.enabled) { this.debugger.build('Requisitions cache ready: %J', Array.from(this.requisitionsCache.keys())); this.debugger.build('Publishers cache ready: %J', Array.from(this.publishersCache.keys())); this.debugger.build('Subscriptions cache ready: %J', Array.from(this.subscriptionsCache.keys())); this.debugger.build('Groups cache ready: %J', Array.from(this.groupsCache.keys())); } }; EnqueuerData.prototype.getRequisitions = function () { return Array.from(this.requisitionsCache.values()); }; EnqueuerData.prototype.getRequisitionNames = function () { return Array.from(this.requisitionsCache.keys()); }; EnqueuerData.prototype.getPublishers = function () { return Array.from(this.publishersCache.values()); }; EnqueuerData.prototype.getPublisherNames = function () { return Array.from(this.publishersCache.keys()); }; EnqueuerData.prototype.getSubscriptions = function () { return Array.from(this.subscriptionsCache.values()); }; EnqueuerData.prototype.getSubscriptionNames = function () { return Array.from(this.subscriptionsCache.keys()); }; EnqueuerData.prototype.getGroups = function () { return Array.from(this.groupsCache.values()); }; EnqueuerData.prototype.getGroupNames = function () { return Array.from(this.groupsCache.keys()); }; EnqueuerData.prototype.getRequisitionStep = function (name, createIfNotExist) { this.debugger.runtime('Searching for a matching requisition step for <<%s>>', name); var result = {}; result.step = this.cloneStep(this.requisitionsCache.get(name)); if (!result.step) { for (var _i = 0, _a = this.getRequisitionNames(); _i < _a.length; _i++) { var reqName = _a[_i]; var values = this.cucumberMatcher.match(reqName, name); if (values && values.length) { var requisition = this.requisitionsCache.get(reqName); if (requisition.variables && requisition.variables.length >= values.length) { result.step = _.chain(requisition) .omit('publishers', 'subscriptions', 'requisitions', 'groups') .clone() .value(); this.mergeStepVariables(result, values); } } } } if (result.step) { result.step.publishers = []; result.step.subscriptions = []; result.step.requisitions = []; delete result.step.groups; } else if (createIfNotExist) { result.step = this.getDefaultRequisition(name); } if (result.step) { this.debugger.runtime('Requisition Step for <<%s>>: %J', name, result); } return result; }; EnqueuerData.prototype.getPublisherStep = function (name) { this.debugger.runtime('Searching for a matching publisher step for <<%s>>', name); var result = {}; result.step = this.cloneStep(this.publishersCache.get(name)); if (!result.step) { for (var _i = 0, _a = this.getPublisherNames(); _i < _a.length; _i++) { var pubName = _a[_i]; var values = this.cucumberMatcher.match(pubName, name); if (values && values.length) { var publisher = this.publishersCache.get(pubName); if (publisher.variables && publisher.variables.length >= values.length) { result.step = _.clone(publisher); this.mergeStepVariables(result, values); } } } } if (result.step) { this.debugger.runtime('Publisher Step for <<%s>>: %J', name, result); } return result; }; EnqueuerData.prototype.getSubscriptionStep = function (name) { this.debugger.runtime('Searching for a matching subscription step for <<%s>>', name); var result = {}; result.step = this.cloneStep(this.subscriptionsCache.get(name)); if (!result.step) { for (var _i = 0, _a = this.getSubscriptionNames(); _i < _a.length; _i++) { var subName = _a[_i]; var values = this.cucumberMatcher.match(subName, name); if (values && values.length) { var subscription = this.subscriptionsCache.get(subName); if (subscription.variables && subscription.variables.length >= values.length) { result.step = _.clone(subscription); this.mergeStepVariables(result, values); } } } } if (result.step) { this.debugger.runtime('Subscription Step for <<%s>>: %J', name, result); } return result; }; EnqueuerData.prototype.getGroupStep = function (name) { this.debugger.runtime('Searching for a matching group step for <<%s>>', name); var result = {}; result.step = this.cloneStep(this.groupsCache.get(name)); if (!result.step) { for (var _i = 0, _a = this.getGroupNames(); _i < _a.length; _i++) { var groupName = _a[_i]; var values = this.cucumberMatcher.match(groupName, name); if (values && values.length) { var group = this.groupsCache.get(groupName); if (group.variables && group.variables.length >= values.length) { result.step = _.clone(group); this.mergeStepVariables(result, values); } } } } if (result.step) { this.debugger.runtime('Group Step for <<%s>>: %J', name, result); } return result; }; EnqueuerData.prototype.getDefaultRequisition = function (name) { return _.clone({ name: name, publishers: [], requisitions: [], subscriptions: [] }); }; EnqueuerData.prototype.mergeStepVariables = function (result, values) { result.variables = {}; values.forEach(function (value, index) { result.variables[result.step.variables[index]] = value; }); }; EnqueuerData.prototype.buildRequisitionsCache = function (requisitions) { var _this = this; requisitions.forEach(function (requisition) { _this.requisitionsCache.set(requisition.name, requisition); if (requisition.publishers) { requisition.publishers.forEach(function (publisher) { _this.publishersCache.set(publisher.name, publisher); }); } if (requisition.subscriptions) { requisition.subscriptions.forEach(function (subscription) { _this.subscriptionsCache.set(subscription.name, subscription); }); } if (requisition.groups) { requisition.groups.forEach(function (group) { _this.groupsCache.set(group.name, group); }); } if (requisition.requisitions) { _this.buildRequisitionsCache(requisition.requisitions); } }); }; EnqueuerData.prototype.cloneStep = function (step) { if (step) { return _.clone(step); } return null; }; return EnqueuerData; }()); exports.EnqueuerData = EnqueuerData; //# sourceMappingURL=enqueuer-data.js.map