cucumber
Version:
The official JavaScript implementation of Cucumber.
80 lines (64 loc) • 2.06 kB
JavaScript
var Scenario = function(keyword, name, description, line) {
var Cucumber = require('../../cucumber');
var background;
var steps = Cucumber.Type.Collection();
var tags = [];
var self = {
setBackground: function setBackground(newBackground) {
background = newBackground;
},
getKeyword: function getKeyword() {
return keyword;
},
getName: function getName() {
return name;
},
getDescription: function getDescription() {
return description;
},
getLine: function getLine() {
return line;
},
getBackground: function getBackground() {
return background;
},
addStep: function addStep(step) {
var lastStep = self.getLastStep();
step.setPreviousStep(lastStep);
steps.add(step);
},
getLastStep: function getLastStep() {
return steps.getLast();
},
addTags: function setTags(newTags) {
tags = tags.concat(newTags);
},
getTags: function getTags() {
return tags;
},
acceptVisitor: function acceptVisitor(visitor, callback) {
self.instructVisitorToVisitBackgroundSteps(visitor, function() {
self.instructVisitorToVisitScenarioSteps(visitor, callback);
});
},
instructVisitorToVisitBackgroundSteps: function instructVisitorToVisitBackgroundSteps(visitor, callback) {
var background = self.getBackground();
if (typeof(background) != 'undefined') {
var steps = background.getSteps();
self.instructVisitorToVisitSteps(visitor, steps, callback);
} else {
callback();
}
},
instructVisitorToVisitScenarioSteps: function instructVisitorToVisitScenarioSteps(visitor, callback) {
self.instructVisitorToVisitSteps(visitor, steps, callback);
},
instructVisitorToVisitSteps: function instructVisitorToVisitSteps(visitor, steps, callback) {
steps.forEach(function(step, iterate) {
visitor.visitStep(step, iterate);
}, callback);
}
};
return self;
};
module.exports = Scenario;