Index: lams_tests/tests/org/lamsfoundation/lams/pages/IndexPage.java =================================================================== diff -u -r4dea7ee858c3b437aebe1d0afe4f374b7ec0dd94 -rc70cca5e5b404eac9ea66b3746aff674db6eb874 --- lams_tests/tests/org/lamsfoundation/lams/pages/IndexPage.java (.../IndexPage.java) (revision 4dea7ee858c3b437aebe1d0afe4f374b7ec0dd94) +++ lams_tests/tests/org/lamsfoundation/lams/pages/IndexPage.java (.../IndexPage.java) (revision c70cca5e5b404eac9ea66b3746aff674db6eb874) @@ -22,7 +22,11 @@ package org.lamsfoundation.lams.pages; +import java.util.ArrayList; +import java.util.List; + import org.lamsfoundation.lams.pages.author.FLAPage; +import org.lamsfoundation.lams.pages.monitor.MonitorPage; import org.lamsfoundation.lams.pages.monitor.addlesson.AddLessonPage; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; @@ -39,41 +43,238 @@ * */ public class IndexPage extends AbstractPage { - + @FindBy(id = "openFla") private WebElement flaLink; - + @FindBy(id = "My Profile") private WebElement myProfileTab; - + @FindBy(className = "add-lesson-button") private WebElement addLessonButton; + @FindBy(id = "refreshButton") + private WebElement refreshButton; + @FindBy(id = "logoutButton") + private WebElement logoutButton; + + @FindBy(className = "lesson-table") + private WebElement lessonTable; + public IndexPage(WebDriver driver) { super(driver); } - + public FLAPage openFla() { flaLink.click(); driver.switchTo().window("FlashlessAuthoring"); return PageFactory.initElements(driver, FLAPage.class); } - + public AddLessonPage addLesson() { - + addLessonButton.click(); - WebDriverWait wait = new WebDriverWait(driver, 2); + WebDriverWait wait = new WebDriverWait(driver, 3); wait.until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(By.id("dialogFrame"))); - + return PageFactory.initElements(driver, AddLessonPage.class); } - + public Boolean isLessonPresent(String lessonName) { return ((driver.findElements(By.linkText(lessonName)).size() > 0) ? true : false); + + } + + /** + * Monitoring + * + */ + + /** + * Opens Monitoring for a given lesson name + * + * @param lessonName the name of the lesson to open + * @return {@link MonitorPage} + */ + public MonitorPage openMonitorLessonByLessonName(String lessonName) { + + String lessonId = getLessonId(lessonName); + openMonitorLessonById(lessonId); + + return PageFactory.initElements(driver, MonitorPage.class); + } + /** + * Open monitoring for a given lesson ID + * + * @param id + * @return + */ + public MonitorPage openMonitorLessonById(String lessonId) { + + WebElement lessonMonitor = lessonTable.findElement(By.id(lessonId)); + + lessonMonitor.findElement((By.className("mycourses-monitor-img"))).click(); + + return PageFactory.initElements(driver, MonitorPage.class); } + + + /** + * Gets all the lesson names on a list + * + * @return List lesson names + */ + public List getAllLessonNames() { + + List allLessonNames = new ArrayList(); + + List lessons = lessonTable.findElements(By.className("j-single-lesson")); + + for (WebElement lesson : lessons) { + + String lessonName = lesson.findElement(By.tagName("a")).getText(); + + allLessonNames.add(lessonName); + + } + + return allLessonNames; + + } + + /** + * Returns a string with lesson actions available for the given lesson + * + * All actions available: + * - Remove + * - Conditions + * - Mark + * - Notifications + * - Monitor + * + * @param lessonName + * @return List of string with lesson actions + */ + public List getAvailableLessonActions(String lessonName) { + + List lessonActions = new ArrayList(); + + // Get lesson row + WebElement lesson = getLessonRowByName(lessonName); + + // Get lesson actions + WebElement lessonActionDiv = lesson.findElement(By.className("lesson-actions")); + List actions = lessonActionDiv.findElements(By.tagName("span")); + + // iterate thru actions and put them in the list + for (WebElement action : actions) { + lessonActions.add(action.getAttribute("innerHTML").trim()); + + } + + return lessonActions; + } + + public Boolean isLessonCompleted(String lessonName) { + + WebElement lesson = getLessonRowByName(lessonName); + + List isCompleted = lesson.findElements(By.className("mycourses-completed-img")); + + return ((isCompleted.size() > 0) ? true : false); + + } + + public IndexPage refresh() { + + refreshButton.click(); + + return PageFactory.initElements(driver, IndexPage.class); + + } + + + public void openLessonAsLearner() { + + } + + public Boolean isLessonAvailableAsLearner(String lessonName) { + + WebElement lesson = getLessonRowByName(lessonName); + + WebElement lessonLink = lesson.findElement(By.tagName("a")); + + String classAttribute = lessonLink.getAttribute("class"); + + return ((classAttribute.equals("disabled-sequence-name-link")) ? false : true); + + } + + /** + * Returns all the lesson nodes found on the page + * + * @return List of nodes + */ + private List getAllLessonNodes() { + + return lessonTable.findElements(By.className("j-single-lesson")); + + } + + + /** + * Returns the lessonId for a given lesson name + * + * @param lessonName + * @return lessonID as string + */ + private String getLessonId(String lessonName) { + + List allLessons = getAllLessonNodes(); + + String lessonId = ""; + + for (WebElement lesson : allLessons) { + + String name = lesson.findElement(By.tagName("a")).getText().trim(); + + if (name.equals(lessonName.trim())) { + + lessonId = lesson.getAttribute("id"); + break; + } + + + } + + return lessonId; + + } + + + + private WebElement getLessonRowByName(String lessonName) { + + WebElement lessonRow = null; + + String lessonId = getLessonId(lessonName); + + lessonRow = getLessonRowById(lessonId); + + return lessonRow; + + } + + private WebElement getLessonRowById(String lessonId) { + + return lessonTable.findElement(By.id(lessonId)); + + } + + } Index: lams_tests/tests/org/lamsfoundation/lams/pages/monitor/MonitorPage.java =================================================================== diff -u --- lams_tests/tests/org/lamsfoundation/lams/pages/monitor/MonitorPage.java (revision 0) +++ lams_tests/tests/org/lamsfoundation/lams/pages/monitor/MonitorPage.java (revision c70cca5e5b404eac9ea66b3746aff674db6eb874) @@ -0,0 +1,44 @@ +/**************************************************************** + * Copyright (C) 2014 LAMS Foundation (http://lamsfoundation.org) + * ============================================================= + * License Information: http://lamsfoundation.org/licensing/lams/2.0/ + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2.0 + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 * USA + * + * http://www.gnu.org/licenses/gpl.txt + * **************************************************************** + */ + +package org.lamsfoundation.lams.pages.monitor; + +import org.lamsfoundation.lams.pages.AbstractPage; +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.support.PageFactory; + +public class MonitorPage extends AbstractPage { + + public MonitorPage(WebDriver driver) { + super(driver); + + } + + public MonitorPage name() { + + + + return PageFactory.initElements(driver, MonitorPage.class); + + } + +}