package ru.yandex.qatools.allure.commons; import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.rules.TemporaryFolder; import ru.yandex.qatools.allure.model.TestSuiteResult; import javax.xml.bind.JAXB; import java.io.File; import java.io.FileFilter; import java.util.List; import static org.hamcrest.Matchers.containsInAnyOrder; import static org.hamcrest.Matchers.hasSize; import static org.hamcrest.core.IsEqual.equalTo; import static org.junit.Assert.assertThat; import static org.mockito.Matchers.any; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import static ru.yandex.qatools.allure.commons.AllureFileUtils.listAttachmentFiles; import static ru.yandex.qatools.allure.commons.AllureFileUtils.listTestSuiteFiles; import static ru.yandex.qatools.allure.config.AllureNamingUtils.generateTestSuiteFileName; /** * @author Dmitry Baev charlie@yandex-team.ru * Date: 06.06.14 */ public class AllureFileUtilsTest { private File directory; @Rule public TemporaryFolder folder = new TemporaryFolder(); @Before public void initDirectory() { directory = mock(File.class); when(directory.isDirectory()).thenReturn(true); when(directory.canRead()).thenReturn(true); } @Test(expected = IllegalStateException.class) public void createInstanceTest() throws Exception { new AllureFileUtils(); } @Test public void generatedTestSuiteFileNamesMustBeFoundByListTestSuiteFilesMethod() { File[] testSuiteFiles = new File[]{ new File(generateTestSuiteFileName()), new File(generateTestSuiteFileName()) }; when(directory.listFiles(any(FileFilter.class))).thenReturn(testSuiteFiles); assertThat(listTestSuiteFiles(directory).size(), equalTo(testSuiteFiles.length)); } @Test public void ListAttachmentFilesTest() { File[] attachmentFiles = new File[]{ new File("a-attachment"), new File("b-attachment.xml") }; when(directory.listFiles(any(FileFilter.class))).thenReturn(attachmentFiles); assertThat(listAttachmentFiles(directory).size(), equalTo(attachmentFiles.length)); } @Test public void shouldUnmarshalSuiteFiles() throws Exception { TestSuiteResult first = new TestSuiteResult().withName("first"); TestSuiteResult second = new TestSuiteResult().withName("second"); File folder = this.folder.newFolder(); File firstFile = new File(folder, "first-testsuite.xml"); JAXB.marshal(first, firstFile); File secondFile = new File(folder, "second-testsuite.xml"); JAXB.marshal(second, secondFile); List<TestSuiteResult> suites = AllureFileUtils.unmarshalSuites(folder); assertThat(suites, hasSize(2)); assertThat(suites, containsInAnyOrder(first, second)); } }