package org.jbehave.core.steps.groovy;
import static java.util.Arrays.asList;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.equalTo;
import static org.jbehave.core.io.CodeLocations.codeLocationFromClass;
import java.util.List;
import org.hamcrest.MatcherAssert;
import org.hamcrest.Matchers;
import org.jbehave.core.configuration.MostUsefulConfiguration;
import org.jbehave.core.configuration.groovy.GroovyContext;
import org.jbehave.core.configuration.groovy.GroovyResourceFinder;
import org.jbehave.core.configuration.groovy.GroovyContext.GroovyClassInstantiationFailed;
import org.junit.Test;
public class GroovyStepsFactoryBehaviour {
@Test
public void shouldCreateStepsInstancesFromGroovyWhenAnnotated() {
GroovyResourceFinder resourceFinder = new GroovyResourceFinder(codeLocationFromClass(this.getClass()),
"**/steps/groovy/*.groovy", "**/invalidSteps.groovy");
GroovyStepsFactory factory = new GroovyStepsFactory(new MostUsefulConfiguration(), new GroovyContext(resourceFinder));
List<Class<?>> types = factory.stepsTypes();
MatcherAssert.assertThat(types.size(), Matchers.equalTo(1));
assertThat(types.get(0).getSimpleName(), equalTo("AnnotatedSteps"));
}
@Test(expected = GroovyClassInstantiationFailed.class)
public void shouldNotCreateStepsInstancesFromGroovyWhenResourceInvalid() {
GroovyStepsFactory factory = new GroovyStepsFactory(new MostUsefulConfiguration(),
new GroovyContext(asList("/org/jbehave/core/steps/groovy/invalidSteps.groovy")));
factory.stepsTypes();
}
}