public static Object enrich(final Object instance) { for (final TestEnricher enricher : TEST_ENRICHERS) { try { enricher.enrich(instance); } catch (final Exception e) { // no-op: don't make all enrichment fail because of one enricher } } return instance; }
/** * Enrich the method arguments of a method call.<br/> * The Object[] index will match the method parameterType[] index. * * @return the argument values */ private Object[] enrichArguments(Method method, Collection<TestEnricher> enrichers) { Object[] values = new Object[method.getParameterTypes().length]; if (method.getParameterTypes().length == 0) { return values; } for (TestEnricher enricher : enrichers) { mergeValues(values, enricher.resolve(method)); } return values; }
private void enrichContainerObjectBeforeCube() { for (TestEnricher enricher : enrichers) { boolean requiresDockerInstanceCreated = enricher instanceof HostPortTestEnricher || enricher instanceof CubeIpTestEnricher; if (!requiresDockerInstanceCreated) { enricher.enrich(containerObjectInstance); } } }
/** * Enrich the method arguments of a method call.<br/> * The Object[] index will match the method parameterType[] index. * * @return the argument values */ private Object[] enrichArguments(Method method, Collection<TestEnricher> enrichers) { Object[] values = new Object[method.getParameterTypes().length]; if (method.getParameterTypes().length == 0) { return values; } for (TestEnricher enricher : enrichers) { mergeValues(values, enricher.resolve(method)); } return values; }
private void enrichContainerObjectBeforeCube() { for (TestEnricher enricher : enrichers) { boolean requiresDockerInstanceCreated = enricher instanceof HostPortTestEnricher || enricher instanceof CubeIpTestEnricher; if (!requiresDockerInstanceCreated) { enricher.enrich(containerObjectInstance); } } }
/** * Enrich the method arguments of a method call.<br/> * The Object[] index will match the method parameterType[] index. * * @return the argument values */ private Object[] enrichArguments(Method method, Collection<TestEnricher> enrichers) { Object[] values = new Object[method.getParameterTypes().length]; if (method.getParameterTypes().length == 0) { return values; } for (TestEnricher enricher : enrichers) { mergeValues(values, enricher.resolve(method)); } return values; }
/** * Performs further enrichment on the given instance with the given search context. That means all instances * {@link TestEnricher} and {@link SearchContextTestEnricher} are invoked. * * @param searchContext * @param target */ protected static void enrichRecursively(SearchContext searchContext, Object target) { for (TestEnricher enricher : serviceLoader.get().all(TestEnricher.class)) { if (!enricher.getClass().equals(GrapheneEnricher.class)) { enricher.enrich(target); } } for (SearchContextTestEnricher enricher : getSortedSearchContextEnrichers(serviceLoader)) { enricher.enrich(searchContext, target); } }
/** * Enrich the method arguments of a method call.<br/> * The Object[] index will match the method parameterType[] index. * * @return the argument values */ private Object[] enrichArguments(Method method, Collection<TestEnricher> enrichers) { Object[] values = new Object[method.getParameterTypes().length]; if (method.getParameterTypes().length == 0) { return values; } for (TestEnricher enricher : enrichers) { mergeValues(values, enricher.resolve(method)); } return values; }
/** * Performs further enrichment on the given instance with the given search context. That means all instances * {@link TestEnricher} and {@link SearchContextTestEnricher} are invoked. * * @param searchContext * @param target */ protected static void enrichRecursively(SearchContext searchContext, Object target) { for (TestEnricher enricher : serviceLoader.get().all(TestEnricher.class)) { if (!enricher.getClass().equals(GrapheneEnricher.class)) { enricher.enrich(target); } } for (SearchContextTestEnricher enricher : getSortedSearchContextEnrichers(serviceLoader)) { enricher.enrich(searchContext, target); } }
/** * Enrich the method arguments of a method call.<br/> * The Object[] index will match the method parameterType[] index. * * @return the argument values */ private Object[] enrichArguments(Method method, Collection<TestEnricher> enrichers) { Object[] values = new Object[method.getParameterTypes().length]; if (method.getParameterTypes().length == 0) { return values; } for (TestEnricher enricher : enrichers) { mergeValues(values, enricher.resolve(method)); } return values; }
@Test public void when_WebElement_is_injected_then_it_is_first_evaluated_at_first_interaction() { WebElement element = mock(WebElement.class); when(browser.findElement(any(By.class))).thenReturn(element); TPageFragment fragment = new TPageFragment(); getGrapheneEnricher().enrich(fragment); verifyZeroInteractions(browser, element); fragment.getElement().click(); fragment.getElement().click(); // the search for element should be done for every invocation verify(browser, times(2)).findElement(any(By.class)); verify(element, times(2)).click(); verifyNoMoreInteractions(browser, element); }
/** * Enrich the method arguments of a method call.<br/> * The Object[] index will match the method parameterType[] index. * * @param method method to enrich arguments * @return the argument values */ private Object[] enrichArguments(Method method, Collection<TestEnricher> enrichers) { Object[] values = new Object[method.getParameterTypes().length]; if (method.getParameterTypes().length == 0) { return values; } for (TestEnricher enricher : enrichers) { mergeValues(values, enricher.resolve(method)); } return values; }
@Before public void prepare() { rootElement = mock(WebElement.class, new StaleElementAnswer()); webElement = mock(WebElement.class, new StaleElementAnswer()); when(browser.findElement(any(By.class))).thenReturn(rootElement); when(rootElement.findElement(any(By.class))).thenReturn(webElement); page = new Page(); getGrapheneEnricher().enrich(page); }
@Test public void testAbstractTypeResolveMethod() throws NoSuchMethodException { thrown.expect(PageObjectInitializationException.class); getGrapheneEnricher() .resolve(AbstractTypeMethodParamTest.class.getMethod("methodToResolve", AbstractPageType.class)); }
@Test public void shouldCallAllEnrichers() throws Exception { Mockito.when(serviceLoader.all(TestEnricher.class)).thenReturn(Arrays.asList(enricher, enricher)); bind(SuiteScoped.class, ServiceLoader.class, serviceLoader); fire(new Before(this, getClass().getMethod("shouldCallAllEnrichers"))); Mockito.verify(enricher, Mockito.times(2)).enrich(this); assertEventFired(BeforeEnrichment.class, 1); assertEventFired(AfterEnrichment.class, 1); } }
@Test public void testNoArgConstructorResolveMethod() throws NoSuchMethodException { thrown.expect(PageObjectInitializationException.class); getGrapheneEnricher().resolve(NoArgConstructorMethodParamTest.class.getMethod("methodToResolve", NoArgConstructorMethodParamTest.WrongPageObject.class)); }
@Test public void testMissingNoArgConstructor() { NoArgConstructorTest target = new NoArgConstructorTest(); getGrapheneEnricher().enrich(target); Assert.assertNull(target.pageFragment); }
@Test public void shouldBeAbleToInjectBaseContextOnMethod() throws Exception { Method resourceMethod = ObjectClass.class.getMethod("test", Object.class); Mockito.when( resourceProvider.lookup( (ArquillianResource) Mockito.any(), Mockito.argThat(new MethodInjectionAnnotationMatcher()))) .thenReturn(resource); TestEnricher enricher = new ArquillianResourceTestEnricher(); injector.get().inject(enricher); Object[] result = enricher.resolve(resourceMethod); Assert.assertEquals(resource, result[0]); }
@Test(expected = PageFragmentInitializationException.class) public void testAbstractType() { AbstractTypeTest target = new AbstractTypeTest(); getGrapheneEnricher().enrich(target); Assert.assertNotNull(target.pageFragment); }
@Test public void shouldBeAbleToInjectBaseContextOnMethodWithQualifier() throws Exception { Method resourceMethod = ObjectClass.class.getMethod("testWithQualifier", Object.class); Mockito.when( resourceProvider.lookup( (ArquillianResource) Mockito.any(), Mockito.argThat( new CustomAnnotationMatcher( resourceMethod.getParameterAnnotations()[0][1], ResourceProvider.MethodInjection.class)))) .thenReturn(resource); TestEnricher enricher = new ArquillianResourceTestEnricher(); injector.get().inject(enricher); Object[] result = enricher.resolve(resourceMethod); Assert.assertEquals(resource, result[0]); }