Merge branch '103-autotest-conf' into 'dev'
Resolve "Реализовать интеграционные автотесты для проверки модулей" See merge request romanov73/ng-tracker!90
This commit is contained in:
commit
51851baa48
@ -143,6 +143,7 @@ public class ConferenceService extends BaseService {
|
||||
@Transactional
|
||||
public void delete(Integer conferenceId) {
|
||||
if (conferenceRepository.exists(conferenceId)) {
|
||||
eventService.removeConferencesEvent(conferenceRepository.findOne(conferenceId));
|
||||
conferenceRepository.delete(conferenceId);
|
||||
}
|
||||
}
|
||||
|
@ -205,6 +205,11 @@ public class EventService {
|
||||
createFromGrant(grant);
|
||||
}
|
||||
|
||||
public void removeConferencesEvent(Conference conference) {
|
||||
List<Event> eventList = eventRepository.findAllByConference(conference);
|
||||
eventList.forEach(event -> eventRepository.delete(event.getId()));
|
||||
}
|
||||
|
||||
public void createFromTask(Task newTask) {
|
||||
List<Timeline> timelines = timelineService.findAll();
|
||||
Timeline timeline = timelines.isEmpty() ? new Timeline() : timelines.get(0);
|
||||
|
@ -140,6 +140,7 @@ body {
|
||||
|
||||
.paper-name {
|
||||
flex: 1;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.paper-name:hover {
|
||||
@ -156,6 +157,15 @@ body {
|
||||
float: left;
|
||||
}
|
||||
|
||||
.paper-name span:nth-child(2) {
|
||||
max-width: 326px;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.dropdown-menu {
|
||||
max-width: 445px;
|
||||
}
|
||||
|
||||
|
||||
|
||||
.icon {
|
||||
|
@ -25,4 +25,5 @@ $(document).ready(function () {
|
||||
$('#dataConfirmModal').modal({show:true});
|
||||
return false;
|
||||
});
|
||||
|
||||
});
|
||||
|
230
src/test/java/IndexConferenceTest.java
Normal file
230
src/test/java/IndexConferenceTest.java
Normal file
@ -0,0 +1,230 @@
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
import com.google.common.collect.Iterables;
|
||||
import conference.ConferencePage;
|
||||
import conference.ConferencesDashboardPage;
|
||||
import conference.ConferencesPage;
|
||||
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.openqa.selenium.By;
|
||||
import org.openqa.selenium.WebElement;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
import org.springframework.test.context.junit4.SpringRunner;
|
||||
import ru.ulstu.NgTrackerApplication;
|
||||
import ru.ulstu.configuration.ApplicationProperties;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Date;
|
||||
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 IndexConferenceTest extends TestTemplate {
|
||||
private final Map<PageObject, List<String>> navigationHolder = ImmutableMap.of(
|
||||
new ConferencesPage(), Arrays.asList("КОНФЕРЕНЦИИ", "/conferences/conferences"),
|
||||
new ConferencePage(), Arrays.asList("РЕДАКТИРОВАНИЕ КОНФЕРЕНЦИИ", "/conferences/conference?id=0"),
|
||||
new ConferencesDashboardPage(), Arrays.asList("АКТУАЛЬНЫЕ КОНФЕРЕНЦИИ", "/conferences/dashboard")
|
||||
);
|
||||
|
||||
@Autowired
|
||||
private ApplicationProperties applicationProperties;
|
||||
|
||||
@Test
|
||||
public void testACreateNewConference() {
|
||||
Map.Entry<PageObject, List<String>> page = Iterables.get(navigationHolder.entrySet(), 1);
|
||||
|
||||
getContext().goTo(applicationProperties.getBaseUrl() + page.getValue().get(1));
|
||||
ConferencePage conferencePage = (ConferencePage) getContext().initPage(page.getKey());
|
||||
ConferencesPage conferencesPage = (ConferencesPage) getContext().initPage(Iterables.get(navigationHolder.entrySet(), 0).getKey());
|
||||
|
||||
String newConferenceName = "test " + (new Date()).getTime();
|
||||
conferencePage.setName(newConferenceName);
|
||||
conferencePage.clickSaveBut();
|
||||
|
||||
Assert.assertTrue(conferencesPage.checkNameInList(newConferenceName));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testBChangeConferenceNameAndSave() {
|
||||
Map.Entry<PageObject, List<String>> page = Iterables.get(navigationHolder.entrySet(), 0);
|
||||
|
||||
getContext().goTo(applicationProperties.getBaseUrl() + page.getValue().get(1));
|
||||
ConferencesPage conferencesPage = (ConferencesPage) getContext().initPage(page.getKey());
|
||||
ConferencePage conferencePage = (ConferencePage) getContext().initPage(Iterables.get(navigationHolder.entrySet(), 1).getKey());
|
||||
|
||||
conferencesPage.getFirstConference();
|
||||
String newConferenceName = "test " + (new Date()).getTime();
|
||||
conferencePage.clearName();
|
||||
conferencePage.setName(newConferenceName);
|
||||
conferencePage.clickSaveBut();
|
||||
|
||||
Assert.assertTrue(conferencesPage.checkNameInList(newConferenceName));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCAddDeadlineAndSave() {
|
||||
Map.Entry<PageObject, List<String>> page = Iterables.get(navigationHolder.entrySet(), 0);
|
||||
|
||||
getContext().goTo(applicationProperties.getBaseUrl() + page.getValue().get(1));
|
||||
ConferencesPage conferencesPage = (ConferencesPage) getContext().initPage(page.getKey());
|
||||
ConferencePage conferencePage = (ConferencePage) getContext().initPage(Iterables.get(navigationHolder.entrySet(), 1).getKey());
|
||||
|
||||
conferencesPage.getFirstConference();
|
||||
String conferenceId = conferencePage.getId();
|
||||
Integer deadlineCount = conferencePage.getDeadlineCount();
|
||||
|
||||
String description = "test";
|
||||
String date = "09.09.2019";
|
||||
String dateValue = "2019-09-09";
|
||||
conferencePage.clickAddDeadlineBut();
|
||||
conferencePage.setDeadlineDescription(description, deadlineCount);
|
||||
conferencePage.setDeadlineDate(date, deadlineCount);
|
||||
conferencePage.clickSaveBut();
|
||||
|
||||
getContext().goTo(applicationProperties.getBaseUrl() + String.format("/conferences/conference?id=%s", conferenceId));
|
||||
|
||||
Assert.assertTrue(conferencePage.checkDeadline(description, dateValue));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testDTakePartAndSave() {
|
||||
Map.Entry<PageObject, List<String>> page = Iterables.get(navigationHolder.entrySet(), 0);
|
||||
|
||||
getContext().goTo(applicationProperties.getBaseUrl() + page.getValue().get(1));
|
||||
ConferencesPage conferencesPage = (ConferencesPage) getContext().initPage(page.getKey());
|
||||
ConferencePage conferencePage = (ConferencePage) getContext().initPage(Iterables.get(navigationHolder.entrySet(), 1).getKey());
|
||||
|
||||
conferencesPage.getFirstConference();
|
||||
String conferenceId = conferencePage.getId();
|
||||
Integer membersCount = conferencePage.getMemberCount();
|
||||
|
||||
conferencePage.clickTakePartBut();
|
||||
conferencePage.clickSaveBut();
|
||||
|
||||
getContext().goTo(applicationProperties.getBaseUrl() + String.format("/conferences/conference?id=%s", conferenceId));
|
||||
|
||||
Assert.assertTrue(membersCount + 1 == conferencePage.getMemberCount()
|
||||
&& conferencePage.isTakePartButDisabledValueTrue());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testEDeleteDeadlineAndSave() {
|
||||
Map.Entry<PageObject, List<String>> page = Iterables.get(navigationHolder.entrySet(), 0);
|
||||
|
||||
getContext().goTo(applicationProperties.getBaseUrl() + page.getValue().get(1));
|
||||
ConferencesPage conferencesPage = (ConferencesPage) getContext().initPage(page.getKey());
|
||||
ConferencePage conferencePage = (ConferencePage) getContext().initPage(Iterables.get(navigationHolder.entrySet(), 1).getKey());
|
||||
|
||||
conferencesPage.getFirstConference();
|
||||
String conferenceId = conferencePage.getId();
|
||||
Integer deadlineCount = conferencePage.getDeadlineCount();
|
||||
|
||||
conferencePage.clickDeleteDeadlineBut();
|
||||
conferencePage.clickSaveBut();
|
||||
|
||||
getContext().goTo(applicationProperties.getBaseUrl() + String.format("/conferences/conference?id=%s", conferenceId));
|
||||
|
||||
Assert.assertEquals(deadlineCount - 1, (int) conferencePage.getDeadlineCount());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testFAttachArticle() {
|
||||
Map.Entry<PageObject, List<String>> page = Iterables.get(navigationHolder.entrySet(), 0);
|
||||
|
||||
getContext().goTo(applicationProperties.getBaseUrl() + page.getValue().get(1));
|
||||
ConferencesPage conferencesPage = (ConferencesPage) getContext().initPage(page.getKey());
|
||||
ConferencePage conferencePage = (ConferencePage) getContext().initPage(Iterables.get(navigationHolder.entrySet(), 1).getKey());
|
||||
|
||||
conferencesPage.getFirstConference();
|
||||
String conferenceId = conferencePage.getId();
|
||||
Integer paperCount = conferencePage.getArticlesCount();
|
||||
|
||||
conferencePage.showAllowToAttachArticles();
|
||||
WebElement paper = conferencePage.selectArticle();
|
||||
String paperName = paper.findElement(By.className("text")).getText();
|
||||
conferencePage.clickSaveBut();
|
||||
|
||||
getContext().goTo(applicationProperties.getBaseUrl() + String.format("/conferences/conference?id=%s", conferenceId));
|
||||
|
||||
Assert.assertTrue(paperCount + 1 == conferencePage.getArticlesCount()
|
||||
&& conferencePage.checkArticle(paperName));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGAddArticle() {
|
||||
Map.Entry<PageObject, List<String>> page = Iterables.get(navigationHolder.entrySet(), 0);
|
||||
|
||||
getContext().goTo(applicationProperties.getBaseUrl() + page.getValue().get(1));
|
||||
ConferencesPage conferencesPage = (ConferencesPage) getContext().initPage(page.getKey());
|
||||
ConferencePage conferencePage = (ConferencePage) getContext().initPage(Iterables.get(navigationHolder.entrySet(), 1).getKey());
|
||||
|
||||
conferencesPage.getFirstConference();
|
||||
String conferenceId = conferencePage.getId();
|
||||
Integer paperCount = conferencePage.getArticlesCount();
|
||||
|
||||
conferencePage.clickAddPaperBut();
|
||||
List<WebElement> webElements = conferencePage.getArticles();
|
||||
String paperName = webElements.get(webElements.size() - 1).findElements(By.tagName("input")).get(1).getAttribute("value");
|
||||
conferencePage.clickSaveBut();
|
||||
|
||||
getContext().goTo(applicationProperties.getBaseUrl() + String.format("/conferences/conference?id=%s", conferenceId));
|
||||
|
||||
Assert.assertTrue(paperCount + 1 == conferencePage.getArticlesCount()
|
||||
&& conferencePage.checkArticle(paperName));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testHUndockArticle() {
|
||||
Map.Entry<PageObject, List<String>> page = Iterables.get(navigationHolder.entrySet(), 0);
|
||||
|
||||
getContext().goTo(applicationProperties.getBaseUrl() + page.getValue().get(1));
|
||||
ConferencesPage conferencesPage = (ConferencesPage) getContext().initPage(page.getKey());
|
||||
ConferencePage conferencePage = (ConferencePage) getContext().initPage(Iterables.get(navigationHolder.entrySet(), 1).getKey());
|
||||
|
||||
conferencesPage.getFirstConference();
|
||||
String conferenceId = conferencePage.getId();
|
||||
Integer paperCount = conferencePage.getArticlesCount();
|
||||
|
||||
conferencePage.clickUndockArticleBut();
|
||||
conferencePage.clickSaveBut();
|
||||
|
||||
getContext().goTo(applicationProperties.getBaseUrl() + String.format("/conferences/conference?id=%s", conferenceId));
|
||||
|
||||
Assert.assertEquals(paperCount - 1, (int) conferencePage.getArticlesCount());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testISortAndFilterConferenceList() {
|
||||
Map.Entry<PageObject, List<String>> page = Iterables.get(navigationHolder.entrySet(), 0);
|
||||
|
||||
getContext().goTo(applicationProperties.getBaseUrl() + page.getValue().get(1));
|
||||
ConferencesPage conferencesPage = (ConferencesPage) getContext().initPage(page.getKey());
|
||||
|
||||
conferencesPage.selectMember();
|
||||
conferencesPage.selectYear();
|
||||
|
||||
Assert.assertEquals(1, conferencesPage.getConferencesList().size());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testJDeleteConf() throws InterruptedException {
|
||||
Map.Entry<PageObject, List<String>> page = Iterables.get(navigationHolder.entrySet(), 0);
|
||||
|
||||
getContext().goTo(applicationProperties.getBaseUrl() + page.getValue().get(1));
|
||||
ConferencesPage conferencesPage = (ConferencesPage) getContext().initPage(page.getKey());
|
||||
|
||||
Integer size = conferencesPage.getConferencesList().size();
|
||||
conferencesPage.deleteFirst();
|
||||
Thread.sleep(3000);
|
||||
conferencesPage.clickConfirm();
|
||||
|
||||
Assert.assertEquals(size - 1, conferencesPage.getConferencesList().size());
|
||||
}
|
||||
}
|
116
src/test/java/conference/ConferencePage.java
Normal file
116
src/test/java/conference/ConferencePage.java
Normal file
@ -0,0 +1,116 @@
|
||||
package conference;
|
||||
|
||||
import core.PageObject;
|
||||
import org.openqa.selenium.By;
|
||||
import org.openqa.selenium.WebElement;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class ConferencePage extends PageObject {
|
||||
|
||||
public String getSubTitle() {
|
||||
return driver.findElement(By.tagName("h3")).getText();
|
||||
}
|
||||
|
||||
public String getId() {
|
||||
return driver.findElement(By.id("id")).getAttribute("value");
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
driver.findElement(By.id("title")).sendKeys(name);
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return driver.findElement(By.id("title")).getAttribute("value");
|
||||
}
|
||||
|
||||
public void clearName() {
|
||||
driver.findElement(By.id("title")).clear();
|
||||
}
|
||||
|
||||
public void clickSaveBut() {
|
||||
driver.findElement(By.id("send-message-button")).click();
|
||||
}
|
||||
|
||||
public void clickAddDeadlineBut() {
|
||||
driver.findElement(By.id("addDeadline")).click();
|
||||
}
|
||||
|
||||
public List<WebElement> getDeadlineList() {
|
||||
return driver.findElements(By.className("deadline"));
|
||||
}
|
||||
|
||||
public Integer getDeadlineCount() {
|
||||
return driver.findElements(By.className("deadline")).size();
|
||||
}
|
||||
|
||||
public void setDeadlineDescription(String description, Integer i) {
|
||||
driver.findElement(By.id(String.format("deadlines%d.description", i))).sendKeys(description);
|
||||
}
|
||||
|
||||
public void setDeadlineDate(String date, Integer i) {
|
||||
driver.findElement(By.id(String.format("deadlines%d.date", i))).sendKeys(date);
|
||||
}
|
||||
|
||||
public void clickTakePartBut() {
|
||||
driver.findElement(By.id("take-part")).click();
|
||||
}
|
||||
|
||||
public Boolean isTakePartButDisabledValueTrue() {
|
||||
return driver.findElement(By.id("take-part")).getAttribute("disabled").equals("true");
|
||||
}
|
||||
|
||||
public Integer getMemberCount() {
|
||||
return driver.findElements(By.className("member")).size();
|
||||
}
|
||||
|
||||
public void clickDeleteDeadlineBut() {
|
||||
driver.findElement(By.xpath("//*[@id=\"deadlines\"]/div/input[4]")).click();
|
||||
}
|
||||
|
||||
public void showAllowToAttachArticles() {
|
||||
driver.findElement(By.cssSelector("button[data-id=\"paperIds\"]")).click();
|
||||
}
|
||||
|
||||
public void clickAddPaperBut() {
|
||||
driver.findElement(By.id("add-paper")).click();
|
||||
}
|
||||
|
||||
|
||||
public List<WebElement> getArticles() {
|
||||
return driver.findElements(By.className("paper"));
|
||||
}
|
||||
|
||||
public Integer getArticlesCount() {
|
||||
return driver.findElements(By.className("paper")).size();
|
||||
}
|
||||
|
||||
public WebElement selectArticle() {
|
||||
WebElement webElement = driver.findElement(By.xpath("//*[@id=\"conference-form\"]/div/div[2]/div[5]/div/div/div[2]/ul/li[1]/a"));
|
||||
webElement.click();
|
||||
return webElement;
|
||||
}
|
||||
|
||||
public void clickUndockArticleBut() {
|
||||
driver.findElement(By.name("removePaper")).click();
|
||||
}
|
||||
|
||||
public boolean checkDeadline(String description, String dateValue) {
|
||||
return getDeadlineList()
|
||||
.stream()
|
||||
.anyMatch(webElement -> {
|
||||
return webElement.findElement(By.className("deadline-text")).getAttribute("value").equals(description)
|
||||
&& webElement.findElement(By.cssSelector("input[type=\"date\"]")).getAttribute("value").equals(dateValue);
|
||||
});
|
||||
}
|
||||
|
||||
public boolean checkArticle(String paperName) {
|
||||
return getArticles()
|
||||
.stream()
|
||||
.anyMatch(webElement -> webElement
|
||||
.findElements(By.tagName("input"))
|
||||
.get(1).getAttribute("value")
|
||||
.equals(paperName));
|
||||
}
|
||||
|
||||
}
|
11
src/test/java/conference/ConferencesDashboardPage.java
Normal file
11
src/test/java/conference/ConferencesDashboardPage.java
Normal file
@ -0,0 +1,11 @@
|
||||
package conference;
|
||||
|
||||
import core.PageObject;
|
||||
import org.openqa.selenium.By;
|
||||
|
||||
public class ConferencesDashboardPage extends PageObject {
|
||||
|
||||
public String getSubTitle() {
|
||||
return driver.findElement(By.tagName("h2")).getText();
|
||||
}
|
||||
}
|
47
src/test/java/conference/ConferencesPage.java
Normal file
47
src/test/java/conference/ConferencesPage.java
Normal file
@ -0,0 +1,47 @@
|
||||
package conference;
|
||||
|
||||
import core.PageObject;
|
||||
import org.openqa.selenium.By;
|
||||
import org.openqa.selenium.WebElement;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class ConferencesPage extends PageObject {
|
||||
|
||||
public String getSubTitle() {
|
||||
return driver.findElement(By.tagName("h3")).getText();
|
||||
}
|
||||
|
||||
public List<WebElement> getConferencesList() {
|
||||
return driver.findElements(By.cssSelector("span.h6.float-left.m-2"));
|
||||
}
|
||||
|
||||
public void getFirstConference() {
|
||||
driver.findElement(By.xpath("//*[@id=\"conferences\"]/div/div[2]/div[1]/div[1]/div/a")).click();
|
||||
}
|
||||
|
||||
public void selectMember() {
|
||||
driver.findElements(By.className("bootstrap-select")).get(0).findElement(By.className("btn")).click();
|
||||
driver.findElements(By.className("bootstrap-select")).get(0).findElements(By.className("dropdown-item")).get(1).click();
|
||||
}
|
||||
|
||||
public void selectYear() {
|
||||
driver.findElements(By.className("bootstrap-select")).get(1).findElement(By.className("btn")).click();
|
||||
driver.findElements(By.className("bootstrap-select")).get(1).findElements(By.className("dropdown-item")).get(1).click();
|
||||
}
|
||||
|
||||
public void deleteFirst() {
|
||||
js.executeScript("$('input[data-confirm]').click();");
|
||||
}
|
||||
|
||||
public void clickConfirm() {
|
||||
driver.findElement(By.id("deleteConference")).click();
|
||||
}
|
||||
|
||||
|
||||
public boolean checkNameInList(String newConferenceName) {
|
||||
return getConferencesList()
|
||||
.stream()
|
||||
.anyMatch(webElement -> webElement.getText().equals(newConferenceName));
|
||||
}
|
||||
}
|
@ -1,14 +1,17 @@
|
||||
package core;
|
||||
|
||||
import org.openqa.selenium.JavascriptExecutor;
|
||||
import org.openqa.selenium.WebDriver;
|
||||
|
||||
public abstract class PageObject {
|
||||
protected WebDriver driver;
|
||||
protected JavascriptExecutor js;
|
||||
|
||||
public abstract String getSubTitle();
|
||||
|
||||
public PageObject setDriver(WebDriver driver) {
|
||||
this.driver = driver;
|
||||
js = (JavascriptExecutor) driver;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user