import com.google.common.collect.ImmutableMap; import com.google.common.collect.Iterables; import core.PageObject; import core.TestTemplate; import org.junit.Assert; import org.junit.FixMethodOrder; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.MethodSorters; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; import paper.PaperPage; import paper.PapersDashboardPage; import paper.PapersPage; import ru.ulstu.NgTrackerApplication; import ru.ulstu.configuration.ApplicationProperties; import java.util.Arrays; import java.util.List; import java.util.Map; @RunWith(SpringRunner.class) @FixMethodOrder(MethodSorters.NAME_ASCENDING) @SpringBootTest(classes = NgTrackerApplication.class, webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT) public class PaperTest extends TestTemplate { private final Map> navigationHolder = ImmutableMap.of( new PapersPage(), Arrays.asList("СТАТЬИ", "/papers/papers"), new PaperPage(), Arrays.asList("РЕДАКТИРОВАНИЕ СТАТЬИ", "/papers/paper?id=0"), new PapersDashboardPage(), Arrays.asList("СТАТЬИ", "/papers/dashboard") ); @Autowired private ApplicationProperties applicationProperties; private String getPaperPageUrl() { return Iterables.get(navigationHolder.entrySet(), 1).getValue().get(1); } private PaperPage getPaperPage() { PaperPage paperPage = (PaperPage) getContext().initPage(Iterables.get(navigationHolder.entrySet(), 1).getKey()); paperPage.initElements(); return paperPage; } private String getPapersPageUrl() { return Iterables.get(navigationHolder.entrySet(), 0).getValue().get(1); } private PapersPage getPapersPage() { PapersPage papersPage = (PapersPage) getContext().initPage(Iterables.get(navigationHolder.entrySet(), 0).getKey()); papersPage.initElements(); return papersPage; } private String getPapersDashboardPageUrl() { return Iterables.get(navigationHolder.entrySet(), 2).getValue().get(1); } private PapersDashboardPage getPapersDashboardPage() { PapersDashboardPage papersDashboardPage = (PapersDashboardPage) getContext().initPage(Iterables.get(navigationHolder.entrySet(), 2).getKey()); papersDashboardPage.initElements(); return papersDashboardPage; } @Test public void createNewPaperTest() { getContext().goTo(applicationProperties.getBaseUrl() + getPaperPageUrl()); PaperPage paperPage = getPaperPage(); String testTitle = "test " + (String.valueOf(System.currentTimeMillis())); fillRequiredFields(paperPage, testTitle); paperPage.clickSaveBtn(); PapersPage papersPage = getPapersPage(); Assert.assertTrue(papersPage.havePaperWithTitle(testTitle)); } @Test public void editPaperTest() { createNewPaper(); getContext().goTo(applicationProperties.getBaseUrl() + getPapersPageUrl()); PapersPage papersPage = getPapersPage(); papersPage.clickFirstPaper(); PaperPage paperPage = getPaperPage(); String testTitle = "test " + (String.valueOf(System.currentTimeMillis())); paperPage.setTitle(testTitle); paperPage.clickSaveBtn(); Assert.assertTrue(papersPage.havePaperWithTitle(testTitle)); } private void createNewPaper() { getContext().goTo(applicationProperties.getBaseUrl() + getPaperPageUrl()); PaperPage paperPage = getPaperPage(); String testTitle = "test " + (String.valueOf(System.currentTimeMillis())); fillRequiredFields(paperPage, testTitle); paperPage.clickSaveBtn(); } @Test public void addDeadlineTest() { createNewPaper(); getContext().goTo(applicationProperties.getBaseUrl() + getPapersPageUrl()); PapersPage papersPage = getPapersPage(); papersPage.clickFirstPaper(); PaperPage paperPage = getPaperPage(); papersPage.clickAddDeadline(); String testDate = "01.01.2019"; String testDateResult = "2019-01-01"; String testDesc = "desc"; Integer deadlineNumber = 2; paperPage.setDeadlineDate(deadlineNumber, testDate); paperPage.setDeadlineDescription(deadlineNumber, testDesc); String paperId = paperPage.getId(); paperPage.clickSaveBtn(); getContext().goTo(applicationProperties.getBaseUrl() + String.format("/papers/paper?id=%s", paperId)); Assert.assertTrue(paperPage.deadlineExist(testDesc, testDateResult)); } @Test public void noDeadlinesValidationTest() { getContext().goTo(applicationProperties.getBaseUrl() + getPaperPageUrl()); PaperPage paperPage = getPaperPage(); String testTitle = "test " + (String.valueOf(System.currentTimeMillis())); paperPage.setTitle(testTitle); paperPage.clickSaveBtn(); Assert.assertTrue(paperPage.hasAlert("Не может быть пустым")); } private void fillRequiredFields(PaperPage paperPage, String title) { paperPage.setTitle(title); String testDate = "01.01.2019"; String testDesc = "desc"; Integer deadlineNumber = 1; paperPage.setDeadlineDate(deadlineNumber, testDate); paperPage.setDeadlineDescription(deadlineNumber, testDesc); } @Test public void addReferenceTest() { createNewPaper(); getContext().goTo(applicationProperties.getBaseUrl() + getPapersPageUrl()); PapersPage papersPage = getPapersPage(); papersPage.clickFirstPaper(); PaperPage paperPage = getPaperPage(); fillRequiredFields(paperPage, "test " + (String.valueOf(System.currentTimeMillis()))); paperPage.clickReferenceTab(); paperPage.clickAddReferenceButton(); paperPage.clickReferenceTab(); paperPage.showFirstReference(); String authors = "testAuthors"; paperPage.setFirstReferenceAuthors(authors); String paperId = paperPage.getId(); paperPage.clickSaveBtn(); getContext().goTo(applicationProperties.getBaseUrl() + String.format("/papers/paper?id=%s", paperId)); Assert.assertTrue(paperPage.authorsExists(authors)); } @Test public void referencesFormatTest() { getContext().goTo(applicationProperties.getBaseUrl() + getPaperPageUrl()); PaperPage paperPage = getPaperPage(); paperPage.setTitle("test"); paperPage.clickReferenceTab(); paperPage.clickAddReferenceButton(); paperPage.clickReferenceTab(); paperPage.showFirstReference(); paperPage.setFirstReferenceAuthors("authors"); paperPage.setFirstReferencePublicationTitle("title"); paperPage.setFirstReferencePublicationYear("2010"); paperPage.setFirstReferencePublisher("publisher"); paperPage.setFirstReferencePages("200"); paperPage.setFirstReferenceJournalOrCollectionTitle("journal"); paperPage.setFormatStandardSpringer(); paperPage.clickFormatButton(); Assert.assertEquals("authors (2010) title. journal, publisher, pp 200", paperPage.getFormatString()); } @Test public void dashboardLinkTest() { getContext().goTo(applicationProperties.getBaseUrl() + getPaperPageUrl()); PaperPage paperPage = getPaperPage(); fillRequiredFields(paperPage, "test " + (String.valueOf(System.currentTimeMillis()))); String testLink = "http://test.com/"; paperPage.setUrl(testLink); paperPage.clickSaveBtn(); getContext().goTo(applicationProperties.getBaseUrl() + getPapersDashboardPageUrl()); PapersDashboardPage papersDashboardPage = getPapersDashboardPage(); Assert.assertTrue(papersDashboardPage.externalLinkExists(testLink)); } @Test public void deletePaperTest() { createNewPaper(); getContext().goTo(applicationProperties.getBaseUrl() + getPapersPageUrl()); PapersPage papersPage = getPapersPage(); int size = papersPage.getPapersCount(); papersPage.clickRemoveFirstPaperButton(); papersPage.clickConfirmDeleteButton(); Assert.assertEquals(size - 1, papersPage.getPapersCount()); } @Test public void latexValidationTest() { getContext().goTo(applicationProperties.getBaseUrl() + getPaperPageUrl()); PaperPage paperPage = getPaperPage(); paperPage.setTitle("test"); paperPage.clickLatexTab(); paperPage.setLatexText("test"); paperPage.clickPdfButton(); Assert.assertTrue(paperPage.dangerMessageExist("Ошибка при создании PDF")); } @Test public void titleValidationTest() { getContext().goTo(applicationProperties.getBaseUrl() + getPaperPageUrl()); PaperPage paperPage = getPaperPage(); paperPage.clickSaveBtn(); Assert.assertTrue(paperPage.hasAlert("не может быть пусто")); } }