package net.rrm.ehour.config.service;
import net.rrm.ehour.appconfig.EhourHomeUtil;
import net.rrm.ehour.appconfig.EhourSystemConfig;
import net.rrm.ehour.config.EhourConfigStub;
import net.rrm.ehour.config.LocaleUtil;
import net.rrm.ehour.config.TranslationDiscovery;
import net.rrm.ehour.domain.AuditType;
import net.rrm.ehour.domain.Configuration;
import net.rrm.ehour.persistence.config.dao.BinaryConfigurationDao;
import net.rrm.ehour.persistence.config.dao.ConfigurationDao;
import net.rrm.ehour.persistence.value.ImageLogo;
import org.junit.Before;
import org.junit.Test;
import org.mockito.ArgumentCaptor;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import java.util.Arrays;
import java.util.List;
import static org.hamcrest.Matchers.isIn;
import static org.junit.Assert.*;
import static org.mockito.Mockito.*;
/**
* @author thies (thies@te-con.nl)
* Date: 1/12/11 9:55 PM
*/
public class ConfigurationServiceImplTest {
private ConfigurationServiceImpl configurationService;
@Mock
private ConfigurationDao configDAO;
@Mock
private BinaryConfigurationDao binaryConfigDao;
@Before
public void setUp() {
EhourHomeUtil.setEhourHome("src/test/resources");
configurationService = new ConfigurationServiceImpl();
MockitoAnnotations.initMocks(this);
configurationService.setConfigDao(configDAO);
configurationService.setBinConfigDAO(binaryConfigDao);
TranslationDiscovery discovery = new TranslationDiscovery(new EhourSystemConfig());
discovery.setTranslations(Arrays.asList("en", "nl"));
configurationService.setTranslationDiscovery(discovery);
}
@Test
public void shouldReturnDefaultExcelLogo() {
when(binaryConfigDao.findById("excelHeaderLogo")).thenReturn(null);
ImageLogo logo = configurationService.getExcelLogo();
assertTrue(logo.getImageData().length > 1);
}
@Test
public void shouldGetConfiguration() {
List<Configuration> configs = Arrays.asList(new Configuration("availableTranslations", "en,nl"),
new Configuration("completeDayHours", "8"),
new Configuration("localeCurrency", "nlNl"),
new Configuration("localeLanguage", "nlNl"),
new Configuration("localeCountry", "nlNl"),
new Configuration("showTurnOver", "true"),
new Configuration("timeZone", "CET"),
new Configuration("mailFrom", "ik@jij.net"),
new Configuration("mailSmtp", "localhost"),
new Configuration("demoMode", "false"),
new Configuration("splitAdminRole", "true"));
when(configDAO.findAll()).thenReturn(configs);
EhourConfigStub configuration = configurationService.getConfiguration();
assertTrue(configuration.isShowTurnover());
assertTrue(configuration.isSplitAdminRole());
}
@Test
public void shouldPersistConfiguration() {
EhourConfigStub stub = new EhourConfigStub();
stub.setCompleteDayHours(8);
stub.setLocaleFormatting(LocaleUtil.forLanguageTag("en-US"));
stub.setDontForceLanguage(true);
stub.setShowTurnover(true);
stub.setMailFrom("re");
stub.setMailSmtp("ee");
stub.setAuditType(AuditType.WRITE);
configurationService.persistConfiguration(stub);
ArgumentCaptor<Configuration> configCapture = ArgumentCaptor.forClass(Configuration.class);
verify(configDAO, times(23)).persist(configCapture.capture());
List<Configuration> configurations = configCapture.getAllValues();
assertThat(new Configuration("mailSmtp", "ee"), isIn(configurations));
}
@Test
public void shouldGetDefaultLogo() {
ImageLogo logo = configurationService.getExcelLogo();
assertNotNull(logo);
assertTrue(logo.getImageData().length > 2);
}
}