Enable/disable cohorts from the instructor dashboard and move cohorts management to its own tab
TNL-1268
This commit is contained in:
committed by
Usman Khalid
parent
d839692437
commit
3ce494f5c5
@@ -28,6 +28,15 @@ class InstructorDashboardPage(CoursePage):
|
||||
membership_section.wait_for_page()
|
||||
return membership_section
|
||||
|
||||
def select_cohort_management(self):
|
||||
"""
|
||||
Selects the cohort management tab and returns the CohortManagementSection
|
||||
"""
|
||||
self.q(css='a[data-section=cohort_management]').first.click()
|
||||
cohort_management_section = CohortManagementSection(self.browser)
|
||||
cohort_management_section.wait_for_page()
|
||||
return cohort_management_section
|
||||
|
||||
def select_data_download(self):
|
||||
"""
|
||||
Selects the data download tab and returns a DataDownloadPage.
|
||||
@@ -84,16 +93,10 @@ class MembershipPage(PageObject):
|
||||
"""
|
||||
return MembershipPageAutoEnrollSection(self.browser)
|
||||
|
||||
def select_cohort_management_section(self):
|
||||
"""
|
||||
Returns the MembershipPageCohortManagementSection page object.
|
||||
"""
|
||||
return MembershipPageCohortManagementSection(self.browser)
|
||||
|
||||
|
||||
class MembershipPageCohortManagementSection(PageObject):
|
||||
class CohortManagementSection(PageObject):
|
||||
"""
|
||||
The cohort management subsection of the Membership section of the Instructor dashboard.
|
||||
The Cohort Management section of the Instructor dashboard.
|
||||
"""
|
||||
url = None
|
||||
csv_browse_button_selector_css = '.csv-upload #file-upload-form-file'
|
||||
@@ -104,13 +107,13 @@ class MembershipPageCohortManagementSection(PageObject):
|
||||
assignment_type_buttons_css = '.cohort-management-assignment-type-settings input'
|
||||
|
||||
def is_browser_on_page(self):
|
||||
return self.q(css='.cohort-management.membership-section').present
|
||||
return self.q(css='.cohort-management').present
|
||||
|
||||
def _bounded_selector(self, selector):
|
||||
"""
|
||||
Return `selector`, but limited to the cohort management context.
|
||||
"""
|
||||
return '.cohort-management.membership-section {}'.format(selector)
|
||||
return '.cohort-management {}'.format(selector)
|
||||
|
||||
def _get_cohort_options(self):
|
||||
"""
|
||||
@@ -158,10 +161,10 @@ class MembershipPageCohortManagementSection(PageObject):
|
||||
Return assignment settings disabled message in case of default cohort.
|
||||
"""
|
||||
query = self.q(css=self._bounded_selector('.copy-error'))
|
||||
if query.present:
|
||||
if query.visible:
|
||||
return query.text[0]
|
||||
else:
|
||||
return ''
|
||||
|
||||
return ''
|
||||
|
||||
@property
|
||||
def cohort_name_in_header(self):
|
||||
@@ -232,7 +235,11 @@ class MembershipPageCohortManagementSection(PageObject):
|
||||
Adds a new manual cohort with the specified name.
|
||||
If a content group should also be associated, the name of the content group should be specified.
|
||||
"""
|
||||
create_buttons = self.q(css=self._bounded_selector(".action-create"))
|
||||
add_cohort_selector = self._bounded_selector(".action-create")
|
||||
|
||||
# We need to wait because sometime add cohort button is not in a state to be clickable.
|
||||
self.wait_for_element_presence(add_cohort_selector, 'Add Cohort button is present.')
|
||||
create_buttons = self.q(css=add_cohort_selector)
|
||||
# There are 2 create buttons on the page. The second one is only present when no cohort yet exists
|
||||
# (in which case the first is not visible). Click on the last present create button.
|
||||
create_buttons.results[len(create_buttons.results) - 1].click()
|
||||
@@ -444,6 +451,28 @@ class MembershipPageCohortManagementSection(PageObject):
|
||||
file_input.send_keys(path)
|
||||
self.q(css=self._bounded_selector(self.csv_upload_button_selector_css)).first.click()
|
||||
|
||||
@property
|
||||
def is_cohorted(self):
|
||||
"""
|
||||
Returns the state of `Enable Cohorts` checkbox state.
|
||||
"""
|
||||
return self.q(css=self._bounded_selector('.cohorts-state')).selected
|
||||
|
||||
@is_cohorted.setter
|
||||
def is_cohorted(self, state):
|
||||
"""
|
||||
Check/Uncheck the `Enable Cohorts` checkbox state.
|
||||
"""
|
||||
if state != self.is_cohorted:
|
||||
self.q(css=self._bounded_selector('.cohorts-state')).first.click()
|
||||
|
||||
def cohort_management_controls_visible(self):
|
||||
"""
|
||||
Return the visibility status of cohort management controls(cohort selector section etc).
|
||||
"""
|
||||
return (self.q(css=self._bounded_selector('.cohort-management-nav')).visible and
|
||||
self.q(css=self._bounded_selector('.wrapper-cohort-supplemental')).visible)
|
||||
|
||||
|
||||
class MembershipPageAutoEnrollSection(PageObject):
|
||||
"""
|
||||
|
||||
@@ -63,8 +63,7 @@ class CohortConfigurationTest(EventsTestMixin, UniqueCourseTest, CohortTestMixin
|
||||
# go to the membership page on the instructor dashboard
|
||||
self.instructor_dashboard_page = InstructorDashboardPage(self.browser, self.course_id)
|
||||
self.instructor_dashboard_page.visit()
|
||||
membership_page = self.instructor_dashboard_page.select_membership()
|
||||
self.cohort_management_page = membership_page.select_cohort_management_section()
|
||||
self.cohort_management_page = self.instructor_dashboard_page.select_cohort_management()
|
||||
|
||||
def verify_cohort_description(self, cohort_name, expected_description):
|
||||
"""
|
||||
@@ -441,9 +440,31 @@ class CohortConfigurationTest(EventsTestMixin, UniqueCourseTest, CohortTestMixin
|
||||
|
||||
self.assertTrue(self.cohort_management_page.is_assignment_settings_disabled)
|
||||
|
||||
message = "There must be one cohort to which students can be randomly assigned."
|
||||
message = "There must be one cohort to which students can automatically be assigned."
|
||||
self.assertEqual(message, self.cohort_management_page.assignment_settings_message)
|
||||
|
||||
def test_cohort_enable_disable(self):
|
||||
"""
|
||||
Scenario: Cohort Enable/Disable checkbox related functionality is working as intended.
|
||||
|
||||
Given I have a cohorted course with a user.
|
||||
And I can see the `Enable Cohorts` checkbox is checked.
|
||||
And cohort management controls are visible.
|
||||
When I uncheck the `Enable Cohorts` checkbox.
|
||||
Then I cohort management controls are not visible.
|
||||
And When I reload the page.
|
||||
Then I can see the `Enable Cohorts` checkbox is unchecked.
|
||||
And cohort management controls are not visible.
|
||||
"""
|
||||
self.assertTrue(self.cohort_management_page.is_cohorted)
|
||||
self.assertTrue(self.cohort_management_page.cohort_management_controls_visible())
|
||||
self.cohort_management_page.is_cohorted = False
|
||||
self.assertFalse(self.cohort_management_page.cohort_management_controls_visible())
|
||||
self.browser.refresh()
|
||||
self.cohort_management_page.wait_for_page()
|
||||
self.assertFalse(self.cohort_management_page.is_cohorted)
|
||||
self.assertFalse(self.cohort_management_page.cohort_management_controls_visible())
|
||||
|
||||
def test_link_to_data_download(self):
|
||||
"""
|
||||
Scenario: a link is present from the cohort configuration in
|
||||
@@ -656,8 +677,7 @@ class CohortContentGroupAssociationTest(UniqueCourseTest, CohortTestMixin):
|
||||
# go to the membership page on the instructor dashboard
|
||||
self.instructor_dashboard_page = InstructorDashboardPage(self.browser, self.course_id)
|
||||
self.instructor_dashboard_page.visit()
|
||||
membership_page = self.instructor_dashboard_page.select_membership()
|
||||
self.cohort_management_page = membership_page.select_cohort_management_section()
|
||||
self.cohort_management_page = self.instructor_dashboard_page.select_cohort_management()
|
||||
|
||||
def test_no_content_group_linked(self):
|
||||
"""
|
||||
|
||||
@@ -154,8 +154,7 @@ class EndToEndCohortedCoursewareTest(ContainerBase):
|
||||
"""
|
||||
instructor_dashboard_page = InstructorDashboardPage(self.browser, self.course_id)
|
||||
instructor_dashboard_page.visit()
|
||||
membership_page = instructor_dashboard_page.select_membership()
|
||||
cohort_management_page = membership_page.select_cohort_management_section()
|
||||
cohort_management_page = instructor_dashboard_page.select_cohort_management()
|
||||
|
||||
def add_cohort_with_student(cohort_name, content_group, student):
|
||||
cohort_management_page.add_cohort(cohort_name, content_group=content_group)
|
||||
|
||||
Reference in New Issue
Block a user