From e80c3656edc7dd8bf3296bb936a388e20c8cb4f3 Mon Sep 17 00:00:00 2001 From: srosse <stephane.rosse@frentix.com> Date: Wed, 13 Feb 2019 18:56:40 +0100 Subject: [PATCH] no-jira: selenium test for recurring calendar event modification --- .../java/org/olat/selenium/CourseTest.java | 81 +++++++++++++++++++ .../olat/selenium/page/core/CalendarPage.java | 1 + .../page/course/CourseEditorPageFragment.java | 2 +- 3 files changed, 83 insertions(+), 1 deletion(-) diff --git a/src/test/java/org/olat/selenium/CourseTest.java b/src/test/java/org/olat/selenium/CourseTest.java index 8c67db3adf4..2d6bf59057b 100644 --- a/src/test/java/org/olat/selenium/CourseTest.java +++ b/src/test/java/org/olat/selenium/CourseTest.java @@ -652,6 +652,7 @@ public class CourseTest extends Deployments { // create a recurring event CalendarPage calendar = new CalendarPage(browser); calendar + .assertOnCalendar() .addEvent(3) .setDescription("Eventhor", "Hammer", "Asgard") .setAllDay(true) @@ -787,6 +788,86 @@ public class CourseTest extends Deployments { .assertOnEventsAt("Repeat", 2, 15); } + /** + * An author create a course with a calendar. It add + * an event to the calendar, the event is not recurring + * for the moment. The author save it, edit it again + * and make it a recurring event. The test is there to + * check the transition from non-recurring to recurring + * works flawlessly. + * + * @param loginPage + * @throws IOException + * @throws URISyntaxException + */ + @Test + @RunAsClient + public void createCourseWithCalendar_singleToRecurrent(@InitialPage LoginPage loginPage) + throws IOException, URISyntaxException { + + UserVO author = new UserRestClient(deploymentUrl).createAuthor(); + loginPage.loginAs(author.getLogin(), author.getPassword()); + + //create a course + String courseTitle = "Course-iCal-" + UUID.randomUUID(); + navBar + .openAuthoringEnvironment() + .createCourse(courseTitle) + .clickToolbarBack(); + + navBar.openCourse(courseTitle); + + // activate the calendar options + CoursePageFragment course = CoursePageFragment.getCourse(browser); + CourseSettingsPage settings = course + .settings(); + settings + .toolbar() + .calendar(Boolean.TRUE) + .save(); + settings + .clickToolbarBack(); + + String calendarNodeTitle = "iCal-3"; + //create a course element of type calendar + CourseEditorPageFragment courseEditor = CoursePageFragment.getCourse(browser) + .edit(); + courseEditor + .createNode("cal") + .nodeTitle(calendarNodeTitle); + + //publish the course + course = courseEditor + .autoPublish(); + //open the course and see the CP + course + .clickTree() + .selectWithTitle(calendarNodeTitle); + + // create a recurring event + CalendarPage calendar = new CalendarPage(browser); + calendar + .assertOnCalendar() + .addEvent(2) + .setDescription("Repeat", "Loop", "Foreach") + .setAllDay(false) + .setBeginEnd(14, 18) + .save() + .assertOnEvents("Repeat", 1); + + //pick an occurence which is not the first and modify it + calendar + .openDetails("Repeat") + .edit() + .setRecurringEvent(KalendarEvent.WEEKLY, 28) + .save() + .assertOnEventsAt("Repeat", 4, 14); + + //pick details of an occurent + calendar + .openDetailsOccurence("Repeat", 9); + } + /** * An author creates a course, make it visible for * members and add an access control by password. diff --git a/src/test/java/org/olat/selenium/page/core/CalendarPage.java b/src/test/java/org/olat/selenium/page/core/CalendarPage.java index 1449faef6c2..12ab2303500 100644 --- a/src/test/java/org/olat/selenium/page/core/CalendarPage.java +++ b/src/test/java/org/olat/selenium/page/core/CalendarPage.java @@ -88,6 +88,7 @@ public class CalendarPage { LocalDate date = LocalDate.now().withDayOfMonth(day); String dateString = date.format(formatter); By cellBy = By.xpath("//div[contains(@class,'o_cal')]//td[contains(@data-date,'" + dateString + "')][contains(@class,'fc-day')][contains(@class,'fc-widget-content')]"); + OOGraphene.waitElement(cellBy, browser); browser.findElement(cellBy).click(); OOGraphene.waitModalDialog(browser); return this; diff --git a/src/test/java/org/olat/selenium/page/course/CourseEditorPageFragment.java b/src/test/java/org/olat/selenium/page/course/CourseEditorPageFragment.java index f6e2b77b809..5fac7c2d665 100644 --- a/src/test/java/org/olat/selenium/page/course/CourseEditorPageFragment.java +++ b/src/test/java/org/olat/selenium/page/course/CourseEditorPageFragment.java @@ -221,7 +221,7 @@ public class CourseEditorPageFragment { By nodeBy = By.xpath("//div[@id='o_course_editor_choose_nodetype']//a[contains(@class,'o_sel_course_editor_node-" + nodeAlias + "')]"); OOGraphene.waitElement(nodeBy, browser); - if("lti".equals(nodeAlias) || "co".equals(nodeAlias)) { + if("lti".equals(nodeAlias) || "co".equals(nodeAlias) || "cal".equals(nodeAlias)) { OOGraphene.clickAndWait(nodeBy, browser); } else { browser.findElement(nodeBy).click(); -- GitLab