cucumber
Version:
The official JavaScript implementation of Cucumber.
34 lines (28 loc) • 1 kB
JavaScript
var _ = require('underscore');
var Hook = function(code, options) {
var Cucumber = require('../../cucumber');
var tags = options['tags'] || [];
var self = {
invokeBesideScenario: function invokeBesideScenario(scenario, world, callback) {
if (self.appliesToScenario(scenario))
code.call(world, callback);
else
callback(function(endPostScenarioAroundHook) { endPostScenarioAroundHook(); });
},
appliesToScenario: function appliesToScenario(scenario) {
var astFilter = self.getAstFilter();
return astFilter.isScenarioEnrolled(scenario);
},
getAstFilter: function getAstFilter() {
var tagGroups = Cucumber.TagGroupParser.getTagGroupsFromStrings(tags);
var rules = _.map(tagGroups, function(tagGroup) {
var rule = Cucumber.Ast.Filter.AnyOfTagsRule(tagGroup);
return rule;
});
var astFilter = Cucumber.Ast.Filter(rules);
return astFilter;
}
};
return self;
};
module.exports = Hook;