def assert_page_is_not_shown_in_lms(self, page_name):
        """
        Confirms the page is not shown in LMS

        Arguments:
            page_name(str): Name of the page not to be shown
        """
        course_info = get_course_info()
        course_page = CourseInfoPageExtended(
            self.browser, get_course_key(course_info)
        )

        course_page.visit()
        pages_in_tab = course_page.get_page_names_in_tab()
        self.assertNotIn(page_name, pages_in_tab)
    def test_drag_and_drop_of_pages(self):
        """
        Verifies that user can drag and drop pages and they appear in the
        proper order in LMS
        """
        # Get all pages
        all_pages = self.pages_page.get_all_pages()
        # Get counts of all pages and all custom pages.
        count_of_all_pages = len(all_pages)
        count_of_custom_pages = self.pages_page.get_custom_page_count()

        # Source and target indices for the pages to be dragged and dropped.
        source_index = count_of_all_pages - count_of_custom_pages - 1
        target_index = source_index - 1

        self.pages_page.drag_and_drop(source_index, target_index)

        temp = all_pages[source_index]
        all_pages[source_index] = all_pages[target_index]
        all_pages[target_index] = temp

        # Assert page order is correct.
        self.assertEqual(
            self.pages_page.get_all_pages(),
            all_pages
        )
        # Open LMS and assert pages are in correct order.
        course_info = get_course_info()
        course_page = CourseInfoPageExtended(
            self.browser, get_course_key(course_info)
        )
        course_page.visit()
        pages_in_tab = course_page.get_page_names_in_tab()

        # By default, LMS is opened with Instructor view.
        # We have to append 'Instructor' to make assertion pass.
        all_pages.append('Instructor')
        self.assertEqual(pages_in_tab, all_pages)
예제 #3
0
class PagesTestWithLms(WebAppTest):
    """
    Course Pages test where we verify on Lms too
    """
    def setUp(self):
        super(PagesTestWithLms, self).setUp()

        self.course_info = get_course_info()

        studio_login = StudioLoginApi()
        studio_login.authenticate(self.browser)

        lms_login = LmsLoginApi()
        lms_login.authenticate(self.browser)

        self.course_page = CourseInfoPageExtended(
            self.browser, get_course_key(self.course_info))
        self.courseware_page = CoursewarePageExtended(
            self.browser, get_course_key(self.course_info))
        self.pages_page = PagesPageExtended(self.browser,
                                            self.course_info['org'],
                                            self.course_info['number'],
                                            self.course_info['run'])
        # Login to LMS to avoid authentication issue
        self.course_page.visit()
        self.pages_page.visit()

    def assert_page_is_shown_in_lms(self, page_name):
        """
        Confirms the page is shown in LMS

        Arguments:
            page_name(str): Name of the page to be shown
        """
        self.pages_page.click_view_live_button()
        self.courseware_page.wait_for_page()
        pages_in_tab = self.courseware_page.get_page_names_in_tab()
        self.assertIn(page_name, pages_in_tab)

    def assert_page_is_not_shown_in_lms(self, page_name):
        """
        Confirms the page is not shown in LMS

        Arguments:
            page_name(str): Name of the page not to be shown
        """
        self.pages_page.click_view_live_button()
        self.courseware_page.wait_for_page()
        pages_in_tab = self.courseware_page.get_page_names_in_tab()
        self.assertNotIn(page_name, pages_in_tab)

    @flaky
    def test_hide_and_show_pages(self):
        """
        Verifies that hide/show toggle button is working
        for pages.
        """
        # Reset page state
        self.reset_hide_show_of_page()

        self.pages_page.visit()

        # Click hide/show toggle, assert page is not shown.
        page = self.pages_page.toggle_wiki_page_display()
        self.assertFalse(self.pages_page.toggle_wiki_page_show_value())

        # Assert page is not shown in the LMS.
        self.assert_page_is_not_shown_in_lms(page)

        # Return back to tbe pages page and un-check
        # the toggle to show the page.
        self.pages_page.visit()

        page = self.pages_page.toggle_wiki_page_display()
        self.assertTrue(self.pages_page.toggle_wiki_page_show_value())

        # Assert page is shown in the LMS.
        self.assert_page_is_shown_in_lms(page)

        # Reset page state
        self.reset_hide_show_of_page()

    def reset_hide_show_of_page(self):
        """
        Resets hide/show state of wiki page to default
        """
        self.pages_page.visit()
        if self.pages_page.toggle_wiki_page_show_value() is False:
            self.pages_page.toggle_wiki_page_display()
            self.assertTrue(self.pages_page.toggle_wiki_page_show_value())