package de.interseroh.report.services;
import java.io.File;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
import org.springframework.context.annotation.PropertySource;
import org.springframework.test.context.ContextConfiguration;
import de.interseroh.report.controller.SecurityServiceMock;
import de.interseroh.report.exception.BirtSystemException;
import de.interseroh.report.model.ReportReference;
import de.interseroh.report.webconfig.ReportConfig;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.when;
/**
*
*
* Created by hhopf on 07.07.15.
*/
@RunWith(MockitoJUnitRunner.class)
@ContextConfiguration(classes = {ReportConfig.class, SecurityServiceMock.class})
@PropertySource("classpath:config.properties")
public class BirtFileReaderServiceBeanTest {
@InjectMocks
BirtFileReaderService serviceFileReader = new BirtFileReaderServiceBean();
@Mock
private SecurityService securityControl;
@Test
public void testGetAllFileNamesWithNull() throws BirtSystemException {
File directory = new File(getClass().getResource("/reports").getFile());
when(securityControl.getTmpDirectory()).thenReturn(directory);
List<ReportReference> list = serviceFileReader
.getReportReferences();
assertTrue("nichts drin", list.size() == 0);
}
@Test
public void testGetFileNameWithRole() throws BirtSystemException {
File directory = new File(getClass().getResource("/reports").getFile());// target
// folder
when(securityControl.getTmpDirectory()).thenReturn(directory);
when(securityControl.getStripRoleNames())
.thenReturn(Collections.singletonList("SALESINVOICE"));
List<ReportReference> list = serviceFileReader.getReportReferences();
assertEquals("1 report in directory with its role available", 1,
list.size());
}
@Test
public void testGetTwoFilesNameWithRole() throws BirtSystemException {
File directory = new File(getClass().getResource("/reports").getFile());//
List<String> roles = Arrays.asList("SALESINVOICE","PRODUCTCATALOG");
when(securityControl.getTmpDirectory()).thenReturn(directory);
when(securityControl.getStripRoleNames()).thenReturn(roles);
List<ReportReference> list = serviceFileReader
.getReportReferences();
assertEquals("2 report in directory with its role available", 2,
list.size());
}
}