From 66874aca341b7aa863341e709f9cdbdfa8afde80 Mon Sep 17 00:00:00 2001 From: "E. Kolpakov" Date: Tue, 23 Dec 2014 11:38:33 +0300 Subject: [PATCH] Fixed typo + combined problem type tests into single test --- common/test/acceptance/pages/lms/library.py | 2 +- .../test/acceptance/tests/lms/test_library.py | 91 +++++++++---------- 2 files changed, 44 insertions(+), 49 deletions(-) diff --git a/common/test/acceptance/pages/lms/library.py b/common/test/acceptance/pages/lms/library.py index 3397082344..6978b5fa0b 100644 --- a/common/test/acceptance/pages/lms/library.py +++ b/common/test/acceptance/pages/lms/library.py @@ -42,7 +42,7 @@ class LibraryContentXBlockWrapper(PageObject): @property def children_headers(self): """ - Gets headers if all child XBlocks as list of strings + Gets headers of all child XBlocks as list of strings """ child_blocks_headers = self.q(css=self._bounded_selector("div[data-id] h2.problem-header")) return frozenset(child.text for child in child_blocks_headers) diff --git a/common/test/acceptance/tests/lms/test_library.py b/common/test/acceptance/tests/lms/test_library.py index 4d6f34e822..53b26238c5 100644 --- a/common/test/acceptance/tests/lms/test_library.py +++ b/common/test/acceptance/tests/lms/test_library.py @@ -119,6 +119,9 @@ class LibraryContentTestBase(UniqueCourseTest): Open library page in LMS """ self.courseware_page.visit() + paragraphs = self.courseware_page.q(css='.course-content p') + if paragraphs and "You were most recently in" in paragraphs.text[0]: + paragraphs[0].find_element_by_tag_name('a').click() block_id = block_id if block_id is not None else self.lib_block.locator #pylint: disable=attribute-defined-outside-init self.library_content_page = LibraryContentXBlockWrapper(self.browser, block_id) @@ -241,62 +244,54 @@ class StudioLibraryContainerCapaFilterTest(LibraryContentTestBase): """ Expected XBLock headers according to populate_library_fixture """ return frozenset(child.display_name.upper() for child in self.library_fixture.children) - @ddt.data(1, 3) - def test_any_capa_type_shows_all(self, count): + def _set_library_content_settings(self, count=1, capa_type="Any Type"): """ - Scenario: Ensure setting "Any Type" for Problem Type does not filter out Problems - Given I have a library with two "Select Option" and two "Choice Group" problems, and a course containing - LibraryContent XBlock configured to draw XBlocks from that library - When I go to studio unit page for library content xblock as staff - And I set library content xblock Problem Type to "Any Type" and Count to {count} - And I refresh library content xblock and pulbish unit - When I go to LMS courseware page for library content xblock as student - Then I can see {count} xblocks from the library of any type - """ - self._change_library_content_settings(count=count, capa_type="Any Type") - self._auto_auth(self.USERNAME, self.EMAIL, False) - self._goto_library_block_page() - children_headers = self.library_content_page.children_headers - self.assertEqual(len(children_headers), count) - self.assertLessEqual(children_headers, self._problem_headers) - - @ddt.data( - ('Choice Group', 1, ["Problem Choice Group 1", "Problem Choice Group 2"]), - ('Select Option', 2, ["Problem Select 1", "Problem Select 2"]), - ) - @ddt.unpack - def test_capa_type_shows_only_chosen_type(self, capa_type, count, expected_headers): - """ - Scenario: Ensure setting "{capa_type}" for Problem Type draws aonly problem of {capa_type} from library - Given I have a library with two "Select Option" and two "Choice Group" problems, and a course containing - LibraryContent XBlock configured to draw XBlocks from that library - When I go to studio unit page for library content xblock as staff - And I set library content xblock Problem Type to "{capa_type}" and Count to {count} - And I refresh library content xblock and pulbish unit - When I go to LMS courseware page for library content xblock as student - Then I can see {count} xblocks from the library of {capa_type} + Sets library content XBlock parameters, saves, publishes unit, goes to LMS unit page and + gets children XBlock headers to assert against them """ self._change_library_content_settings(count=count, capa_type=capa_type) self._auto_auth(self.USERNAME, self.EMAIL, False) self._goto_library_block_page() - children_headers = self.library_content_page.children_headers - self.assertEqual(len(children_headers), count) - self.assertLessEqual(children_headers, self._problem_headers) - self.assertLessEqual(children_headers, set(map(lambda header: header.upper(), expected_headers))) + return self.library_content_page.children_headers - def test_missing_capa_type_shows_none(self): + def test_problem_type_selector(self): """ - Scenario: Ensure setting "{capa_type}" for Problem Type that is not present in library results in empty XBlock + Scenario: Ensure setting "Any Type" for Problem Type does not filter out Problems Given I have a library with two "Select Option" and two "Choice Group" problems, and a course containing LibraryContent XBlock configured to draw XBlocks from that library - When I go to studio unit page for library content xblock as staff - And I set library content xblock Problem Type to type not present in library - And I refresh library content xblock and pulbish unit + When I set library content xblock Problem Type to "Any Type" and Count to 3 and publish unit When I go to LMS courseware page for library content xblock as student - Then I can see no xblocks + Then I can see 3 xblocks from the library of any type + When I set library content xblock Problem Type to "Choice Group" and Count to 1 and publish unit + When I go to LMS courseware page for library content xblock as student + Then I can see 1 xblock from the library of "Choice Group" type + When I set library content xblock Problem Type to "Select Option" and Count to 2 and publish unit + When I go to LMS courseware page for library content xblock as student + Then I can see 2 xblock from the library of "Select Option" type + When I set library content xblock Problem Type to "Matlab" and Count to 2 and publish unit + When I go to LMS courseware page for library content xblock as student + Then I can see 0 xblocks from the library """ - self._change_library_content_settings(count=1, capa_type="Matlab") - self._auto_auth(self.USERNAME, self.EMAIL, False) - self._goto_library_block_page() - children_headers = self.library_content_page.children_headers - self.assertEqual(len(children_headers), 0) + children_headers = self._set_library_content_settings(count=3, capa_type="Any Type") + self.assertEqual(len(children_headers), 3) + self.assertLessEqual(children_headers, self._problem_headers) + + # Choice group test + children_headers = self._set_library_content_settings(count=1, capa_type="Choice Group") + self.assertEqual(len(children_headers), 1) + self.assertLessEqual( + children_headers, + set(map(lambda header: header.upper(), ["Problem Choice Group 1", "Problem Choice Group 2"])) + ) + + # Choice group test + children_headers = self._set_library_content_settings(count=2, capa_type="Select Option") + self.assertEqual(len(children_headers), 2) + self.assertLessEqual( + children_headers, + set(map(lambda header: header.upper(), ["Problem Select 1", "Problem Select 2"])) + ) + + # Missing problem type test + children_headers = self._set_library_content_settings(count=2, capa_type="Matlab") + self.assertEqual(children_headers, set())