UNPKG

@amiceli/vitest-cucumber

Version:

vitest tools to use Gherkin feature in unit tests

59 lines (58 loc) 2.19 kB
import { ExpressionStep } from '../../parser/expression/ExpressionStep'; import { Step, } from '../../parser/models'; export function defineSharedStep(type, name, scenarioStepCallback) { const foundStep = new Step(type, name); const params = ExpressionStep.matchStep(foundStep, name); return { key: foundStep.getTitle(), fn: scenarioStepCallback, step: foundStep, params: [ ...params, foundStep.dataTables.length > 0 ? foundStep.dataTables : null, foundStep.docStrings, ].filter((p) => p !== null), }; } export function defineStepToTest(options) { const { parent, stepDetails, stepType, scenarioStepCallback } = options; const foundStep = parent.checkIfStepExists(stepType, stepDetails); const params = ExpressionStep.matchStep(foundStep, stepDetails); foundStep.isCalled = true; return { key: foundStep.getTitle(), fn: scenarioStepCallback, step: foundStep, params: [ ...params, foundStep.dataTables.length > 0 ? foundStep.dataTables : null, foundStep.docStrings, ].filter((p) => p !== null), }; } export function updatePredefinedStepsAccordingLevel(steps) { const finallySteps = steps.rulePredefinedSteps; finallySteps.push(...steps.featurePredefinedSteps.filter((featureStep) => { return (finallySteps.find((s) => { return (s.step.type === featureStep.step.type && s.step.details === featureStep.step.details); }) === undefined); })); finallySteps.push(...steps.globallyPredefinedSteps.filter((globalStep) => { return (finallySteps.find((s) => { return (s.step.type === globalStep.step.type && s.step.details === globalStep.step.details); }) === undefined); })); return finallySteps; } export function orderStepsToRun(parent, steps) { const orderedSteps = []; for (const step of parent.steps) { const defineStep = steps.find((s) => s.step.matchStep(step)); if (defineStep) { orderedSteps.push(defineStep); } } return orderedSteps; }