/** * <a href="http://www.openolat.org"> * OpenOLAT - Online Learning and Training</a><br> * <p> * Licensed under the Apache License, Version 2.0 (the "License"); <br> * you may not use this file except in compliance with the License.<br> * You may obtain a copy of the License at the * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> * <p> * Unless required by applicable law or agreed to in writing,<br> * software distributed under the License is distributed on an "AS IS" BASIS, <br> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> * See the License for the specific language governing permissions and <br> * limitations under the License. * <p> * Initial code contributed and copyrighted by<br> * frentix GmbH, http://www.frentix.com * <p> */ package org.olat.selenium.page.course; import java.io.File; import java.util.List; import org.jboss.arquillian.drone.api.annotation.Drone; import org.junit.Assert; import org.olat.selenium.page.graphene.OOGraphene; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; /** * Drive the group task course element. * * Initial date: 22.05.2015<br> * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com * */ public class GroupTaskPage { @Drone private WebDriver browser; public GroupTaskPage() { // } public GroupTaskPage(WebDriver browser) { this.browser = browser; } public GroupTaskPage assertAssignmentAvailable() { By assignmentBy = By.id("o_step_assignement_content"); List<WebElement> assignementEls = browser.findElements(assignmentBy); Assert.assertEquals(1, assignementEls.size()); return this; } public GroupTaskPage assertTask(String taskName) { By selectLinkBy = By.xpath("//div[@id='o_step_assignement_content']//h5//span[contains(text(),'" + taskName + "')]"); List<WebElement> selectLinkEls = browser.findElements(selectLinkBy); Assert.assertFalse(selectLinkEls.isEmpty()); return this; } public GroupTaskPage assertSubmissionAvailable() { By assignmentBy = By.id("o_step_submit_content"); List<WebElement> assignementEls = browser.findElements(assignmentBy); Assert.assertEquals(1, assignementEls.size()); return this; } public GroupTaskPage selectTask(int pos) { By taskBy = By.xpath("//div[@id='o_step_assignement_content']//table//td//a[contains(@href,'select')]"); List<WebElement> assignementEls = browser.findElements(taskBy); Assert.assertTrue(pos < assignementEls.size()); assignementEls.get(pos).click(); OOGraphene.waitAndCloseBlueMessageWindow(browser); return this; } public GroupTaskPage submitFile(File file) { return uploadFile("o_step_submit_content", file); } public GroupTaskPage submitRevisedFile(File file) { return uploadFile("o_step_revision_content", file); } private GroupTaskPage uploadFile(String stepId, File file) { By uploadButtonBy = By.cssSelector("#" + stepId + " .o_sel_course_gta_submit_file"); browser.findElement(uploadButtonBy).click(); OOGraphene.waitBusy(browser); OOGraphene.waitModalDialog(browser); By inputBy = By.cssSelector(".o_fileinput input[type='file']"); OOGraphene.uploadFile(inputBy, file, browser); OOGraphene.waitBusy(browser); By saveButtonBy = By.cssSelector(".o_sel_course_gta_upload_form button.btn-primary"); browser.findElement(saveButtonBy).click(); OOGraphene.waitBusy(browser); return this; } public GroupTaskPage submitText(String filename, String text) { By uploadButtonBy = By.cssSelector("#o_step_submit_content .o_sel_course_gta_create_doc"); browser.findElement(uploadButtonBy).click(); OOGraphene.waitBusy(browser); OOGraphene.waitModalDialog(browser); By filenameBy = By.cssSelector(".o_sel_course_gta_doc_filename input[type='text']"); browser.findElement(filenameBy).sendKeys(filename); By saveBy = By.cssSelector(".o_sel_course_gta_new_doc_form button.btn-primary"); browser.findElement(saveBy).click(); OOGraphene.waitBusy(browser); OOGraphene.tinymce(text, browser); By saveAndCloseBy = By.cssSelector("#o_button_saveclose a.btn"); browser.findElement(saveAndCloseBy).click(); OOGraphene.waitBusy(browser); return this; } public GroupTaskPage submitDocuments() { By submitBy = By.cssSelector("#o_step_submit_content .o_sel_course_gta_submit_docs"); browser.findElement(submitBy).click(); OOGraphene.waitBusy(browser); //confirm confirmDialog(); OOGraphene.waitAndCloseBlueMessageWindow(browser); return this; } public GroupTaskPage submitRevision() { By submitBy = By.cssSelector("#o_step_revision_content .o_sel_course_gta_submit_revisions"); browser.findElement(submitBy).click(); OOGraphene.waitBusy(browser); return confirmDialog(); } /** * Confirm a yes / no dialog box */ private GroupTaskPage confirmDialog() { By confirmButtonBy = By.cssSelector("div.modal-dialog div.modal-footer a"); OOGraphene.waitElement(confirmButtonBy, 5, browser); browser.findElement(confirmButtonBy).click(); OOGraphene.waitBusy(browser); return this; } public GroupTaskPage assertPassed() { By passedBy = By.cssSelector("#o_step_grading_content table tr.o_state.o_passed"); List<WebElement> passedEls = browser.findElements(passedBy); Assert.assertFalse(passedEls.isEmpty()); return this; } }