Package restx.tests

Source Code of restx.tests.RestxSpecTests

package restx.tests;

import com.google.common.base.Function;
import com.google.common.collect.Collections2;
import com.google.common.collect.Lists;
import org.reflections.scanners.ResourcesScanner;
import org.reflections.util.ClasspathHelper;
import org.reflections.util.ConfigurationBuilder;
import org.reflections.util.FilterBuilder;
import restx.factory.Factory;
import restx.specs.RestxSpec;
import restx.specs.RestxSpecLoader;

import java.io.IOException;
import java.util.List;
import java.util.Set;
import java.util.regex.Pattern;

/**
* A list of specs to be run as tests by a RestxSpecTestsRunner.
*/
public class RestxSpecTests {

    public static Iterable<Object[]> specsAsParametersIn(String location) throws IOException {
        return Collections2.transform(findSpecsIn(location), new Function<RestxSpec, Object[]>() {
            @Override
            public Object[] apply(RestxSpec restxSpec) {
                return new Object[]{restxSpec};
            }
        });
    }

    public static List<RestxSpec> findSpecsIn(String location) throws IOException {
        RestxSpecLoader loader = new RestxSpecLoader(Factory.getInstance());

        Set<String> specResources = new ConfigurationBuilder()
                .setUrls(ClasspathHelper.forPackage(location))
                .setScanners(new ResourcesScanner())
                .filterInputsBy(new FilterBuilder().includePackage(location.replace('/','.')))
                .build()
                .getResources(Pattern.compile(".*\\.spec\\.yaml"));

        List<RestxSpec> loaded = Lists.newArrayList();

        for (String specResource : specResources) {
            loaded.add(loader.load(specResource));
        }

        return loaded;
    }

    private final RestxSpecRule rule;
    private final List<RestxSpec> specs;

    public RestxSpecTests(RestxSpecRule rule, List<RestxSpec> specs) {
        this.rule = rule;
        this.specs = specs;
    }

    public  RestxSpecRule getRule() {
        return rule;
    }
    public List<RestxSpec> getSpecs() {
        return specs;
    }
}
TOP

Related Classes of restx.tests.RestxSpecTests

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.