package ru.yandex.qatools.allure.testng;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TemporaryFolder;
import org.testng.TestNG;
import ru.yandex.qatools.allure.model.TestSuiteResult;
import ru.yandex.qatools.allure.utils.AllureResultsUtils;
import javax.xml.bind.JAXB;
import java.io.File;
import java.io.IOException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import static org.hamcrest.Matchers.containsInAnyOrder;
import static org.hamcrest.Matchers.hasSize;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assume.assumeThat;
import static ru.yandex.qatools.allure.commons.AllureFileUtils.listTestSuiteFiles;
/**
* @author Dmitry Baev charlie@yandex-team.ru
* Date: 25.02.15
*/
public class AllureTestListenerSuiteNameTest {
@Rule
public TemporaryFolder folder = new TemporaryFolder();
private static File resultsDir;
@Before
public void setUp() throws IOException {
resultsDir = folder.newFolder();
AllureResultsUtils.setResultsDirectory(resultsDir);
List<String> suites = new ArrayList<>();
URL resource = getClass().getClassLoader().getResource("suite3.xml");
assertNotNull("could not find suite3.xml", resource);
//noinspection ConstantConditions
suites.add(resource.getFile());
TestNG testNG = new TestNG();
testNG.setTestSuites(suites);
testNG.setUseDefaultListeners(false);
testNG.run();
}
@Test
public void shouldContainsBothSuitesWithDifferentNames() throws Exception {
Collection<File> files = listTestSuiteFiles(resultsDir);
assumeThat(files, hasSize(2));
List<String> names = new ArrayList<>();
for (File file : files) {
TestSuiteResult result = JAXB.unmarshal(file, TestSuiteResult.class);
names.add(result.getName());
}
assumeThat(names, containsInAnyOrder(
"Test suite tag : Test tag by classes[param1=val1]",
"Test suite tag : Test tag by classes 2[param1=val1]"
));
}
}