Package com.technophobia.substeps.runner.builder

Source Code of com.technophobia.substeps.runner.builder.FeatureNodeBuilder

/*
*  Copyright Technophobia Ltd 2012
*
*   This file is part of Substeps.
*
*    Substeps is free software: you can redistribute it and/or modify
*    it under the terms of the GNU Lesser General Public License as published by
*    the Free Software Foundation, either version 3 of the License, or
*    (at your option) any later version.
*
*    Substeps is distributed in the hope that it will be useful,
*    but WITHOUT ANY WARRANTY; without even the implied warranty of
*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
*    GNU Lesser General Public License for more details.
*
*    You should have received a copy of the GNU Lesser General Public License
*    along with Substeps.  If not, see <http://www.gnu.org/licenses/>.
*/
package com.technophobia.substeps.runner.builder;

import java.util.Collections;
import java.util.List;
import java.util.Set;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.google.common.collect.Lists;
import com.technophobia.substeps.execution.Feature;
import com.technophobia.substeps.execution.node.FeatureNode;
import com.technophobia.substeps.execution.node.ScenarioNode;
import com.technophobia.substeps.model.FeatureFile;
import com.technophobia.substeps.model.Scenario;
import com.technophobia.substeps.runner.TestParameters;

public class FeatureNodeBuilder {

    private static final int _2 = 2;

    private static final Logger log = LoggerFactory.getLogger(FeatureNodeBuilder.class);

    private final TestParameters parameters;
    private final ScenarioNodeBuilder scenarioNodeBuilder;

    FeatureNodeBuilder(TestParameters parameters) {

        this.parameters = parameters;
        this.scenarioNodeBuilder = new ScenarioNodeBuilder(parameters);
    }

    public FeatureNode build(final FeatureFile featureFile) {

        if (parameters.isRunnable(featureFile)) {

            return buildRunnableFeatureNode(featureFile);

        } else {
            log.debug("feature not runnable: " + featureFile.toString());
            return null;
        }

    }

    private FeatureNode buildRunnableFeatureNode(FeatureFile featureFile) {

        List<ScenarioNode<?>> scenarioNodes = Lists.newArrayListWithExpectedSize(featureFile.getScenarios().size());

        Set<String> tags = featureFile.getTags() != null ? featureFile.getTags() : Collections.<String> emptySet();

        for (final Scenario scenario : featureFile.getScenarios()) {

            if (scenario != null) {

                ScenarioNode<?> scenarioNode = scenarioNodeBuilder.build(scenario, tags, _2);
                if (scenarioNode != null) {

                    scenarioNodes.add(scenarioNode);
                }
            }
        }

        final Feature feature = new Feature(featureFile.getName(), featureFile.getSourceFile().getName());

        final FeatureNode featureNode = new FeatureNode(feature, scenarioNodes, tags);

        featureNode.setFileUri(featureFile.getSourceFile().getAbsolutePath());
        featureNode.setLineNumber(0);

        return featureNode;
    }

}
TOP

Related Classes of com.technophobia.substeps.runner.builder.FeatureNodeBuilder

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.