Index: lams_tests/tests/org/lamsfoundation/lams/pages/tool/forum/AdvancedTab.java =================================================================== RCS file: /usr/local/cvsroot/lams_tests/tests/org/lamsfoundation/lams/pages/tool/forum/AdvancedTab.java,v diff -u -r1.1 -r1.2 --- lams_tests/tests/org/lamsfoundation/lams/pages/tool/forum/AdvancedTab.java 13 Feb 2015 15:00:14 -0000 1.1 +++ lams_tests/tests/org/lamsfoundation/lams/pages/tool/forum/AdvancedTab.java 13 Feb 2015 17:19:47 -0000 1.2 @@ -22,7 +22,10 @@ package org.lamsfoundation.lams.pages.tool.forum; +import java.util.List; + import org.lamsfoundation.lams.pages.AbstractPage; +import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.support.FindBy; @@ -81,10 +84,7 @@ @FindBy(name="forum.reflectInstructions") private WebElement reflectInstructions; - - @FindBy(name="forum.allowNewTopic") - private WebElement allowNewTopic; - + @FindBy(name="forum.minimumReply") private WebElement minimumReply; @@ -356,14 +356,68 @@ return notifyLearnersOnMarkRelease.isSelected(); } + public void setRelectOnActivity(Boolean value) { + + if(value && !reflectOnActivity.isSelected()) { + + reflectOnActivity.click(); + + } else if(reflectOnActivity.isSelected() && !value) { + + reflectOnActivity.click(); + + } + + } + public boolean isReflectOnActivity() { return reflectOnActivity.isSelected(); } + public void setRelectionInstructions(String instructions) { + + reflectInstructions.clear(); + reflectInstructions.sendKeys(instructions); + + } - public boolean isAllowNewTopic() { + public String getReflectionInstructions() { - return allowNewTopic.isSelected(); + return reflectInstructions.getAttribute("value").trim(); + } + + public boolean isLimitReplies() { + + List options = driver.findElements(By.name("forum.allowNewTopic")); + + if(options.get(1).isSelected()) { + return true; + } else { + return false; + } + + } + + public void setLimitReplies(String min, String max) { + + List options = driver.findElements(By.name("forum.allowNewTopic")); + + options.get(1).click(); + minimumReply.sendKeys(min); + maximumReply.sendKeys(max); + + } + + public String getMinReply() { + + return minimumReply.getAttribute("value").trim(); + } + + public String getMaxReply() { + + return maximumReply.getAttribute("value").trim(); + } + } Index: lams_tests/tests/org/lamsfoundation/lams/pages/tool/forum/AuthorPage.java =================================================================== RCS file: /usr/local/cvsroot/lams_tests/tests/org/lamsfoundation/lams/pages/tool/forum/AuthorPage.java,v diff -u -r1.1 -r1.2 --- lams_tests/tests/org/lamsfoundation/lams/pages/tool/forum/AuthorPage.java 13 Feb 2015 15:00:14 -0000 1.1 +++ lams_tests/tests/org/lamsfoundation/lams/pages/tool/forum/AuthorPage.java 13 Feb 2015 17:19:47 -0000 1.2 @@ -66,6 +66,9 @@ @FindBy(className="editForm") private WebElement reEdit; + @FindBy(className="warning") + private WebElement warning; + public AuthorPage(WebDriver driver) { super(driver); // TODO Auto-generated constructor stub @@ -149,6 +152,12 @@ } return authorToolWindow; -} + } + public String getWarningMsg(){ + + return warning.getText(); + } + + } Index: lams_tests/tests/org/lamsfoundation/lams/pages/tool/forum/util/ForumConstants.java =================================================================== RCS file: /usr/local/cvsroot/lams_tests/tests/org/lamsfoundation/lams/pages/tool/forum/util/ForumConstants.java,v diff -u -r1.1 -r1.2 --- lams_tests/tests/org/lamsfoundation/lams/pages/tool/forum/util/ForumConstants.java 13 Feb 2015 15:00:14 -0000 1.1 +++ lams_tests/tests/org/lamsfoundation/lams/pages/tool/forum/util/ForumConstants.java 13 Feb 2015 17:19:47 -0000 1.2 @@ -33,5 +33,9 @@ public static final String FORUM_BODY_TXT = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin elementum est ut facilisis ornare. Suspendisse potenti. Donec non lectus aliquet, aliquam felis vel, elementum eros. Sed dictum ac elit vel porta. Praesent sodales nisi ut lorem feugiat finibus. Fusce aliquam viverra condimentum. Vestibulum ligula nunc, ullamcorper vel augue eu, sodales imperdiet nunc. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Sed egestas libero sit amet lacinia tristique. Sed consequat arcu nec neque scelerisque sollicitudin. Fusce eget bibendum mauris, interdum laoreet enim. Duis auctor rhoncus mi. Phasellus semper vitae nulla in facilisis. Phasellus gravida euismod nunc at tempus. Mauris sodales turpis at tortor lobortis, consequat maximus ex malesuada. Nulla varius efficitur lacinia. Nunc condimentum ex ac fringilla finibus. Ut placerat efficitur tortor vehicula euismod. Aliquam vel tempor purus, sit amet sodales orci. Proin mattis mollis diam ac rhoncus. Nulla in malesuada odio, id pellentesque ligula. Sed rutrum quis ipsum eu luctus. In hac habitasse platea dictumst. Vivamus id ex ac dui accumsan bibendum nec eget mauris. Quisque eu dui leo. Vestibulum vitae lacus vitae nisl blandit ultrices pharetra at dolor. Fusce ac ipsum sed odio porta tincidunt eu iaculis ligula. Proin et lacus nibh. Aenean arcu magna, sodales eu mi non, consequat sodales ligula. Integer in lacinia ex, eget egestas dui. Aliquam lacus est, sodales sed fringilla eget, semper ac dolor. Nulla sed ante id orci bibendum tempor quis sed orci. Etiam tincidunt arcu ligula, sed auctor turpis sollicitudin non. Pellentesque nunc ex, luctus sed rhoncus sed, commodo vel purus. Maecenas maximus varius leo id dignissim. In hac habitasse platea dictumst. Donec ac mattis nisl, in cursus nibh. Donec ut ante dignissim ligula hendrerit faucibus. In fermentum faucibus massa sit amet varius. Praesent quis lorem at eros mattis interdum a tristique risus. Suspendisse gravida tellus quam, sed tempus."; public static final String FORUM_DEFAULT_TOPIC = "Topic Heading"; + + // Warning messages + public static final String FORUM_WARNING_REPLY_LIMITS_TXT = "Please add at least 1 topic when"; // When no topic and reply limits are set + } Index: lams_tests/tests/org/lamsfoundation/org/lams/tool/forum/AuthorTests.java =================================================================== RCS file: /usr/local/cvsroot/lams_tests/tests/org/lamsfoundation/org/lams/tool/forum/Attic/AuthorTests.java,v diff -u -r1.1 -r1.2 --- lams_tests/tests/org/lamsfoundation/org/lams/tool/forum/AuthorTests.java 13 Feb 2015 15:00:14 -0000 1.1 +++ lams_tests/tests/org/lamsfoundation/org/lams/tool/forum/AuthorTests.java 13 Feb 2015 17:19:47 -0000 1.2 @@ -45,26 +45,12 @@ /** * - * Add lesson tests + * Authoring Forum tests * * @author Ernie Ghiglione (ernieg@lamsfoundation.org) * - * - * Tests to add: - * - Check default settings - * - Change title, instructions - * - Check title, instructions after save - * - Add new threads - * - Change d - * - * - * - * - * - * */ - public class AuthorTests { @@ -113,7 +99,7 @@ @Test(dependsOnMethods={"openFLA"}) public void dragForumToCanvas() { - String forumTitle = ForumConstants.FORUM_TITLE + "Basic " + RANDOM_INT; + String forumTitle = "Basic " + RANDOM_INT; // Drop activities in canvas fla.dragActivityToCanvasPosition(AuthorConstants.FORUM_TITLE, 100, 100) @@ -136,7 +122,7 @@ public void openForumAuthoring() { // open forum author - AuthorPage forumAuthorPage = fla.openForumAuthoring(ForumConstants.FORUM_TITLE); + AuthorPage forumAuthorPage = fla.openForumAuthoring("Basic " + RANDOM_INT); String forumWindowTitle = forumAuthorPage.getWindowTitle(); @@ -148,7 +134,7 @@ /** * Check forum default values basic tab */ - @Test(dependsOnMethods={"openForumAuthoring"}) + @Test(description="Check default values basic tab", dependsOnMethods={"openForumAuthoring"}) public void checkBasicTabDefaultValues() { BasicTab basicTab = forumAuthorPage.openBasicTab(); @@ -167,7 +153,8 @@ /** * Check forum default values advanced tab */ - @Test(dependsOnMethods={"checkBasicTabDefaultValues"}) + @Test(description="Check default values for advanced tab", + dependsOnMethods={"checkBasicTabDefaultValues"}) public void checkAdvancedTabDefaultValues() { AdvancedTab advancedTab = forumAuthorPage.openAdvancedTab(); @@ -184,7 +171,7 @@ Boolean isNotifyTeachersOnForumPosting = advancedTab.isNotifyTeachersOnForumPosting(); Boolean isNotifyLearnersOnMarkRelease = advancedTab.isNotifyLearnersOnMarkRelease(); Boolean isReflectOnActivity = advancedTab.isReflectOnActivity(); - Boolean isAllowNewTopic = advancedTab.isAllowNewTopic(); + Boolean isLimitedReplies = advancedTab.isLimitReplies(); Assert.assertFalse(isLockWhenFinished, "Locked when finish should be false by default"); Assert.assertTrue(isAllowEdit, "Allow learners to change their posting should be true by default"); @@ -197,15 +184,41 @@ Assert.assertFalse(isNotifyTeachersOnForumPosting, "Option to notify teacher should be false by default"); Assert.assertFalse(isNotifyLearnersOnMarkRelease, "Notify learners on mark release should be false by default"); Assert.assertFalse(isReflectOnActivity, "Reflection should false by default"); - Assert.assertTrue(isAllowNewTopic, "Allow new topics should be true by default"); + Assert.assertFalse(isLimitedReplies, "Limited replies should be false by default"); } + + /** + * Add message + */ + @Test(description="Check forum author validation when no topic is listed and no new threads are allowed", + dependsOnMethods={"checkAdvancedTabDefaultValues"}) + public void checkValidationErrors() { + + // Check validation when + forumAuthorPage.openBasicTab().deleteMesage(0); + forumAuthorPage.openAdvancedTab().setLimitReplies("1", "5"); + forumAuthorPage.save(); + + // Assert error message + + String warningMsg = forumAuthorPage.getWarningMsg(); + + System.out.println("Warning: " + warningMsg); + Assert.assertTrue(warningMsg.contains(ForumConstants.FORUM_WARNING_REPLY_LIMITS_TXT)); + + // Cancel the changes so we don't need to rebuild the original content + forumAuthorPage.cancel(flaHandler); + + // As cancel closes the pop-up, reopen the same activity again and set + // it ready for the next test + fla.openForumAuthoring("Basic " + RANDOM_INT); + } - /** - * Add topic + * Add message */ - @Test(dependsOnMethods={"checkAdvancedTabDefaultValues"}) + @Test(description="Add message/topic", dependsOnMethods={"checkValidationErrors"}) public void addTopic() { String msgTitle = "Topic# " + RANDOM_INT; @@ -230,9 +243,9 @@ } /** - * Delete topic + * Delete message */ - @Test(dependsOnMethods={"addTopic"}) + @Test(description="Delete message/topic", dependsOnMethods={"addTopic"}) public void deleteTopic() { // Delete the first default message @@ -256,7 +269,7 @@ /** * Add forum with Locked when finished */ - @Test(dependsOnMethods={"deleteTopic"}) + @Test(description="Add forum with Locked when finished", dependsOnMethods={"deleteTopic"}) public void addForumLockedWhenFinished() { String forumTitle = "Locked " + RANDOM_INT; @@ -295,7 +308,7 @@ /** * Add forum with no re-edits allowed */ - @Test(dependsOnMethods={"addForumLockedWhenFinished"}) + @Test(description="Add forum with no re-edits allowed", dependsOnMethods={"addForumLockedWhenFinished"}) public void addForumEditNotAllowed() { String forumTitle = "NoEdit " + RANDOM_INT; @@ -333,7 +346,7 @@ /** * Add forum with ratings */ - @Test(dependsOnMethods={"addForumEditNotAllowed"}) + @Test(description="Add forum with ratings", dependsOnMethods={"addForumEditNotAllowed"}) public void addForumRatings() { String forumTitle = "Ratings " + RANDOM_INT; @@ -379,7 +392,7 @@ /** * Add forum with allow uploads on */ - @Test(dependsOnMethods={"addForumRatings"}) + @Test(description="Add forum with allow uploads on", dependsOnMethods={"addForumRatings"}) public void addForumUploads() { String forumTitle = "Upload " + RANDOM_INT; @@ -419,13 +432,13 @@ /** * Add forum with Rich Text editor */ - @Test(dependsOnMethods={"addForumUploads"}) + @Test(description="Add forum with Rich Text editor", dependsOnMethods={"addForumUploads"}) public void addForumRichText() { String forumTitle = "RichText " + RANDOM_INT; // Drop activities in canvas - fla.dragActivityToCanvasPosition(AuthorConstants.FORUM_TITLE,900,250) + fla.dragActivityToCanvasPosition(AuthorConstants.FORUM_TITLE,900,200) .changeActivityTitle("Forum", forumTitle); // Assert new forum activity title @@ -458,15 +471,15 @@ /** * Add forum with limited character restrictions */ - @Test(dependsOnMethods={"addForumRichText"}) + @Test(description="Add forum with limited character restrictions", dependsOnMethods={"addForumRichText"}) public void addForumMinMaxCharacters() { String forumTitle = "MinMax " + RANDOM_INT; String minChar = "10"; String maxChar = "100"; // Drop activities in canvas - fla.dragActivityToCanvasPosition(AuthorConstants.FORUM_TITLE,700,250) + fla.dragActivityToCanvasPosition(AuthorConstants.FORUM_TITLE,700,200) .changeActivityTitle("Forum", forumTitle); // Assert new forum activity title @@ -516,17 +529,16 @@ /** * Add forum with notifications on postings for learners and teachers and on mark release */ - @Test(dependsOnMethods={"addForumMinMaxCharacters"}) + @Test(description="Add forum with notifications on postings for learners and teachers and on mark release", + dependsOnMethods={"addForumMinMaxCharacters"}) public void addForumNotifications() { String forumTitle = "Notifications " + RANDOM_INT; // Drop activities in canvas - fla.dragActivityToCanvasPosition(AuthorConstants.FORUM_TITLE,500,250) + fla.dragActivityToCanvasPosition(AuthorConstants.FORUM_TITLE,500,200) .changeActivityTitle("Forum", forumTitle); - fla.drawTransitionBtwActivities(); - // Assert new forum activity title // Now get all the activity titles List allActivityTitles = fla.getAllActivityNames(); @@ -563,13 +575,125 @@ + /** + * Add forum with reflection + */ + @Test(description="Add forum with reflection", dependsOnMethods={"addForumNotifications"}) + public void addForumReflection() { + + String forumTitle = "Reflection " + RANDOM_INT; + String reflectionTxt = "Reflect on..."; + + // Drop activities in canvas + fla.dragActivityToCanvasPosition(AuthorConstants.FORUM_TITLE,300,200) + .changeActivityTitle("Forum", forumTitle); + + // Assert new forum activity title + // Now get all the activity titles + List allActivityTitles = fla.getAllActivityNames(); + + // Assert that all of them are in the design + + Assert.assertTrue(allActivityTitles.contains(forumTitle), + "The title " + forumTitle + " was not found as an activity in the design"); + forumAuthorPage = fla.openForumAuthoring(forumTitle); + + // Set reflection + forumAuthorPage.openAdvancedTab().setRelectOnActivity(true); + forumAuthorPage.openAdvancedTab().setRelectionInstructions(reflectionTxt); + + forumAuthorPage.save(); + + // Assert Reflection + + forumAuthorPage.reEdit(); + + // Assert reflection txt + boolean reflectionOption = forumAuthorPage.openAdvancedTab().isReflectOnActivity(); + String reflectionInstructions = forumAuthorPage.openAdvancedTab().getReflectionInstructions(); + + Assert.assertTrue(reflectionOption, "Option for reflection is not set"); + Assert.assertEquals(reflectionInstructions, reflectionTxt, "Reflection instructions don't match"); + + + forumAuthorPage.cancel(flaHandler); + } + + /** + * Add forum with replies limitation + */ + @Test(description="Add forum with replies limitation", + dependsOnMethods={"addForumReflection"}) + public void addForumLimitReplies() { + + String forumTitle = "LimReply " + RANDOM_INT; + String minReply = "2"; + String maxReply = "5"; + + // Drop activities in canvas + fla.dragActivityToCanvasPosition(AuthorConstants.FORUM_TITLE,100,200) + .changeActivityTitle("Forum", forumTitle); + + // Assert new forum activity title + // Now get all the activity titles + List allActivityTitles = fla.getAllActivityNames(); + + // Assert that all of them are in the design + + Assert.assertTrue(allActivityTitles.contains(forumTitle), + "The title " + forumTitle + " was not found as an activity in the design"); + + forumAuthorPage = fla.openForumAuthoring(forumTitle); + + // Set limitation replies + forumAuthorPage.openAdvancedTab().setLimitReplies(minReply, maxReply); + + forumAuthorPage.save(); + + // Assert limit replies + + forumAuthorPage.reEdit(); + + // Assert limit replies + boolean limitReplies = forumAuthorPage.openAdvancedTab().isLimitReplies(); + String minimumReplies = forumAuthorPage.openAdvancedTab().getMinReply(); + String maximumReplies = forumAuthorPage.openAdvancedTab().getMaxReply(); + + Assert.assertTrue(limitReplies, "Option for limit replies is not set"); + Assert.assertEquals(minimumReplies, minReply, "Minimum replies don't match"); + Assert.assertEquals(maximumReplies, maxReply, "Maximum replies don't match"); + + forumAuthorPage.cancel(flaHandler); + + + } + + + /** + * Save design + */ + @Test(description="saves forum design", + dependsOnMethods={"addForumLimitReplies"}) + public void saveForumTestsDesigns() { + + String designName = ForumConstants.FORUM_TITLE + " tests " + RANDOM_INT; + + fla.drawTransitionBtwActivities(); + String result = fla.saveAsDesign(designName); + + // Assert save + boolean saveResult = result.contains(AuthorConstants.SAVE_SEQUENCE_SUCCESS_MSG); + Assert.assertTrue(saveResult, "The designed was not saved or is incomplete"); + + } + + + @AfterClass public void afterClass() { //driver.quit(); } - - }