package fr.sii.ogham.spring.ut.autoconfigure;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
import org.thymeleaf.spring4.SpringTemplateEngine;
import fr.sii.ogham.core.builder.MessagingBuilder;
import fr.sii.ogham.helper.rule.LoggingTestRule;
import fr.sii.ogham.spring.autoconfigure.OghamAutoConfiguration;
import fr.sii.ogham.spring.config.FreeMarkerConfigurer;
import fr.sii.ogham.spring.config.MessagingBuilderConfigurer;
import fr.sii.ogham.spring.config.ThymeLeafConfigurer;
import freemarker.template.Configuration;
@RunWith(MockitoJUnitRunner.class)
public class OghamAutoConfigurationTest {
private OghamAutoConfiguration autoConfiguration;
@Mock SpringTemplateEngine springTemplateEngineMock;
@Mock Configuration freemarkerConfiguration;
@InjectMocks ThymeLeafConfigurer thymeleafConfigurer;
@InjectMocks FreeMarkerConfigurer freeMarkerConfigurer;
@Rule
public final LoggingTestRule loggingRule = new LoggingTestRule();
@Before
public void setUp() {
autoConfiguration = new OghamAutoConfiguration();
}
@Test
public void byDefault() {
// Given
List<MessagingBuilderConfigurer> configurers = Collections.emptyList();
// When
MessagingBuilder builder = autoConfiguration.defaultMessagingBuilder(configurers);
// Then
Assert.assertNotNull(builder.getEmailBuilder().getTemplateBuilder().getFreeMarkerParser());
Assert.assertNotNull(builder.getEmailBuilder().getTemplateBuilder().getThymeleafParser());
Assert.assertFalse(builder.getEmailBuilder().getTemplateBuilder().getThymeleafParser().getEngine() instanceof SpringTemplateEngine);
Assert.assertNotNull(builder.getSmsBuilder().getTemplateBuilder().getFreeMarkerParser());
Assert.assertNotNull(builder.getSmsBuilder().getTemplateBuilder().getThymeleafParser());
Assert.assertFalse(builder.getSmsBuilder().getTemplateBuilder().getThymeleafParser().getEngine() instanceof SpringTemplateEngine);
}
@Test
public void springThymeLeaf() {
// Given
List<MessagingBuilderConfigurer> configurers = Arrays.<MessagingBuilderConfigurer>asList(thymeleafConfigurer);
// When
MessagingBuilder builder = autoConfiguration.defaultMessagingBuilder(configurers);
// Then
Assert.assertNotNull(builder.getEmailBuilder().getTemplateBuilder().getFreeMarkerParser());
Assert.assertNotNull(builder.getEmailBuilder().getTemplateBuilder().getThymeleafParser());
Assert.assertTrue(builder.getEmailBuilder().getTemplateBuilder().getThymeleafParser().getEngine() instanceof SpringTemplateEngine);
Assert.assertNotNull(builder.getSmsBuilder().getTemplateBuilder().getFreeMarkerParser());
Assert.assertNotNull(builder.getSmsBuilder().getTemplateBuilder().getThymeleafParser());
Assert.assertTrue(builder.getSmsBuilder().getTemplateBuilder().getThymeleafParser().getEngine() instanceof SpringTemplateEngine);
}
@Test
public void springFreeMarker() {
// Given
List<MessagingBuilderConfigurer> configurers = Arrays.<MessagingBuilderConfigurer>asList(freeMarkerConfigurer);
// When
MessagingBuilder builder = autoConfiguration.defaultMessagingBuilder(configurers);
// Then
Assert.assertNotNull(builder.getEmailBuilder().getTemplateBuilder().getFreeMarkerParser());
Assert.assertEquals(builder.getEmailBuilder().getTemplateBuilder().getFreeMarkerParser().getConfiguration(), freemarkerConfiguration);
Assert.assertNotNull(builder.getEmailBuilder().getTemplateBuilder().getThymeleafParser());
Assert.assertFalse(builder.getEmailBuilder().getTemplateBuilder().getThymeleafParser().getEngine() instanceof SpringTemplateEngine);
Assert.assertNotNull(builder.getSmsBuilder().getTemplateBuilder().getFreeMarkerParser());
Assert.assertEquals(builder.getSmsBuilder().getTemplateBuilder().getFreeMarkerParser().getConfiguration(), freemarkerConfiguration);
Assert.assertNotNull(builder.getSmsBuilder().getTemplateBuilder().getThymeleafParser());
Assert.assertFalse(builder.getSmsBuilder().getTemplateBuilder().getThymeleafParser().getEngine() instanceof SpringTemplateEngine);
}
@Test
public void springThymeLeafFreeMarker() {
// Given
List<MessagingBuilderConfigurer> configurers = Arrays.<MessagingBuilderConfigurer>asList(thymeleafConfigurer, freeMarkerConfigurer);
// When
MessagingBuilder builder = autoConfiguration.defaultMessagingBuilder(configurers);
// Then
Assert.assertNotNull(builder.getEmailBuilder().getTemplateBuilder().getFreeMarkerParser());
Assert.assertEquals(builder.getEmailBuilder().getTemplateBuilder().getFreeMarkerParser().getConfiguration(), freemarkerConfiguration);
Assert.assertNotNull(builder.getEmailBuilder().getTemplateBuilder().getThymeleafParser());
Assert.assertTrue(builder.getEmailBuilder().getTemplateBuilder().getThymeleafParser().getEngine() instanceof SpringTemplateEngine);
Assert.assertNotNull(builder.getSmsBuilder().getTemplateBuilder().getFreeMarkerParser());
Assert.assertEquals(builder.getSmsBuilder().getTemplateBuilder().getFreeMarkerParser().getConfiguration(), freemarkerConfiguration);
Assert.assertNotNull(builder.getSmsBuilder().getTemplateBuilder().getThymeleafParser());
Assert.assertTrue(builder.getSmsBuilder().getTemplateBuilder().getThymeleafParser().getEngine() instanceof SpringTemplateEngine);
}
}