cucumber
Version:
The official JavaScript implementation of Cucumber.
79 lines (63 loc) • 1.96 kB
JavaScript
var Feature = function(keyword, name, description, line) {
var Cucumber = require('../../cucumber');
var background;
var scenarios = Cucumber.Type.Collection();
var tags = [];
var self = {
getKeyword: function getKeyword() {
return keyword;
},
getName: function getName() {
return name;
},
getDescription: function getDescription() {
return description;
},
getLine: function getLine() {
return line;
},
addBackground: function addBackground(newBackground) {
background = newBackground;
},
getBackground: function getBackground() {
return background;
},
hasBackground: function hasBackground() {
return (typeof(background) != 'undefined');
},
addScenario: function addScenario(scenario) {
var background = self.getBackground();
scenario.setBackground(background);
scenarios.add(scenario);
},
getLastScenario: function getLastScenario() {
return scenarios.getLast();
},
addTags: function setTags(newTags) {
tags = tags.concat(newTags);
},
getTags: function getTags() {
return tags;
},
acceptVisitor: function acceptVisitor(visitor, callback) {
self.instructVisitorToVisitBackground(visitor, function() {
self.instructVisitorToVisitScenarios(visitor, callback);
});
},
instructVisitorToVisitBackground: function instructVisitorToVisitBackground(visitor, callback) {
if (self.hasBackground()) {
var background = self.getBackground();
visitor.visitBackground(background, callback);
} else {
callback();
}
},
instructVisitorToVisitScenarios: function instructVisitorToVisitScenarios(visitor, callback) {
scenarios.forEach(function(scenario, iterate) {
visitor.visitScenario(scenario, iterate);
}, callback);
}
};
return self;
};
module.exports = Feature;