package org.trimou.tests.cdi.resolver; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotEquals; import static org.junit.Assert.assertNotNull; import static org.trimou.tests.IntegrationTestUtils.createCDITestArchiveBase; import static org.trimou.tests.IntegrationTestUtils.resolve; import java.util.List; import java.util.Map; import javax.inject.Inject; import org.jboss.arquillian.container.test.api.Deployment; import org.jboss.arquillian.junit.Arquillian; import org.jboss.shrinkwrap.api.spec.WebArchive; import org.junit.Test; import org.junit.runner.RunWith; import org.trimou.Mustache; import org.trimou.engine.MustacheEngine; import org.trimou.tests.cdi.MustacheEngineProducer; import org.trimou.util.ImmutableMap; import org.trimou.util.Strings; /** * * @author Martin Kouba */ @RunWith(Arquillian.class) public class BasicCDIBeanResolverTest { @Deployment public static WebArchive createTestArchive() { return createCDITestArchiveBase().addClasses(Alpha.class, Bravo.class, Charlie.class, Delta.class, BeanWithId.class, MustacheEngineProducer.class).addAsLibraries( resolve("org.trimou:trimou-extension-cdi")); } @Inject MustacheEngine engine; @Test public void testInterpolation(Alpha alpha, Bravo bravo, Charlie charlie) { assertNotNull(alpha); assertNotNull(bravo); assertNotNull(charlie); assertNotNull(engine); Mustache mustache = engine .compileMustache( "cdi_bean_resolver", "{{hello}}: {{#alpha}}{{id}} {{bravo.age}}{{/alpha}} {{bravo.getId}} {{charlie.id}}{{neverExisted}}"); String result = String.format("Hello: %s 78 %s %s", alpha.getId(), bravo.getId(), charlie.getId()); Map<String, Object> data = ImmutableMap.of("hello", "Hello"); assertEquals(result, mustache.render(data)); assertEquals(result, mustache.render(data)); } @Test public void testDependentBeans() { Delta.reset(); Mustache mustache = engine .compileMustache( "dependent_destroyed", "{{delta.createdAt}}|{{delta.createdAt}}|{{#delta}}{{createdAt}}:{{createdAt}}{{/delta}}"); String result = mustache.render(null); assertNotNull(result); List<String> parts = Strings.split(result, "|"); assertEquals(3, parts.size()); assertNotEquals(Long.valueOf(parts.get(0)), Long.valueOf(parts.get(1))); List<String> nestedParts = Strings.split(parts.get(2), ":"); assertNotEquals(Long.valueOf(parts.get(0)), Long.valueOf(nestedParts.get(0))); assertEquals(nestedParts.get(0), nestedParts.get(1)); assertEquals(3, Delta.destructions.size()); assertEquals(Long.valueOf(parts.get(0)), Delta.destructions.get(0)); assertEquals(Long.valueOf(parts.get(1)), Delta.destructions.get(1)); assertEquals(Long.valueOf(nestedParts.get(0)), Delta.destructions.get(2)); } }