use of org.olat.selenium.page.course.CoursePageFragment in project OpenOLAT by OpenOLAT.
the class CourseElementTest method createCourseWithBlog_externalFeed.
@Test
@RunAsClient
public void createCourseWithBlog_externalFeed(@InitialPage LoginPage loginPage) throws IOException, URISyntaxException {
UserVO author = new UserRestClient(deploymentUrl).createAuthor();
loginPage.loginAs(author.getLogin(), author.getPassword());
// create a course
String courseTitle = "Course-With-Blog-" + UUID.randomUUID().toString();
navBar.openAuthoringEnvironment().createCourse(courseTitle).clickToolbarBack();
String blogNodeTitle = "Blog-1";
String blogTitle = "Blog - " + UUID.randomUUID();
// create a course element of type blog
CourseEditorPageFragment courseEditor = CoursePageFragment.getCourse(browser).edit();
courseEditor.createNode("blog").nodeTitle(blogNodeTitle).selectTabLearnContent().createFeed(blogTitle);
// publish the course
courseEditor.publish().quickPublish();
// open the course and see the blog
CoursePageFragment course = courseEditor.clickToolbarBack();
course.clickTree().selectWithTitle(blogNodeTitle);
// check that the title of the podcast is correct
WebElement podcastH2 = browser.findElement(By.cssSelector("div.o_blog_info>h2>i.o_FileResource-BLOG_icon"));
Assert.assertNotNull(podcastH2);
// Assert.assertEquals(blogTitle, podcastH2.getText().trim());
FeedPage feed = FeedPage.getFeedPage(browser);
feed.newExternalBlog(blogTitle, "https://www.openolat.com/feed/");
// check only that the subscription link is visible
/*
By subscriptionBy = By.cssSelector("div.o_subscription>a");
OOGraphene.waitElement(subscriptionBy, 20, browser);
WebElement subscriptionLink = browser.findElement(subscriptionBy);
Assert.assertTrue(subscriptionLink.isDisplayed());
*/
}
use of org.olat.selenium.page.course.CoursePageFragment in project OpenOLAT by OpenOLAT.
the class CourseElementTest method createCourseWithQTITest.
@Test
@RunAsClient
public void createCourseWithQTITest(@InitialPage LoginPage loginPage) throws IOException, URISyntaxException {
UserVO author = new UserRestClient(deploymentUrl).createAuthor();
loginPage.loginAs(author.getLogin(), author.getPassword());
// create a course
String courseTitle = "Course-With-QTI-Test-1.2-" + UUID.randomUUID().toString();
navBar.openAuthoringEnvironment().createCourse(courseTitle).clickToolbarBack();
String testNodeTitle = "QTITest-1";
String testTitle = "Test - " + UUID.randomUUID().toString();
// create a course element of type CP with the CP that we create above
CourseEditorPageFragment courseEditor = CoursePageFragment.getCourse(browser).edit();
courseEditor.createNode("iqtest").nodeTitle(testNodeTitle).selectTabLearnContent().createQTI12Test(testTitle);
// publish the course
courseEditor.publish().quickPublish();
// open the course and see the CP
CoursePageFragment course = courseEditor.clickToolbarBack();
course.clickTree().selectWithTitle(testNodeTitle);
// check that the title of the start page of test is correct
WebElement testH2 = browser.findElement(By.cssSelector("div.o_course_run h2"));
Assert.assertEquals(testNodeTitle, testH2.getText().trim());
}
use of org.olat.selenium.page.course.CoursePageFragment in project OpenOLAT by OpenOLAT.
the class CourseElementTest method createCourseWithMemberList.
/**
* An author create a course with a member list course element.
* It add two participants and a coach. It publish the course and
* check that it sees the authors, coaches and participants.<br>
* After that, it edits the course and change the settins to only
* show the participants. It checks that only the participants are
* visible.<br>
* At least, it changes the settings a second time to only show
* the course coaches.
*
* @param authorLoginPage
* @throws IOException
* @throws URISyntaxException
*/
@Test
@RunAsClient
public void createCourseWithMemberList(@InitialPage LoginPage authorLoginPage) throws IOException, URISyntaxException {
UserVO author = new UserRestClient(deploymentUrl).createAuthor();
UserVO coach = new UserRestClient(deploymentUrl).createRandomUser("Rei");
UserVO participant1 = new UserRestClient(deploymentUrl).createRandomUser("Kanu");
UserVO participant2 = new UserRestClient(deploymentUrl).createRandomUser("Ryomou");
authorLoginPage.loginAs(author.getLogin(), author.getPassword());
// go to authoring
AuthoringEnvPage authoringEnv = navBar.assertOnNavigationPage().openAuthoringEnvironment();
String title = "Course partilist " + UUID.randomUUID();
// create course
authoringEnv.openCreateDropDown().clickCreate(ResourceType.course).fillCreateForm(title).assertOnGeneralTab().clickToolbarBack();
// add 2 participants
CoursePageFragment course = new CoursePageFragment(browser);
MembersPage members = course.members();
members.importMembers().setMembers(participant1, participant2).nextUsers().nextOverview().nextPermissions().finish();
// add a coach
course.members().addMember().searchMember(coach, true).nextUsers().nextOverview().selectRepositoryEntryRole(false, true, false).nextPermissions().finish();
members.clickToolbarBack();
String memberListTitle = "MemberList";
// open course editor
CourseEditorPageFragment editor = course.assertOnCoursePage().assertOnTitle(title).openToolsMenu().edit().createNode("cmembers").nodeTitle(memberListTitle);
// publish
editor.publish().quickPublish(UserAccess.registred);
editor.clickToolbarBack();
course.clickTree().selectWithTitle(memberListTitle);
// check the default configuration with authors, coaches and participants
MemberListPage memberList = new MemberListPage(browser);
memberList.assertOnOwner(author.getFirstName()).assertOnCoach(coach.getFirstName()).assertOnParticipant(participant1.getFirstName()).assertOnParticipant(participant2.getFirstName());
// the author is not satisfied with the configuration
editor = course.openToolsMenu().edit().selectNode(memberListTitle);
MemberListConfigurationPage memberListConfig = new MemberListConfigurationPage(browser);
memberListConfig.selectSettings().setOwners(Boolean.FALSE).setCoaches(Boolean.FALSE).save();
// go check the results
course = editor.autoPublish();
course.clickTree().selectWithTitle(memberListTitle);
memberList.assertOnMembers().assertOnNotOwner(author.getFirstName()).assertOnNotCoach(coach.getFirstName()).assertOnParticipant(participant1.getFirstName()).assertOnParticipant(participant2.getFirstName());
// perhaps only the coaches
editor = course.openToolsMenu().edit().selectNode(memberListTitle);
memberListConfig = new MemberListConfigurationPage(browser);
memberListConfig.selectSettings().setCoaches(Boolean.TRUE).setCourseCoachesOnly().setParticipants(Boolean.FALSE).save();
// go check that we see only the coaches results
course = editor.autoPublish();
course.clickTree().selectWithTitle(memberListTitle);
memberList.assertOnMembers().assertOnNotOwner(author.getFirstName()).assertOnCoach(coach.getFirstName()).assertOnNotParticipant(participant1.getFirstName()).assertOnNotParticipant(participant2.getFirstName());
}
use of org.olat.selenium.page.course.CoursePageFragment in project OpenOLAT by OpenOLAT.
the class CourseElementTest method forumWithGuest.
/**
* An administrator create a category in catalog. It creates a new course
* with a forum open to guests. it publish the course in the
* catalog.<br>
* The guest find the course, create a new thread. The administrator reply
* to the message, the guest to its reply.<br>
* The administrator checks the last message in its new messages, click
* back, use the list of users to see the messages of the guest. It clicks
* back to the threads list and checks the thread has 3 messages.
*
* @param loginPage
* @param guestBrowser
* @throws IOException
* @throws URISyntaxException
*/
@Test
@RunAsClient
public void forumWithGuest(@InitialPage LoginPage loginPage, @Drone @User WebDriver guestBrowser) throws IOException, URISyntaxException {
loginPage.loginAs("administrator", "openolat").resume();
String node1 = "Forums " + UUID.randomUUID();
navBar.openCatalogAdministration().addCatalogNode(node1, "First level of the catalog");
// create a course
String courseTitle = "Guest FO " + UUID.randomUUID();
navBar.openAuthoringEnvironment().createCourse(courseTitle).clickToolbarBack();
// go the authoring environment to create a forum
String foTitle = "GFO - " + UUID.randomUUID();
CourseEditorPageFragment courseEditor = CoursePageFragment.getCourse(browser).edit();
courseEditor.createNode("fo").nodeTitle(foTitle);
// configure for guest
ForumCEPage forumConfig = new ForumCEPage(browser);
forumConfig.selectConfiguration().allowGuest();
// publish the course
courseEditor.publish().nextSelectNodes().selectAccess(UserAccess.guest).nextAccess().selectCatalog(true).selectCategory(null, node1).nextCatalog().finish();
// back in course
courseEditor.clickToolbarBack();
// guest go to the catalog and find the course
LoginPage guestLogin = LoginPage.getLoginPage(guestBrowser, deploymentUrl);
guestLogin.asGuest();
NavigationPage guestNavBar = new NavigationPage(guestBrowser);
guestNavBar.openCatalog().selectCatalogEntry(node1).select(courseTitle).start();
// go to the forum
new CoursePageFragment(guestBrowser).clickTree().selectWithTitle(foTitle.substring(0, 20));
String guestAlias = "Guest-" + UUID.randomUUID();
ForumPage guestForum = ForumPage.getCourseForumPage(guestBrowser).createThread("Your favorite author", "Name your favorite author", guestAlias);
// admin go to the forum
new CoursePageFragment(browser).clickTree().selectWithTitle(foTitle.substring(0, 20));
// admin reply to the thread of guest
ForumPage adminForum = ForumPage.getCourseForumPage(browser).openThread("Your favorite author").assertOnGuestPseudonym(guestAlias).newMessages().assertOnGuestPseudonym(guestAlias).replyToMessage("Your favorite author", "Huxley is my favorite author", "My favorite author is Huxley");
// guest refresh the view and reply to admin
guestForum.flatView().assertMessageBody("Huxley").replyToMessage("Huxley is my favorite author", " I prefer Orwell", "Orwell is my favorite author");
// admin see its new messages, see the list of users, select the guest and its messages
// JMS message need to be delivered
OOGraphene.waitingALittleLonger();
adminForum.newMessages().assertMessageBody("Orwell").clickBack().userFilter().selectFilteredUser(guestAlias).assertMessageBody("Orwell").clickBack().clickBack().assertThreadListOnNumber("Your favorite author", 3);
}
use of org.olat.selenium.page.course.CoursePageFragment in project OpenOLAT by OpenOLAT.
the class CourseElementTest method forumConcurrent.
/**
* An author creates a course with a forum, publish it, open a new thread.
* A first user come to see the thread. A second come via the peekview.
* The three make a reply at the same time. And they check that they see
* the replies, and the ones of the others.
*
* @param loginPage
* @param kanuBrowser
* @param reiBrowser
* @throws IOException
* @throws URISyntaxException
*/
@Test
@RunAsClient
public void forumConcurrent(@InitialPage LoginPage loginPage, @Drone @Participant WebDriver kanuBrowser, @Drone @Student WebDriver reiBrowser) throws IOException, URISyntaxException {
UserVO author = new UserRestClient(deploymentUrl).createAuthor();
UserVO kanu = new UserRestClient(deploymentUrl).createRandomUser("Kanu");
UserVO rei = new UserRestClient(deploymentUrl).createRandomUser("Rei");
loginPage.loginAs(author.getLogin(), author.getPassword());
// create a course
String courseTitle = "Course FO " + UUID.randomUUID();
navBar.openAuthoringEnvironment().createCourse(courseTitle).clickToolbarBack();
// go the authoring environment to create a forum
String foTitle = "FO - " + UUID.randomUUID();
CourseEditorPageFragment courseEditor = CoursePageFragment.getCourse(browser).edit();
courseEditor.createNode("fo").nodeTitle(foTitle).publish().quickPublish(UserAccess.registred);
// go to the forum
courseEditor.clickToolbarBack().clickTree().selectWithTitle(foTitle.substring(0, 20));
ForumPage authorForum = ForumPage.getCourseForumPage(browser);
authorForum.createThread("The best anime ever", "What is the best anime ever?", null);
// First user go to the course
LoginPage kanuLoginPage = LoginPage.getLoginPage(kanuBrowser, deploymentUrl);
kanuLoginPage.loginAs(kanu.getLogin(), kanu.getPassword()).resume();
NavigationPage kanuNavBar = new NavigationPage(kanuBrowser);
kanuNavBar.openMyCourses().openSearch().extendedSearch(courseTitle).select(courseTitle).start();
// go to the forum
new CoursePageFragment(kanuBrowser).clickTree().selectWithTitle(foTitle.substring(0, 20));
ForumPage kanuForum = ForumPage.getCourseForumPage(kanuBrowser).openThread("The best anime ever");
// First user go to the course
LoginPage reiLoginPage = LoginPage.getLoginPage(reiBrowser, deploymentUrl);
reiLoginPage.loginAs(rei).resume();
NavigationPage reiNavBar = new NavigationPage(reiBrowser);
reiNavBar.openMyCourses().openSearch().extendedSearch(courseTitle).select(courseTitle).start();
// select the thread in peekview
ForumPage reiForum = new ForumPage(reiBrowser).openThreadInPeekview("The best anime ever");
// concurrent reply
String kanuReply = "Ikki Touzen";
String reiReply = "Neon Genesis Evangelion";
String authorReply = "Lain, serial experiment";
authorForum.replyToMessageNoWait("The best anime ever", null, authorReply);
reiForum.replyToMessageNoWait("The best anime ever", null, reiReply);
kanuForum.replyToMessageNoWait("The best anime ever", null, kanuReply);
// wait the responses
OOGraphene.waitBusy(browser);
OOGraphene.waitBusy(kanuBrowser);
OOGraphene.waitBusy(reiBrowser);
// check own responses
authorForum.assertMessageBody(authorReply);
kanuForum.assertMessageBody(kanuReply);
reiForum.assertMessageBody(reiReply);
// check others responses
authorForum.flatView().waitMessageBody(kanuReply);
reiForum.flatView().waitMessageBody(kanuReply);
kanuForum.flatView().waitMessageBody(reiReply);
}
Aggregations