jest-cucumber
Version:
Execute Gherkin scenarios in Jest
67 lines • 3.71 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.checkThatFeatureFileAndStepDefinitionsHaveSameScenarios = void 0;
var scenario_generation_1 = require("../code-generation/scenario-generation");
var findScenarioFromParsedFeature = function (errors, parsedScenarios, scenarioTitle, errorOptions) {
var matchingScenarios = [];
if (parsedScenarios) {
matchingScenarios = parsedScenarios
.filter(function (parsedScenario) { return parsedScenario.title.toLowerCase() === scenarioTitle.toLowerCase(); });
}
if (matchingScenarios.length === 0 && errorOptions.missingScenarioInFeature) {
errors.push("No scenarios found in feature file that match scenario title \"" + scenarioTitle + ".\"");
return null;
}
else if (matchingScenarios.length > 1 && errorOptions.missingStepInFeature) {
errors.push("More than one scenario found in feature file that match scenario title \"" + scenarioTitle + "\"");
return null;
}
return matchingScenarios[0];
};
var findScenarioFromStepDefinitions = function (errors, scenariosFromStepDefinitions, scenario, errorOptions) {
var scenarioTitle = scenario.title;
var matchingScenarios = scenariosFromStepDefinitions
.filter(function (scenarioFromStepDefinitions) {
return scenarioFromStepDefinitions.title.toLocaleLowerCase() === scenarioTitle.toLocaleLowerCase();
});
if (matchingScenarios.length === 0 && errorOptions.missingScenarioInStepDefinitions) {
// tslint:disable-next-line:max-line-length
errors.push("Feature file has a scenario titled \"" + scenarioTitle + "\", but no match found in step definitions. Try adding the following code:\n\n" + scenario_generation_1.generateScenarioCode(scenario));
return null;
}
else if (matchingScenarios.length > 1 && errorOptions.missingScenarioInStepDefinitions) {
errors.push("More than one scenario found in step definitions matching scenario title \"" + scenarioTitle + "\"");
return null;
}
return matchingScenarios[0];
};
exports.checkThatFeatureFileAndStepDefinitionsHaveSameScenarios = function (parsedFeature, featureFromStepDefinitions) {
var errors = [];
var parsedScenarios = [];
if (parsedFeature && parsedFeature.scenarios && parsedFeature.scenarios.length) {
parsedScenarios = parsedScenarios.concat(parsedFeature.scenarios);
}
if (parsedFeature && parsedFeature.scenarioOutlines && parsedFeature.scenarioOutlines.length) {
parsedScenarios = parsedScenarios.concat(parsedFeature.scenarioOutlines);
}
if (parsedFeature.options && parsedFeature.options.errors === false) {
return;
}
if (featureFromStepDefinitions
&& featureFromStepDefinitions.scenarios
&& featureFromStepDefinitions.scenarios.length) {
featureFromStepDefinitions.scenarios.forEach(function (scenarioFromStepDefinitions) {
findScenarioFromParsedFeature(errors, parsedScenarios, scenarioFromStepDefinitions.title, parsedFeature.options.errors);
});
}
parsedScenarios = parsedScenarios.filter(function (scenario) { return !scenario.skippedViaTagFilter; });
if (parsedScenarios && parsedScenarios.length) {
parsedScenarios.forEach(function (parsedScenario) {
findScenarioFromStepDefinitions(errors, featureFromStepDefinitions && featureFromStepDefinitions.scenarios, parsedScenario, parsedFeature.options.errors);
});
}
if (errors.length) {
throw new Error(errors.join('\n\n'));
}
};
//# sourceMappingURL=scenario-validation.js.map