use of org.olat.selenium.page.course.CoursePageFragment in project OpenOLAT by OpenOLAT.
the class BusinessGroupTest method enrollment.
/**
* An author create a course and a business group in the members
* management. It has max. participants set to 1 and no waiting list.
* Than it returns in the course editor to create an enrollment
* course element. It configure it and select the group created before.<br>
*
* Three users goes to the course and try to enroll. One will become
* a participant, the 2 others get an error message.
*
* @param authorLoginPage
* @param ryomouBrowser
* @param reiBrowser
* @param kanuBrowser
* @throws IOException
* @throws URISyntaxException
*/
@Test
@RunAsClient
public void enrollment(@InitialPage LoginPage authorLoginPage, @Drone @User WebDriver ryomouBrowser, @Drone @Participant WebDriver reiBrowser, @Drone @Student WebDriver kanuBrowser) throws IOException, URISyntaxException {
UserVO author = new UserRestClient(deploymentUrl).createAuthor();
UserVO rei = new UserRestClient(deploymentUrl).createRandomUser("Rei");
UserVO kanu = new UserRestClient(deploymentUrl).createRandomUser("kanu");
UserVO ryomou = new UserRestClient(deploymentUrl).createRandomUser("Ryomou");
authorLoginPage.loginAs(author.getLogin(), author.getPassword());
// create a course
String courseTitle = "Enrollment-2-" + UUID.randomUUID();
navBar.openAuthoringEnvironment().createCourse(courseTitle).clickToolbarBack();
// create a group in members management
String groupName = "Enroll - " + UUID.randomUUID();
CoursePageFragment authorCourse = CoursePageFragment.getCourse(browser);
MembersPage membersPage = authorCourse.members().selectBusinessGroups().createBusinessGroup(groupName, "-", 1, false, false);
// back to the members page
navBar.openCourse(courseTitle);
authorCourse = membersPage.clickToolbarBack();
// create an enrollment course element
String enNodeTitle = "Enroll - 2";
CourseEditorPageFragment courseEditor = authorCourse.edit().createNode("en").nodeTitle(enNodeTitle);
// select the group created above
EnrollmentConfigurationPage enrolmentConfig = new EnrollmentConfigurationPage(browser);
enrolmentConfig.selectConfiguration().selectBusinessGroups();
// publish the course
courseEditor.publish().quickPublish(UserAccess.registred);
GroupPage authorGroup = navBar.openGroups(browser).selectGroup(groupName).openAdministration().openAdminMembers().setVisibility(false, true, false).openMembers().assertParticipantList();
Enrollment[] participantDrivers = new Enrollment[] { new Enrollment(ryomou, ryomouBrowser), new Enrollment(rei, reiBrowser), new Enrollment(kanu, kanuBrowser) };
for (Enrollment enrollment : participantDrivers) {
WebDriver driver = enrollment.getDriver();
LoginPage.getLoginPage(driver, deploymentUrl).loginAs(enrollment.getUser()).resume();
NavigationPage participantNavBar = new NavigationPage(driver);
participantNavBar.openMyCourses().openSearch().extendedSearch(courseTitle).select(courseTitle).start();
// go to the enrollment
CoursePageFragment participantCourse = new CoursePageFragment(driver);
participantCourse.clickTree().selectWithTitle(enNodeTitle);
EnrollmentPage enrollmentPage = new EnrollmentPage(driver);
enrollmentPage.assertOnEnrolmentPage();
enrollment.setEnrollmentPage(enrollmentPage);
}
// enroll
for (Enrollment enrollment : participantDrivers) {
enrollment.getEnrollmentPage().enrollNoWait();
}
// wait
for (Enrollment enrollment : participantDrivers) {
OOGraphene.waitBusy(enrollment.getDriver());
}
int errors = 0;
for (Enrollment enrollment : participantDrivers) {
if (enrollment.getEnrollmentPage().hasError()) {
errors++;
}
}
// author check the lists
authorGroup.openMembers();
// must a participant and 2 in waiting list
int participants = 0;
for (Enrollment enrollment : participantDrivers) {
if (authorGroup.isInMembersParticipantList(enrollment.getUser())) {
participants++;
}
}
Assert.assertEquals(1, participants);
Assert.assertEquals(participantDrivers.length - 1, errors);
}
use of org.olat.selenium.page.course.CoursePageFragment in project OpenOLAT by OpenOLAT.
the class BusinessGroupTest method enrollmentWithUnlimitedBusinessGroups.
/**
* Variant from the above test where the business group is not
* limited in size. This was a bug while development of the 10.3
* release.
*
* @param authorLoginPage
* @param ryomouBrowser
* @param reiBrowser
* @param kanuBrowser
* @throws IOException
* @throws URISyntaxException
*/
@Test
@RunAsClient
public void enrollmentWithUnlimitedBusinessGroups(@InitialPage LoginPage authorLoginPage, @Drone @User WebDriver ryomouBrowser, @Drone @Participant WebDriver reiBrowser, @Drone @Student WebDriver kanuBrowser) throws IOException, URISyntaxException {
UserVO author = new UserRestClient(deploymentUrl).createAuthor();
UserVO rei = new UserRestClient(deploymentUrl).createRandomUser("Rei");
UserVO kanu = new UserRestClient(deploymentUrl).createRandomUser("kanu");
UserVO ryomou = new UserRestClient(deploymentUrl).createRandomUser("Ryomou");
authorLoginPage.loginAs(author.getLogin(), author.getPassword());
// create a course
String courseTitle = "Enrollment-3-" + UUID.randomUUID();
navBar.openAuthoringEnvironment().createCourse(courseTitle).clickToolbarBack();
// create a group in members management
String groupName = "Enroll - " + UUID.randomUUID();
CoursePageFragment authorCourse = CoursePageFragment.getCourse(browser);
MembersPage membersPage = authorCourse.members().selectBusinessGroups().createBusinessGroup(groupName, "-", -1, false, false);
// back to the members page
navBar.openCourse(courseTitle);
authorCourse = membersPage.clickToolbarBack();
// create an enrollment course element
String enNodeTitle = "Enroll - 3";
CourseEditorPageFragment courseEditor = authorCourse.edit().createNode("en").nodeTitle(enNodeTitle);
// select the group created above
EnrollmentConfigurationPage enrolmentConfig = new EnrollmentConfigurationPage(browser);
enrolmentConfig.selectConfiguration().selectBusinessGroups();
// publish the course
courseEditor.publish().quickPublish(UserAccess.registred);
GroupPage authorGroup = navBar.openGroups(browser).selectGroup(groupName).openAdministration().openAdminMembers().setVisibility(false, true, false).openMembers().assertParticipantList();
Enrollment[] participantDrivers = new Enrollment[] { new Enrollment(ryomou, ryomouBrowser), new Enrollment(rei, reiBrowser), new Enrollment(kanu, kanuBrowser) };
for (Enrollment enrollment : participantDrivers) {
WebDriver driver = enrollment.getDriver();
LoginPage.getLoginPage(driver, deploymentUrl).loginAs(enrollment.getUser()).resume();
NavigationPage participantNavBar = new NavigationPage(driver);
participantNavBar.openMyCourses().openSearch().extendedSearch(courseTitle).select(courseTitle).start();
// go to the enrollment
CoursePageFragment participantCourse = new CoursePageFragment(driver);
participantCourse.clickTree().selectWithTitle(enNodeTitle);
EnrollmentPage enrollmentPage = new EnrollmentPage(driver);
enrollmentPage.assertOnEnrolmentPage();
enrollment.setEnrollmentPage(enrollmentPage);
}
// enroll
for (Enrollment enrollment : participantDrivers) {
enrollment.getEnrollmentPage().enrollNoWait();
}
// wait
int errors = 0;
for (Enrollment enrollment : participantDrivers) {
if (enrollment.getEnrollmentPage().hasError()) {
errors++;
}
}
// author check the lists
authorGroup.openMembers();
// must a participant and 2 in waiting list
int participants = 0;
for (Enrollment enrollment : participantDrivers) {
if (authorGroup.isInMembersParticipantList(enrollment.getUser())) {
participants++;
}
}
Assert.assertEquals(3, participants);
Assert.assertEquals(0, errors);
}
use of org.olat.selenium.page.course.CoursePageFragment in project OpenOLAT by OpenOLAT.
the class BusinessGroupTest method enrollmentWithMultiEnrollment.
/**
* An author create a course, with an enrollment course element. It
* configure it and create 3 groups and set the maximum enrollment counter to 2<br>
*
* One user goes to the course and enrolls in 2 of the groups. It shouldent be possible
* enroll in the third<br>
*
* @param authorLoginPage
* @param ryomouBrowser
* @throws IOException
* @throws URISyntaxException
*/
@Test
@RunAsClient
public void enrollmentWithMultiEnrollment(@InitialPage LoginPage authorLoginPage, @Drone @User WebDriver ryomouBrowser) throws IOException, URISyntaxException {
UserVO author = new UserRestClient(deploymentUrl).createAuthor();
authorLoginPage.loginAs(author.getLogin(), author.getPassword());
UserVO ryomou = new UserRestClient(deploymentUrl).createRandomUser("Ryomou");
// create a course
String courseTitle = "Enrolment-3-" + UUID.randomUUID();
navBar.openAuthoringEnvironment().createCourse(courseTitle).clickToolbarBack();
// create a course element of type Enrolment
String enNodeTitle = "Enrolment-3";
CourseEditorPageFragment courseEditor = CoursePageFragment.getCourse(browser).edit();
courseEditor.createNode("en").nodeTitle(enNodeTitle);
// configure enrolment with a group that we create
List<String> groups = new ArrayList<String>();
groups.add("Enrolment group - 3 " + UUID.randomUUID());
groups.add("Enrolment group - 3 " + UUID.randomUUID());
groups.add("Enrolment group - 3 " + UUID.randomUUID());
EnrollmentConfigurationPage enrolmentConfig = new EnrollmentConfigurationPage(browser);
enrolmentConfig.selectConfiguration().createBusinessGroup(groups.get(0), "-", 4, false, false).createBusinessGroup(groups.get(1), "-", 4, false, false).createBusinessGroup(groups.get(2), "-", 4, false, false).selectMultipleEnrollments(2);
// publish the course
courseEditor.publish().quickPublish(UserAccess.registred);
courseEditor.clickToolbarBack();
for (String groupName : groups) {
navBar.openGroups(browser).selectGroup(groupName).openAdministration().openAdminMembers().setVisibility(true, true, false).openMembers();
}
// Ryomou open the course
LoginPage.getLoginPage(ryomouBrowser, deploymentUrl).loginAs(ryomou).resume();
NavigationPage participantNavBar = new NavigationPage(ryomouBrowser);
participantNavBar.openMyCourses().openSearch().extendedSearch(courseTitle).select(courseTitle).start();
OOGraphene.waitBusy(ryomouBrowser);
// go to the enrollment
CoursePageFragment participantCourse = new CoursePageFragment(ryomouBrowser);
participantCourse.clickTree().selectWithTitle(enNodeTitle);
EnrollmentPage enrollmentPage = new EnrollmentPage(ryomouBrowser);
enrollmentPage.assertOnEnrolmentPage().multiEnroll(2);
// assert that that no more enrollment is allowed
enrollmentPage.assertNoEnrollmentAllowed();
}
use of org.olat.selenium.page.course.CoursePageFragment in project OpenOLAT by OpenOLAT.
the class CourseTest method createCourse_withWizard.
/**
* Create a course, use the course wizard, select all course
* elements and go further with the standard settings.
*
* Go from the description editor to the course, check
* that the course is automatically published and that
* the five course elements are there.
*
* @param loginPage
* @throws IOException
* @throws URISyntaxException
*/
@Test
@RunAsClient
public void createCourse_withWizard(@InitialPage LoginPage loginPage) throws IOException, URISyntaxException {
UserVO author = new UserRestClient(deploymentUrl).createAuthor();
loginPage.loginAs(author.getLogin(), author.getPassword());
// go to authoring
AuthoringEnvPage authoringEnv = navBar.assertOnNavigationPage().openAuthoringEnvironment();
String title = "Create-Course-Wizard-" + UUID.randomUUID().toString();
// create course
CourseWizardPage courseWizard = authoringEnv.openCreateDropDown().clickCreate(ResourceType.course).fillCreateFormAndStartWizard(title);
courseWizard.selectAllCourseElements().nextNodes().nextCatalog().finish();
// OOGraphene.closeErrorBox(browser);//STMP error
RepositoryEditDescriptionPage editDescription = new RepositoryEditDescriptionPage(browser);
// from description editor, back to details and launch the course
editDescription.assertOnGeneralTab();
// close mail error
OOGraphene.closeErrorBox(browser);
editDescription.clickToolbarBack();
// open course editor
CoursePageFragment course = CoursePageFragment.getCourse(browser);
course.assertOnCoursePage().assertOnTitle(title);
// assert the 5 nodes are there and click them
By nodeBy = By.cssSelector("span.o_tree_link.o_tree_l1.o_tree_level_label_leaf>a");
List<WebElement> nodes = browser.findElements(nodeBy);
Assert.assertEquals(5, nodes.size());
for (WebElement node : nodes) {
node.click();
OOGraphene.waitBusy(browser);
}
}
use of org.olat.selenium.page.course.CoursePageFragment in project OpenOLAT by OpenOLAT.
the class CourseTest method createCourse.
/**
* An author create a course, jump to it, open the editor
* add an info messages course element, publish the course
* and view it.
*
* @param loginPage
* @throws IOException
* @throws URISyntaxException
*/
@Test
@RunAsClient
public void createCourse(@InitialPage LoginPage loginPage) throws IOException, URISyntaxException {
UserVO author = new UserRestClient(deploymentUrl).createAuthor();
loginPage.loginAs(author.getLogin(), author.getPassword());
// go to authoring
AuthoringEnvPage authoringEnv = navBar.assertOnNavigationPage().openAuthoringEnvironment();
String title = "Create-Selen-" + UUID.randomUUID();
// create course
RepositoryEditDescriptionPage editDescription = authoringEnv.openCreateDropDown().clickCreate(ResourceType.course).fillCreateForm(title).assertOnGeneralTab();
// from description editor, back to the course
editDescription.clickToolbarBack();
// open course editor
CoursePageFragment course = CoursePageFragment.getCourse(browser);
CourseEditorPageFragment editor = course.assertOnCoursePage().assertOnTitle(title).openToolsMenu().edit();
// create a course element of type info messages
PublisherPageFragment publisher = editor.assertOnEditor().createNode("info").publish();
// publish
publisher.assertOnPublisher().nextSelectNodes().selectAccess(UserAccess.guest).nextAccess().selectCatalog(false).nextCatalog().finish();
// back to the course
CoursePageFragment publishedCourse = editor.clickToolbarBack();
// review the course
publishedCourse.assertOnCoursePage().clickTree();
}
Aggregations