UNPKG

cucumber

Version:

The official JavaScript implementation of Cucumber.

80 lines (64 loc) 2.06 kB
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;