package cucumber.runtime.java.needle.config; import static org.hamcrest.CoreMatchers.is; import static org.junit.Assert.assertThat; import java.util.HashSet; import java.util.Set; import javax.inject.Inject; import javax.inject.Named; import org.junit.Test; import cucumber.api.needle.InjectionProviderInstancesSupplier; import cucumber.api.needle.NeedleInjectionProvider; import cucumber.runtime.java.needle.injection.NamedInjectionProvider; import de.akquinet.jbosscc.needle.NeedleTestcase; import de.akquinet.jbosscc.needle.annotation.ObjectUnderTest; import de.akquinet.jbosscc.needle.injection.InjectionProvider; public class CollectInjectionProvidersFromStepsInstanceTest { private final CollectInjectionProvidersFromStepsInstance function = CollectInjectionProvidersFromStepsInstance.INSTANCE; @NeedleInjectionProvider private final InjectionProviderInstancesSupplier supplier = new InjectionProviderInstancesSupplier() { @Override public Set<InjectionProvider<?>> get() { final HashSet<InjectionProvider<?>> result = new HashSet<InjectionProvider<?>>(); result.add(NamedInjectionProvider.forNamedValue("foo", "bar")); return result; } }; private static class MyNeedleTestcase extends NeedleTestcase { public MyNeedleTestcase(final InjectionProvider<?>... injectionProvider) { super(injectionProvider); } protected void initMyTestcase(final Object test) throws Exception { initTestcase(test); } } public static class A { @Inject @Named("foo") private String bar; } @ObjectUnderTest private A a; @Test public void shouldAddInjectionProviders() throws Exception { final InjectionProvider<?>[] injectionProviders = function.apply(this); assertThat(injectionProviders.length, is(1)); new MyNeedleTestcase(injectionProviders).initMyTestcase(this); assertThat(a.bar, is("bar")); } }