class EditModulePageTest(unittest.TestCase):
    def setUp(self):
        self.driver = TestInitializer().getFirefoxDriverWithLoggingEnabled()
        TestInitializer().recreateDatabase()
        LoginPage(self.driver).loginAsTeacher()

    def testShouldSaveModule(self):
        COURSE_NAME = "Testikurssi"
        POINTS_TO_PASS = "******"
        OPENING_TIME = "2014-01-01 00:00:00"
        CLOSING_TIME = "2016-01-01 00:00:00"
        MODULE_ID = 1

        editModulePage = EditModulePage(self.driver, MODULE_ID)

        editModulePage.setCourseName(COURSE_NAME)
        editModulePage.setPointsToPass(POINTS_TO_PASS)
        editModulePage.setOpeningTime(OPENING_TIME)
        editModulePage.setClosingTime(CLOSING_TIME)
        editModulePage.submit()

        self.assertTrue(editModulePage.isSuccessfulSave())

        editModulePage = EditModulePage(self.driver, MODULE_ID)
        self.assertEqual(editModulePage.getCourseName(), COURSE_NAME)
        self.assertEqual(editModulePage.getPointsToPass(), POINTS_TO_PASS)
        self.assertEqual(editModulePage.getOpeningTime(), OPENING_TIME)
        self.assertEqual(editModulePage.getClosingTime(), CLOSING_TIME)

    def tearDown(self):
        self.driver.close()
Exemple #2
0
class LoginTest(unittest.TestCase):
    logoutPageURI = '/accounts/logout'

    def setUp(self):
        self.driver = TestInitializer().getDefaultDriver()

    def testLoginToTestCourseInstance(self):
        LoginPage(self.driver).loginToCourse(CourseName.APLUS)
        homePage = HomePage(self.driver, CourseName.APLUS)
        self.assertEqual(homePage.getCourseBanner(),
                         'aplus-001 My test course')
        self.assertTrue(
            LoginPage.defaultUsername in homePage.getLoggedInText())

    def testLoginToExampleHookCourseInstance(self):
        LoginPage(self.driver).loginToCourse(CourseName.HOOK)
        homePage = HomePage(self.driver, CourseName.HOOK)
        self.assertEqual(homePage.getCourseBanner(),
                         'aplus-001 My test course')
        self.assertTrue(
            LoginPage.defaultUsername in homePage.getLoggedInText())

    def testShouldThrowTimeoutExceptionOnWrongCredentials(self):
        loginPage = LoginPage(self.driver)
        try:
            loginPage.loginToCourse(CourseName.APLUS, 'fake', 'password')
        except Exception:
            return
        self.fail("There should have been an exception")

    def tearDown(self):
        self.driver.close()
class EditModulePageTest(unittest.TestCase):
    def setUp(self):
        self.driver = TestInitializer().getFirefoxDriverWithLoggingEnabled()
        TestInitializer().recreateDatabase()
        LoginPage(self.driver).loginAsTeacher()

    def testShouldSaveModule(self):
        COURSE_NAME = "Testikurssi"
        POINTS_TO_PASS = "******"
        OPENING_TIME = "2014-01-01 00:00:00"
        CLOSING_TIME = "2016-01-01 00:00:00"
        MODULE_ID = 1

        editModulePage = EditModulePage(self.driver, MODULE_ID)

        editModulePage.setCourseName(COURSE_NAME)
        editModulePage.setPointsToPass(POINTS_TO_PASS)
        editModulePage.setOpeningTime(OPENING_TIME)
        editModulePage.setClosingTime(CLOSING_TIME)
        editModulePage.submit()

        self.assertTrue(editModulePage.isSuccessfulSave())

        editModulePage = EditModulePage(self.driver, MODULE_ID)
        self.assertEqual(editModulePage.getCourseName(), COURSE_NAME)
        self.assertEqual(editModulePage.getPointsToPass(), POINTS_TO_PASS)
        self.assertEqual(editModulePage.getOpeningTime(), OPENING_TIME)
        self.assertEqual(editModulePage.getClosingTime(), CLOSING_TIME)

    def tearDown(self):
        self.driver.close()
class MainNavigationTest(unittest.TestCase):
    baseUrl = BasePage.base_url + "/aplus1/basic_instance/"

    def setUp(self):
        self.driver = TestInitializer().getFirefoxDriverWithLoggingEnabled()
        LoginPage(self.driver).loginAsTeacher()

    def testNavigateToResults(self):
        BasePage(self.driver).clickResultsLink()
        self.assertEqual(self.baseUrl + 'user/results/',
                         str(self.driver.current_url))

    def testNavigateToUserPage(self):
        BasePage(self.driver).clickUserLink()
        self.assertEqual(self.baseUrl + 'user/notifications/',
                         str(self.driver.current_url))

    def testNavigateToTeachersView(self):
        BasePage(self.driver).clickTeachersViewLink()
        self.assertEqual(self.baseUrl + 'teachers/',
                         str(self.driver.current_url))

    def testDownloadCalendar(self):
        BasePage(self.driver).clickCalendarFeedLink()
        self.assertEqual("Download calendar (ics)",
                         str(self.driver.switch_to.active_element.text))

    def tearDown(self):
        self.driver.close()
class UserPermissionsTest(unittest.TestCase):
    baseUrl = BasePage.base_url + "/aplus1/basic_instance/"

    def setUp(self):
        self.driver = TestInitializer().getDefaultDriver()

    def testShouldHaveTeachersPermissions(self):
        LoginPage(self.driver).loginAsTeacher()
        basePage = BasePage(self.driver)
        self.assertTrue(basePage.isElementVisible(BasePageLocators.TEACHERS_VIEW_LINK))
        self.assertTrue(basePage.isElementVisible(StaffPageLocators.SUBMISSION_LINKS))
        basePage.clickTeachersViewLink()
        self.assertEqual(self.baseUrl + 'teachers/', str(self.driver.current_url))

    def testShouldHaveAssistantsPermissions(self):
        LoginPage(self.driver).loginAsAssistant()
        basePage = BasePage(self.driver)
        self.assertFalse(basePage.isElementVisible(BasePageLocators.TEACHERS_VIEW_LINK))
        self.assertTrue(basePage.isElementVisible(StaffPageLocators.SUBMISSION_LINKS))

    def testShouldHaveStudentsPermissions(self):
        LoginPage(self.driver).loginAsStudent()
        basePage = BasePage(self.driver)
        self.assertFalse(basePage.isElementVisible(BasePageLocators.TEACHERS_VIEW_LINK))
        self.assertFalse(basePage.isElementVisible(StaffPageLocators.SUBMISSION_LINKS))

    def tearDown(self):
        self.driver.close()
class EditExercisePageTest(unittest.TestCase):
    def setUp(self):
        self.driver = TestInitializer().getDefaultDriver()
        TestInitializer().recreateDatabase()
        LoginPage(self.driver).loginAsTeacher()

    def testShouldSaveExercise(self):
        exerciseName = "Testiharjoitus"
        maxSubmissions = "5"
        maxPoints = "99"
        pointToPass = "******"
        exerciseNumber = 1

        editExercisePage = EditExercisePage(self.driver, exerciseNumber)

        editExercisePage.setExerciseName(exerciseName)
        editExercisePage.setMaxSubmissions(maxSubmissions)
        editExercisePage.setMaxPoints(maxPoints)
        editExercisePage.setPointsToPass(pointToPass)
        editExercisePage.submit()

        self.assertTrue(editExercisePage.isSuccessfulSave())

        editExercisePage = EditExercisePage(self.driver, exerciseNumber)
        self.assertEqual(editExercisePage.getExerciseName(), exerciseName)
        self.assertEqual(editExercisePage.getMaxSubmissions(), maxSubmissions)
        self.assertEqual(editExercisePage.getMaxPoints(), maxPoints)
        self.assertEqual(editExercisePage.getPointsToPass(), pointToPass)

    def tearDown(self):
        self.driver.close()
Exemple #7
0
class LoginTest(unittest.TestCase):
    logoutPageURI = '/accounts/logout'

    def setUp(self):
        self.driver = TestInitializer().getDefaultDriver()

    def testLoginToTestCourseInstance(self):
        LoginPage(self.driver).loginToCourse(CourseName.APLUS)
        homePage = HomePage(self.driver, CourseName.APLUS)
        self.assertEqual(homePage.getCourseBanner(), 'aplus-001 My test course')
        self.assertTrue(LoginPage.defaultUsername in homePage.getLoggedInText())

    def testLoginToExampleHookCourseInstance(self):
        LoginPage(self.driver).loginToCourse(CourseName.HOOK)
        homePage = HomePage(self.driver, CourseName.HOOK)
        self.assertEqual(homePage.getCourseBanner(), 'aplus-001 My test course')
        self.assertTrue(LoginPage.defaultUsername in homePage.getLoggedInText())

    def testShouldThrowTimeoutExceptionOnWrongCredentials(self):
        loginPage = LoginPage(self.driver)
        try:
            loginPage.loginToCourse(CourseName.APLUS, 'fake', 'password')
        except Exception:
            return
        self.fail("There should have been an exception")

    def tearDown(self):
        self.driver.close()
class EditExercisePageTest(unittest.TestCase):
    def setUp(self):
        self.driver = TestInitializer().getDefaultDriver()
        TestInitializer().recreateDatabase()
        LoginPage(self.driver).loginAsTeacher()

    def testShouldSaveExercise(self):
        exerciseName = "Testiharjoitus"
        maxSubmissions = "5"
        maxPoints = "99"
        pointToPass = "******"
        exerciseNumber = 1

        editExercisePage = EditExercisePage(self.driver, exerciseNumber)

        editExercisePage.setExerciseName(exerciseName)
        editExercisePage.setMaxSubmissions(maxSubmissions)
        editExercisePage.setMaxPoints(maxPoints)
        editExercisePage.setPointsToPass(pointToPass)
        editExercisePage.submit()

        self.assertTrue(editExercisePage.isSuccessfulSave())

        editExercisePage = EditExercisePage(self.driver, exerciseNumber)
        self.assertEqual(editExercisePage.getExerciseName(), exerciseName)
        self.assertEqual(editExercisePage.getMaxSubmissions(), maxSubmissions)
        self.assertEqual(editExercisePage.getMaxPoints(), maxPoints)
        self.assertEqual(editExercisePage.getPointsToPass(), pointToPass)

    def tearDown(self):
        self.driver.close()
class UserPermissionsTest(unittest.TestCase):
    baseUrl = BasePage.base_url + "/aplus1/basic_instance/"

    def setUp(self):
        self.driver = TestInitializer().getDefaultDriver()

    def testShouldHaveTeachersPermissions(self):
        LoginPage(self.driver).loginAsTeacher()
        basePage = BasePage(self.driver)
        self.assertTrue(
            basePage.isElementVisible(BasePageLocators.TEACHERS_VIEW_LINK))
        self.assertTrue(
            basePage.isElementVisible(StaffPageLocators.SUBMISSION_LINKS))
        basePage.clickTeachersViewLink()
        self.assertEqual(self.baseUrl + 'teachers/',
                         str(self.driver.current_url))

    def testShouldHaveAssistantsPermissions(self):
        LoginPage(self.driver).loginAsAssistant()
        basePage = BasePage(self.driver)
        self.assertFalse(
            basePage.isElementVisible(BasePageLocators.TEACHERS_VIEW_LINK))
        self.assertTrue(
            basePage.isElementVisible(StaffPageLocators.SUBMISSION_LINKS))

    def testShouldHaveStudentsPermissions(self):
        LoginPage(self.driver).loginAsStudent()
        basePage = BasePage(self.driver)
        self.assertFalse(
            basePage.isElementVisible(BasePageLocators.TEACHERS_VIEW_LINK))
        self.assertFalse(
            basePage.isElementVisible(StaffPageLocators.SUBMISSION_LINKS))

    def tearDown(self):
        self.driver.close()
class MainNavigationTest(unittest.TestCase):
    baseUrl = BasePage.base_url + "/aplus1/basic_instance/"

    def setUp(self):
        self.driver = TestInitializer().getDefaultDriver()
        LoginPage(self.driver).loginAsTeacher()

    def testNavigateToResults(self):
        BasePage(self.driver).clickResultsLink()
        self.assertEqual(self.baseUrl + 'user/results/', str(self.driver.current_url))

    def testNavigateToUserPage(self):
        BasePage(self.driver).clickUserLink()
        self.assertEqual(self.baseUrl + 'user/notifications/', str(self.driver.current_url))

    def testNavigateToTeachersView(self):
        BasePage(self.driver).clickTeachersViewLink()
        self.assertEqual(self.baseUrl + 'teachers/', str(self.driver.current_url))

    def testDownloadCalendar(self):
        BasePage(self.driver).clickCalendarFeedLink()
        self.assertEqual("Download calendar (ics)", str(self.driver.switch_to.active_element.text))

    def tearDown(self):
        self.driver.close()
Exemple #11
0
class HomePageTest(unittest.TestCase):
    def setUp(self):
        self.driver = TestInitializer().getFirefoxDriverWithLoggingEnabled()
        TestInitializer().recreateDatabase()
        LoginPage(self.driver).loginAsStudent()

    def testInitialScoreShouldBeZero(self):
        self.assertEqual("0 / 300", HomePage(self.driver).getMainScore())

    def tearDown(self):
        self.driver.close()
Exemple #12
0
class HomePageTest(unittest.TestCase):
    def setUp(self):
        self.driver = TestInitializer().getFirefoxDriverWithLoggingEnabled()
        TestInitializer().recreateDatabase()
        LoginPage(self.driver).loginAsStudent()

    def testInitialScoreShouldBeZero(self):
        self.assertEqual("0 / 300", HomePage(self.driver).getMainScore())

    def tearDown(self):
        self.driver.close()
Exemple #13
0
class SubmissionsPageTest(unittest.TestCase):
    def setUp(self):
        self.driver = TestInitializer().getDefaultDriver()
        TestInitializer().recreateDatabase()
        LoginPage(self.driver).loginAsAssistant()

    def testShouldContainAsManySubmissionsAsSubmitted(self):
        firstExercisePage = MyFirstExerciseGrader(self.driver)
        firstExercisePage.setText("123test")
        firstExercisePage.submit()
        self.assertEqual(
            SubmissionPage(self.driver, exerciseId="1").getSubmissionCount(),
            1)

        firstExercisePage = MyFirstExerciseGrader(self.driver)
        firstExercisePage.setText("Hello")
        firstExercisePage.submit()
        self.assertEqual(
            SubmissionPage(self.driver, exerciseId="1").getSubmissionCount(),
            2)

        ajaxExercisePage = MyAjaxExerciseGrader(self.driver)
        ajaxExercisePage.setText(-1)
        ajaxExercisePage.submit()
        self.assertEqual(
            SubmissionPage(self.driver, exerciseId="3").getSubmissionCount(),
            1)

        ajaxExercisePage = MyAjaxExerciseGrader(self.driver)
        ajaxExercisePage.setText(50)
        ajaxExercisePage.submit()
        self.assertEqual(
            SubmissionPage(self.driver, exerciseId="3").getSubmissionCount(),
            2)

        firstExercisePage = MyFirstExerciseGrader(self.driver)
        firstExercisePage.setText("HelloA+")
        firstExercisePage.submit()
        self.assertEqual(
            SubmissionPage(self.driver, exerciseId="1").getSubmissionCount(),
            3)

        ajaxExercisePage = MyAjaxExerciseGrader(self.driver)
        ajaxExercisePage.setText(100)
        ajaxExercisePage.submit()
        self.assertEqual(
            SubmissionPage(self.driver, exerciseId="3").getSubmissionCount(),
            3)

    def tearDown(self):
        self.driver.close()
class TeacherFeedbackTest(unittest.TestCase):
    def setUp(self):
        self.driver = TestInitializer().getDefaultDriver()
        TestInitializer().recreateDatabase()

    def testStudentShouldGetFeedbackWithNotification(self):
        ASSISTANT_FEEDBACK_TEXT = "ASSISTANT_FEEDBACK"
        FEEDBACK_TEXT = "FEEDBACK"
        EXERCISE_NUMBER = "2"
        SUBMISSION_NUMBER = 1
        POINTS = "50"

        # Submit exercise
        LoginPage(self.driver).loginAsStudent()
        fileUploadGrader = FileUploadGrader(self.driver)
        fileUploadGrader.submit()
        fileUploadGrader.logout()

        # Check submissions
        LoginPage(self.driver).loginAsAssistant()
        submissionPage = SubmissionPage(self.driver,
                                        exerciseId=EXERCISE_NUMBER)
        self.assertEqual(submissionPage.getSubmissionCount(), 1)

        # Assess exercise
        assessmentPage = AssessmentPage(self.driver,
                                        exerciseId=EXERCISE_NUMBER,
                                        submissionNumber=SUBMISSION_NUMBER)
        assessmentPage.setAssistantFeedback(ASSISTANT_FEEDBACK_TEXT)
        assessmentPage.setFeedback(FEEDBACK_TEXT)
        assessmentPage.setPoints(POINTS)
        assessmentPage.submit()
        assessmentPage.logout()

        # Check that student receives the correct assessment and a notification of it
        LoginPage(self.driver).loginAsStudent()
        homePage = HomePage(self.driver)
        self.assertTrue(homePage.hasNewNotifications())

        studentFeedbackPage = StudentFeedbackPage(
            self.driver,
            exerciseId=EXERCISE_NUMBER,
            submissionNumber=SUBMISSION_NUMBER)
        self.assertEqual(studentFeedbackPage.getAssistantFeedbackText(),
                         ASSISTANT_FEEDBACK_TEXT)
        self.assertEqual(studentFeedbackPage.getFeedbackText(), FEEDBACK_TEXT)
        self.assertEqual(FileUploadGrader(self.driver).getPoints(), POINTS)

    def tearDown(self):
        self.driver.close()
Exemple #15
0
class StaffPageTest(unittest.TestCase):
    def setUp(self):
        self.driver = TestInitializer().getFirefoxDriverWithLoggingEnabled()
        LoginPage(self.driver).loginAsAssistant()

    @unittest.skip
    def testShouldOpenAllAssistantsViewSubmissionPages(self):
        linkCount = len(AssistantsPage(self.driver).getSubmissionLinks())

        for x in range(0, linkCount):
            assistantsPage = AssistantsPage(self.driver)
            assistantsPage.clickSubmissionLink(x)
            self.assertTrue('/exercises/' + str(x + 1) + "/submissions/" in str(self.driver.current_url))

    def tearDown(self):
        self.driver.close()
Exemple #16
0
class StaffPageTest(unittest.TestCase):
    def setUp(self):
        self.driver = TestInitializer().getFirefoxDriverWithLoggingEnabled()
        LoginPage(self.driver).loginAsAssistant()

    @unittest.skip
    def testShouldOpenAllAssistantsViewSubmissionPages(self):
        linkCount = len(AssistantsPage(self.driver).getSubmissionLinks())

        for x in range(0, linkCount):
            assistantsPage = AssistantsPage(self.driver)
            assistantsPage.clickSubmissionLink(x)
            self.assertTrue('/first-exercise-round/' + str(x + 1) +
                            "/submissions/" in str(self.driver.current_url))

    def tearDown(self):
        self.driver.close()
class TeacherFeedbackTest(unittest.TestCase):
    def setUp(self):
        self.driver = TestInitializer().getFirefoxDriverWithLoggingEnabled()
        TestInitializer().recreateDatabase()

    def testStudentShouldGetFeedbackWithNotification(self):
        ASSISTANT_FEEDBACK_TEXT = "ASSISTANT_FEEDBACK"
        FEEDBACK_TEXT = "FEEDBACK"
        EXERCISE_NUMBER = "2"
        SUBMISSION_NUMBER = 1
        POINTS = "50"

        # Submit exercise
        LoginPage(self.driver).loginAsStudent()
        fileUploadGrader = FileUploadGrader(self.driver)
        fileUploadGrader.submit()
        fileUploadGrader.logout()

        # Check submissions
        LoginPage(self.driver).loginAsAssistant()
        submissionPage = SubmissionPage(self.driver, exerciseId=EXERCISE_NUMBER)
        self.assertEqual(submissionPage.getSubmissionCount(), 1)

        # Assess exercise
        assessmentPage = AssessmentPage(self.driver, exerciseId=EXERCISE_NUMBER, submissionNumber=SUBMISSION_NUMBER)
        assessmentPage.setAssistantFeedback(ASSISTANT_FEEDBACK_TEXT)
        assessmentPage.setFeedback(FEEDBACK_TEXT)
        assessmentPage.setPoints(POINTS)
        assessmentPage.submit()
        assessmentPage.logout()

        # Check that student receives the correct assessment and a notification of it
        LoginPage(self.driver).loginAsStudent()
        homePage = HomePage(self.driver)
        self.assertTrue(homePage.hasNewNotifications())

        studentFeedbackPage = StudentFeedbackPage(self.driver, exerciseId=EXERCISE_NUMBER, submissionNumber=SUBMISSION_NUMBER)
        self.assertEqual(studentFeedbackPage.getAssistantFeedbackText(), ASSISTANT_FEEDBACK_TEXT)
        self.assertEqual(studentFeedbackPage.getFeedbackText(), FEEDBACK_TEXT)
        self.assertEqual(FileUploadGrader(self.driver).getPoints(), POINTS)

    def tearDown(self):
        self.driver.close()
class CourseArchivePageTest(unittest.TestCase):
    def setUp(self):
        self.driver = TestInitializer().getFirefoxDriverWithLoggingEnabled()

    def testApiDirectly(self):
        page = AbstractPage(self.driver)
        page.load("/api/v1/course/?format=json")
        data = page.getJSON()
        self.assertEqual(len(data["objects"]), 1)
        self.assertEqual(len(data["objects"][0]["instances"]), 2)

    @unittest.skip("unfixable jquery/ajax problem at plustest")
    def testShouldOpenCourseArchivePage(self):
        courseArchivePage = CourseArchivePage(self.driver)
        courseArchivePage.waitForAjax()
        courseArchivePage.getElement(CourseArchiveLocators.APLUS_LINK)
        courseArchivePage.getElement(CourseArchiveLocators.HOOK_LINK)

    def tearDown(self):
        self.driver.close()
Exemple #19
0
class CourseArchivePageTest(unittest.TestCase):
    def setUp(self):
        self.driver = TestInitializer().getDefaultDriver()

    def testApiDirectly(self):
        page = AbstractPage(self.driver)
        page.load("/api/v1/course/?format=json")
        data = page.getJSON()
        self.assertEqual(len(data["objects"]), 1)
        self.assertEqual(len(data["objects"][0]["instances"]), 2)

    @unittest.skip("unfixable jquery/ajax problem at plustest")
    def testShouldOpenCourseArchivePage(self):
        courseArchivePage = CourseArchivePage(self.driver)
        courseArchivePage.waitForAjax()
        courseArchivePage.getElement(CourseArchiveLocators.APLUS_LINK)
        courseArchivePage.getElement(CourseArchiveLocators.HOOK_LINK)

    def tearDown(self):
        self.driver.close()
class SubmissionsPageTest(unittest.TestCase):

    def setUp(self):
        self.driver = TestInitializer().getFirefoxDriverWithLoggingEnabled()
        TestInitializer().recreateDatabase()
        LoginPage(self.driver).loginAsAssistant()

    def testShouldContainAsManySubmissionsAsSubmitted(self):
        firstExercisePage = MyFirstExerciseGrader(self.driver)
        firstExercisePage.setText("123test")
        firstExercisePage.submit()
        self.assertEqual(SubmissionPage(self.driver, exerciseId="1").getSubmissionCount(), 1)

        firstExercisePage = MyFirstExerciseGrader(self.driver)
        firstExercisePage.setText("Hello")
        firstExercisePage.submit()
        self.assertEqual(SubmissionPage(self.driver, exerciseId="1").getSubmissionCount(), 2)

        ajaxExercisePage = MyAjaxExerciseGrader(self.driver)
        ajaxExercisePage.setText(-1)
        ajaxExercisePage.submit()
        self.assertEqual(SubmissionPage(self.driver, exerciseId="3").getSubmissionCount(), 1)

        ajaxExercisePage = MyAjaxExerciseGrader(self.driver)
        ajaxExercisePage.setText(50)
        ajaxExercisePage.submit()
        self.assertEqual(SubmissionPage(self.driver, exerciseId="3").getSubmissionCount(), 2)

        firstExercisePage = MyFirstExerciseGrader(self.driver)
        firstExercisePage.setText("HelloA+")
        firstExercisePage.submit()
        self.assertEqual(SubmissionPage(self.driver, exerciseId="1").getSubmissionCount(), 3)

        ajaxExercisePage = MyAjaxExerciseGrader(self.driver)
        ajaxExercisePage.setText(100)
        ajaxExercisePage.submit()
        self.assertEqual(SubmissionPage(self.driver, exerciseId="3").getSubmissionCount(), 3)

    def tearDown(self):
        self.driver.close()