Index: lams_tests/tests/org/lamsfoundation/lams/monitor/AddLessonTests.java =================================================================== RCS file: /usr/local/cvsroot/lams_tests/tests/org/lamsfoundation/lams/monitor/AddLessonTests.java,v diff -u -r1.1 -r1.2 --- lams_tests/tests/org/lamsfoundation/lams/monitor/AddLessonTests.java 24 Oct 2014 14:04:08 -0000 1.1 +++ lams_tests/tests/org/lamsfoundation/lams/monitor/AddLessonTests.java 26 Oct 2014 22:38:05 -0000 1.2 @@ -53,7 +53,7 @@ @BeforeClass public void beforeClass() { driver = new FirefoxDriver(); - driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); + driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS); onLogin = PageFactory.initElements(driver, LoginPage.class); index = PageFactory.initElements(driver, IndexPage.class); @@ -76,6 +76,7 @@ final String addButton= "Add now"; AddLessonPage addLesson = new AddLessonPage(driver); + addLesson.maximizeWindows(); addLesson = openDialog(index); String assertFrameOpen = addLesson.checkAddLessonButton(); @@ -236,25 +237,43 @@ boolean wasLessonCreated = index.isLessonPresent(lessonName); Assert.assertTrue(wasLessonCreated, "Lesson " + lessonName + " was not found!"); + + } - private void selectRandomDesign(AddLessonPage addLesson, String lessonName) { + + @Test(dependsOnMethods="createLessonWithAllMonitors") + public void createLessonWithOnlyOneLearner() { + + String lessonName = "Only one learner " + RANDOM_INT; - // Gets all the nodes in the user's folder - List designs = addLesson.openLessontab().getFolderNodes("user"); + addLesson = openDialog(index); + + selectRandomDesign(addLesson, "Only one learner " + RANDOM_INT); + + // Remove all learners + addLesson.openClasstab().removeAllLearnersFromLesson(); + + // Now just add one + addLesson.openClasstab().addOneLearnerToLesson(); - int randomDesign = Integer.parseInt(LamsUtil.randInt(1, designs.size()-1)); + // Assert + int numberSelectedLearners = addLesson.openClasstab().getNumberSelectedLearners(); + Assert.assertEquals(numberSelectedLearners, 1, + "There seems to be more than one student in this lesson"); + selectRandomDesign(addLesson, lessonName); + + // Add lesson addLesson - .openLessontab() - .clickDesign(designs.get(randomDesign)) - .setLessonName(lessonName); + .addLessonNow(); - } + // Assert that lesson was created + boolean wasLessonCreated = index.isLessonPresent(lessonName); + + Assert.assertTrue(wasLessonCreated, "Lesson " + lessonName + " was not found!"); - @Test(dependsOnMethods="createLessonWithAllMonitors") - public void createLessonWithOnlyOneLearner() { } @@ -263,9 +282,77 @@ * Advanced tab tests */ + /** + * Checks the default tab settings + * + * Only Live Edit & lesson notification enabled. + * + */ @Test(dependsOnMethods="createLessonWithOnlyOneLearner") + public void checksDefaultAdvancedSettings() { + + addLesson = openDialog(index); + + Boolean isLessonIntroEnabled = addLesson.openAdvancedTab().isEnableLessonIntro(); + Boolean isStartInMonitor = addLesson.openAdvancedTab().isStartInMonitor(); + Boolean isLearnerStartBeginning = addLesson.openAdvancedTab().isLearnerRestart(); + Boolean isEnableLiveEdit = addLesson.openAdvancedTab().isEnableLiveEdit(); + Boolean isEnableLessonNotifications = addLesson.openAdvancedTab().isEnableLessonNotifications(); + Boolean isExportPortfolio = addLesson.openAdvancedTab().isEnablePortfolio(); + Boolean isEnablePresence = addLesson.openAdvancedTab().isEnablePresence(); + Boolean isEnableIM = addLesson.openAdvancedTab().isEnableIM(); + Boolean isSplitLearners = addLesson.openAdvancedTab().isSplitLearners(); + Boolean isScheduledEnable = addLesson.openAdvancedTab().isScheduledEnable(); + + // Assertions now + + Assert.assertFalse(isLessonIntroEnabled, "Lesson intro should be OFF"); + Assert.assertFalse(isStartInMonitor, "Start in monitor should be OFF"); + Assert.assertFalse(isLearnerStartBeginning, "Learner start from the beginning should be OFF"); + Assert.assertTrue(isEnableLiveEdit, "Live edit should be ON"); + Assert.assertTrue(isEnableLessonNotifications, "Lesson notifications should be ON"); + Assert.assertFalse(isExportPortfolio, "Export portfolio should be OFF"); + Assert.assertFalse(isEnablePresence, "Presence should be OFF"); + Assert.assertFalse(isEnableIM, "IM should be OFF"); + Assert.assertFalse(isSplitLearners, "Split learners into lessons should be OFF"); + Assert.assertFalse(isScheduledEnable, "Scheduling should be OFF"); + + + } + + @Test(dependsOnMethods="checksDefaultAdvancedSettings") public void createLessonWithIntro() { + String introHTMLTxt = "Hi! This is a new lesson

Try to have a go at it

"; + addLesson = openDialog(index); + + String lessonName = "Lesson with Intro " + RANDOM_INT; + selectRandomDesign(addLesson, lessonName); + + // + addLesson + .openAdvancedTab() + .setEnableLessonIntro() + .setIntroText(introHTMLTxt) + .setDisplayDesign(); + + String assertIntroTxt = addLesson + .openAdvancedTab() + .getIntroText(); + + // Assert lesson with intro + Assert.assertTrue(assertIntroTxt.contains(introHTMLTxt), "Intro text doesn't match"); + + // Add lesson + addLesson + .addLessonNow(); + + // Assert that lesson was created + boolean wasLessonCreated = index.isLessonPresent(lessonName); + + Assert.assertTrue(wasLessonCreated, "Lesson " + lessonName + " was not found!"); + + } @Test(dependsOnMethods="createLessonWithIntro") @@ -320,6 +407,30 @@ return addLesson; } + + private void selectRandomDesign(AddLessonPage addLesson, String lessonName) { + + // Gets all the nodes in the user's folder + List designs = addLesson.openLessontab().getFolderNodes("user"); + + System.out.println("# of designs:" + designs.size()); + + int randomDesign = Integer.parseInt(LamsUtil.randInt(1, designs.size()-1)); + + System.out.println("randomDesign : " + randomDesign ); + + addLesson + .openLessontab() + .clickDesign(designs.get(randomDesign)); + + Assert.assertTrue(addLesson.openLessontab().isDesignImageDisplayed(), + "Design image is not displayed"); + addLesson + .openLessontab() + .setLessonName(lessonName); + + + } } Index: lams_tests/tests/org/lamsfoundation/lams/pages/monitor/addlesson/AddLessonPage.java =================================================================== RCS file: /usr/local/cvsroot/lams_tests/tests/org/lamsfoundation/lams/pages/monitor/addlesson/AddLessonPage.java,v diff -u -r1.1 -r1.2 --- lams_tests/tests/org/lamsfoundation/lams/pages/monitor/addlesson/AddLessonPage.java 24 Oct 2014 14:04:08 -0000 1.1 +++ lams_tests/tests/org/lamsfoundation/lams/pages/monitor/addlesson/AddLessonPage.java 26 Oct 2014 22:38:05 -0000 1.2 @@ -44,7 +44,7 @@ private WebElement tabClassLink; @FindBy(id = "tabAdvanceHeader") - private WebElement tabAdvanceHeader; + private WebElement tabAdvancedLink; @FindBy(id = "tabConditionsLink") private WebElement tabConditionsLink; @@ -100,4 +100,12 @@ return PageFactory.initElements(driver, IndexPage.class); } + + public AdvancedTab openAdvancedTab() { + + tabAdvancedLink.click(); + + return PageFactory.initElements(driver, AdvancedTab.class); + + } } Index: lams_tests/tests/org/lamsfoundation/lams/pages/monitor/addlesson/AdvancedTab.java =================================================================== RCS file: /usr/local/cvsroot/lams_tests/tests/org/lamsfoundation/lams/pages/monitor/addlesson/AdvancedTab.java,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ lams_tests/tests/org/lamsfoundation/lams/pages/monitor/addlesson/AdvancedTab.java 26 Oct 2014 22:38:05 -0000 1.1 @@ -0,0 +1,260 @@ +/**************************************************************** + * 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.addlesson; + +import org.lamsfoundation.lams.pages.AbstractPage; +import org.openqa.selenium.JavascriptExecutor; +import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebElement; +import org.openqa.selenium.support.FindBy; +import org.openqa.selenium.support.PageFactory; + +public class AdvancedTab extends AbstractPage { + + @FindBy(id = "introEnableField") + private WebElement introEnableField; + + @FindBy(id = "cke_introDescription") + private WebElement ckEditorDescription; + + @FindBy(id = "introImageField") + private WebElement introImageField; + + @FindBy(id = "startMonitorField") + private WebElement startMonitorField; + + @FindBy(name = "learnerRestart") + private WebElement learnerRestart; + + @FindBy(name = "liveEditEnable") + private WebElement liveEditEnable; + + @FindBy(name = "notificationsEnable") + private WebElement notificationsEnable; + + @FindBy(name = "portfolioEnable") + private WebElement portfolioEnable; + + @FindBy(id = "presenceEnableField") + private WebElement presenceEnableField; + + @FindBy(id = "imEnableField") + private WebElement imEnableField; + + @FindBy(id = "splitLearnersField") + private WebElement splitLearnersField; + + @FindBy(id = "splitLearnersCountField") + private WebElement splitLearnersCountField; + + @FindBy(id = "schedulingEnableField") + private WebElement schedulingEnableField; + + @FindBy(id = "schedulingDatetime") + private WebElement schedulingDatetime; + + + public AdvancedTab(WebDriver driver) { + super(driver); + + } + + + public AdvancedTab setEnableLessonIntro() { + + introEnableField.click(); + + return PageFactory.initElements(driver, AdvancedTab.class); + + } + + public Boolean isEnableLessonIntro() { + + return introEnableField.isEnabled(); + + } + + + public AdvancedTab setIntroText(String txt) { + + // Insert text to CKEditor via javascript + ((JavascriptExecutor) + driver).executeScript("CKEDITOR.instances['introDescription'].setData('" + txt + "');"); + + return PageFactory.initElements(driver, AdvancedTab.class); + } + + public String getIntroText() { + + String getText = (String) ((JavascriptExecutor) + driver).executeScript("return (CKEDITOR.instances['introDescription'].getData());"); + + getText = getText.replaceAll("[\n\r]", ""); + return getText; + + } + + public AdvancedTab setDisplayDesign() { + + introImageField.click(); + + return PageFactory.initElements(driver, AdvancedTab.class); + } + + public Boolean isDisplayDesign() { + + return introImageField.isEnabled(); + + } + + public AdvancedTab setStartInMonitor() { + + startMonitorField.click(); + + return PageFactory.initElements(driver, AdvancedTab.class); + } + + public Boolean isStartInMonitor() { + + return startMonitorField.isEnabled(); + + } + + public AdvancedTab setLearnerRestart() { + + learnerRestart.click(); + + return PageFactory.initElements(driver, AdvancedTab.class); + } + + public Boolean isLearnerRestart() { + + return learnerRestart.isEnabled(); + + } + + public AdvancedTab setEnableLiveEdit() { + + liveEditEnable.click(); + + return PageFactory.initElements(driver, AdvancedTab.class); + } + + public Boolean isEnableLiveEdit() { + + return liveEditEnable.isEnabled(); + + } + + public AdvancedTab setEnableLessonNotifications() { + + notificationsEnable.click(); + + return PageFactory.initElements(driver, AdvancedTab.class); + } + + public Boolean isEnableLessonNotifications() { + + return notificationsEnable.isEnabled(); + + } + + public AdvancedTab setEnablePortfolio() { + + portfolioEnable.click(); + + return PageFactory.initElements(driver, AdvancedTab.class); + } + + public Boolean isEnablePortfolio() { + + return portfolioEnable.isEnabled(); + + } + + public AdvancedTab setEnablePresence() { + + presenceEnableField.click(); + + return PageFactory.initElements(driver, AdvancedTab.class); + } + + public Boolean isEnablePresence() { + + return presenceEnableField.isEnabled(); + + } + + public AdvancedTab setEnableIM() { + + imEnableField.click(); + + return PageFactory.initElements(driver, AdvancedTab.class); + } + + public Boolean isEnableIM() { + + return imEnableField.isEnabled(); + + } + + public AdvancedTab setSplitLearners() { + + splitLearnersField.click(); + + return PageFactory.initElements(driver, AdvancedTab.class); + } + + public Boolean isSplitLearners() { + + return splitLearnersField.isEnabled(); + + } + + public AdvancedTab setSplitCounter() { + + splitLearnersCountField.click(); + + return PageFactory.initElements(driver, AdvancedTab.class); + } + + public String getSplitCounter() { + + return splitLearnersCountField.getAttribute("value"); + + } + + public AdvancedTab setScheduleEnable() { + + schedulingEnableField.click(); + + return PageFactory.initElements(driver, AdvancedTab.class); + } + + public Boolean isScheduledEnable() { + + return schedulingEnableField.isEnabled(); + + } + +} Index: lams_tests/tests/org/lamsfoundation/lams/pages/monitor/addlesson/ClassTab.java =================================================================== RCS file: /usr/local/cvsroot/lams_tests/tests/org/lamsfoundation/lams/pages/monitor/addlesson/ClassTab.java,v diff -u -r1.1 -r1.2 --- lams_tests/tests/org/lamsfoundation/lams/pages/monitor/addlesson/ClassTab.java 24 Oct 2014 14:04:08 -0000 1.1 +++ lams_tests/tests/org/lamsfoundation/lams/pages/monitor/addlesson/ClassTab.java 26 Oct 2014 22:38:05 -0000 1.2 @@ -25,6 +25,7 @@ import java.util.List; import org.lamsfoundation.lams.pages.AbstractPage; +import org.lamsfoundation.lams.util.LamsUtil; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; @@ -86,6 +87,34 @@ return PageFactory.initElements(driver, ClassTab.class); } + public ClassTab removeAllLearnersFromLesson() { + + List choosenLearners = selectedLearners.findElements(By.tagName("div")); + + for (WebElement learner : choosenLearners) { + + learner.click(); + learnerMoveToLeft.click(); + + + } + + return PageFactory.initElements(driver, ClassTab.class); + } + + public ClassTab addOneLearnerToLesson() { + + List availableLearners = unselectedLearners.findElements(By.tagName("div")); + + int randomLearner = Integer.parseInt(LamsUtil.randInt(1, availableLearners.size()-1)); + + availableLearners.get(randomLearner).click(); + learnerMoveToRight.click(); + + return PageFactory.initElements(driver, ClassTab.class); + } + + public int getNumberSelectedMonitors() { return selectedMonitors.findElements(By.tagName("div")).size(); @@ -106,6 +135,8 @@ return unselectedLearners.findElements(By.tagName("div")).size(); } + + }