def test_search(self): """ Make sure that you can search courses. """ search_string = "dashboard" html_content = "dashboard search" # Enroll student in courses A & B, but not C for course_info in [self.courses['A'], self.courses['B']]: course_key = generate_course_key(course_info['org'], course_info['number'], course_info['run']) AutoAuthPage(self.browser, username=self.USERNAME, email=self.EMAIL, course_id=course_key).visit() # Create content in studio without publishing. self._auto_auth(self.STAFF_USERNAME, self.STAFF_EMAIL, True) self._studio_add_content(self.studio_course_outlines['A'], html_content) self._studio_add_content(self.studio_course_outlines['B'], html_content) self._studio_add_content(self.studio_course_outlines['C'], html_content) # Do a search, there should be no results shown. self._auto_auth(self.USERNAME, self.EMAIL, False) self.dashboard.visit() self.dashboard.search_for_term(search_string) assert search_string not in self.dashboard.search_results.html[0] # Publish in studio to trigger indexing. self._auto_auth(self.STAFF_USERNAME, self.STAFF_EMAIL, True) self._studio_publish_content(self.studio_course_outlines['A']) self._studio_publish_content(self.studio_course_outlines['B']) self._studio_publish_content(self.studio_course_outlines['C']) # Do the search again, this time we expect results from courses A & B, but not C self._auto_auth(self.USERNAME, self.EMAIL, False) self.dashboard.visit() self.dashboard.search_for_term(search_string) assert self.dashboard.search_results.html[0].count(search_string) == 2 assert self.dashboard.search_results.html[0].count( self.courses['A']['display_name']) == 1 assert self.dashboard.search_results.html[0].count( self.courses['B']['display_name']) == 1
def test_search(self): """ Make sure that you can search courses. """ search_string = "dashboard" html_content = "dashboard search" # Enroll student in courses A & B, but not C for course_info in [self.courses['A'], self.courses['B']]: course_key = generate_course_key( course_info['org'], course_info['number'], course_info['run'] ) AutoAuthPage( self.browser, username=self.USERNAME, email=self.EMAIL, course_id=course_key ).visit() # Create content in studio without publishing. self._auto_auth(self.STAFF_USERNAME, self.STAFF_EMAIL, True) self._studio_add_content(self.studio_course_outlines['A'], html_content) self._studio_add_content(self.studio_course_outlines['B'], html_content) self._studio_add_content(self.studio_course_outlines['C'], html_content) # Do a search, there should be no results shown. self._auto_auth(self.USERNAME, self.EMAIL, False) self.dashboard.visit() self.dashboard.search_for_term(search_string) assert search_string not in self.dashboard.search_results.html[0] # Publish in studio to trigger indexing. self._auto_auth(self.STAFF_USERNAME, self.STAFF_EMAIL, True) self._studio_publish_content(self.studio_course_outlines['A']) self._studio_publish_content(self.studio_course_outlines['B']) self._studio_publish_content(self.studio_course_outlines['C']) # Do the search again, this time we expect results from courses A & B, but not C self._auto_auth(self.USERNAME, self.EMAIL, False) self.dashboard.visit() self.dashboard.search_for_term(search_string) assert self.dashboard.search_results.html[0].count(search_string) == 2 assert self.dashboard.search_results.html[0].count(self.courses['A']['display_name']) == 1 assert self.dashboard.search_results.html[0].count(self.courses['B']['display_name']) == 1
def test_prerequisite_course_save_successfully(self): """ Scenario: Selecting course from Pre-Requisite course drop down save the selected course as pre-requisite course. Given that I am on the Schedule & Details page on studio When I select an item in pre-requisite course drop down and click Save Changes button Then My selected item should be saved as pre-requisite course And My selected item should be selected after refreshing the page.' """ course_number = self.unique_id CourseFixture(org='test_org', number=course_number, run='test_run', display_name='Test Course' + course_number).install() pre_requisite_course_key = generate_course_key(org='test_org', number=course_number, run='test_run') pre_requisite_course_id = unicode(pre_requisite_course_key) # Refresh the page to load the new course fixture and populate the prrequisite course dropdown # Then select the prerequisite course and save the changes self.settings_detail.refresh_page() self.settings_detail.wait_for_prerequisite_course_options() select_option_by_value( browser_query=self.settings_detail.pre_requisite_course_options, value=pre_requisite_course_id) self.settings_detail.save_changes() self.assertEqual('Your changes have been saved.', self.settings_detail.alert_confirmation_title.text) # Refresh the page again and confirm the prerequisite course selection is properly reflected self.settings_detail.refresh_page() self.settings_detail.wait_for_prerequisite_course_options() self.assertTrue( is_option_value_selected(browser_query=self.settings_detail. pre_requisite_course_options, value=pre_requisite_course_id)) # Set the prerequisite course back to None and save the changes select_option_by_value( browser_query=self.settings_detail.pre_requisite_course_options, value='') self.settings_detail.save_changes() self.assertEqual('Your changes have been saved.', self.settings_detail.alert_confirmation_title.text) # Refresh the page again to confirm the None selection is properly reflected self.settings_detail.refresh_page() self.settings_detail.wait_for_prerequisite_course_options() self.assertTrue( is_option_value_selected(browser_query=self.settings_detail. pre_requisite_course_options, value='')) # Re-pick the prerequisite course and confirm no errors are thrown (covers a discovered bug) select_option_by_value( browser_query=self.settings_detail.pre_requisite_course_options, value=pre_requisite_course_id) self.settings_detail.save_changes() self.assertEqual('Your changes have been saved.', self.settings_detail.alert_confirmation_title.text) # Refresh the page again to confirm the prerequisite course selection is properly reflected self.settings_detail.refresh_page() self.settings_detail.wait_for_prerequisite_course_options() dropdown_status = is_option_value_selected( browser_query=self.settings_detail.pre_requisite_course_options, value=pre_requisite_course_id) self.assertTrue(dropdown_status)
def setUp(self): """ Initializes the components (page objects, courses, users) for this test suite """ # Some parameters are provided by the parent setUp() routine, such as the following: # self.course_id, self.course_info, self.unique_id super(BaseLmsDashboardTestMultiple, self).setUp() # Load page objects for use by the tests self.dashboard_page = DashboardPage(self.browser) # Configure some aspects of the test course and install the settings into the course self.courses = { 'A': { 'org': 'test_org', 'number': self.unique_id, 'run': 'test_run_A', 'display_name': 'Test Course A', 'enrollment_mode': 'audit', 'cert_name_long': 'Certificate of Audit Achievement' }, 'B': { 'org': 'test_org', 'number': self.unique_id, 'run': 'test_run_B', 'display_name': 'Test Course B', 'enrollment_mode': 'verified', 'cert_name_long': 'Certificate of Verified Achievement' }, 'C': { 'org': 'test_org', 'number': self.unique_id, 'run': 'test_run_C', 'display_name': 'Test Course C', 'enrollment_mode': 'credit', 'cert_name_long': 'Certificate of Credit Achievement' } } self.username = "******".format(uuid=self.unique_id[0:6]) self.email = "{user}@example.com".format(user=self.username) self.course_keys = {} self.course_fixtures = {} for key, value in self.courses.iteritems(): course_key = generate_course_key( value['org'], value['number'], value['run'], ) course_fixture = CourseFixture( value['org'], value['number'], value['run'], value['display_name'], ) course_fixture.add_advanced_settings({ u"social_sharing_url": { u"value": "http://custom/course/url" }, u"cert_name_long": { u"value": value['cert_name_long'] } }) course_fixture.install() self.course_keys[key] = course_key self.course_fixtures[key] = course_fixture # Create the test user, register them for the course, and authenticate AutoAuthPage(self.browser, username=self.username, email=self.email, course_id=course_key, enrollment_mode=value['enrollment_mode']).visit() # Navigate the authenticated, enrolled user to the dashboard page and get testing! self.dashboard_page.visit()
def test_prerequisite_course_save_successfully(self): """ Scenario: Selecting course from Pre-Requisite course drop down save the selected course as pre-requisite course. Given that I am on the Schedule & Details page on studio When I select an item in pre-requisite course drop down and click Save Changes button Then My selected item should be saved as pre-requisite course And My selected item should be selected after refreshing the page.' """ course_number = self.unique_id CourseFixture( org='test_org', number=course_number, run='test_run', display_name='Test Course' + course_number ).install() pre_requisite_course_key = generate_course_key( org='test_org', number=course_number, run='test_run' ) pre_requisite_course_id = unicode(pre_requisite_course_key) # Refresh the page to load the new course fixture and populate the prrequisite course dropdown # Then select the prerequisite course and save the changes self.settings_detail.refresh_page() self.settings_detail.wait_for_prerequisite_course_options() select_option_by_value( browser_query=self.settings_detail.pre_requisite_course_options, value=pre_requisite_course_id ) self.settings_detail.save_changes() self.assertEqual( 'Your changes have been saved.', self.settings_detail.alert_confirmation_title.text ) # Refresh the page again and confirm the prerequisite course selection is properly reflected self.settings_detail.refresh_page() self.settings_detail.wait_for_prerequisite_course_options() self.assertTrue(is_option_value_selected( browser_query=self.settings_detail.pre_requisite_course_options, value=pre_requisite_course_id )) # Set the prerequisite course back to None and save the changes select_option_by_value( browser_query=self.settings_detail.pre_requisite_course_options, value='' ) self.settings_detail.save_changes() self.assertEqual( 'Your changes have been saved.', self.settings_detail.alert_confirmation_title.text ) # Refresh the page again to confirm the None selection is properly reflected self.settings_detail.refresh_page() self.settings_detail.wait_for_prerequisite_course_options() self.assertTrue(is_option_value_selected( browser_query=self.settings_detail.pre_requisite_course_options, value='' )) # Re-pick the prerequisite course and confirm no errors are thrown (covers a discovered bug) select_option_by_value( browser_query=self.settings_detail.pre_requisite_course_options, value=pre_requisite_course_id ) self.settings_detail.save_changes() self.assertEqual( 'Your changes have been saved.', self.settings_detail.alert_confirmation_title.text ) # Refresh the page again to confirm the prerequisite course selection is properly reflected self.settings_detail.refresh_page() self.settings_detail.wait_for_prerequisite_course_options() dropdown_status = is_option_value_selected( browser_query=self.settings_detail.pre_requisite_course_options, value=pre_requisite_course_id ) self.assertTrue(dropdown_status)
def setUp(self): """ Initializes the components (page objects, courses, users) for this test suite """ # Some parameters are provided by the parent setUp() routine, such as the following: # self.course_id, self.course_info, self.unique_id super(BaseLmsDashboardTestMultiple, self).setUp() # Load page objects for use by the tests self.dashboard_page = DashboardPage(self.browser) # Configure some aspects of the test course and install the settings into the course self.courses = { 'A': { 'org': 'test_org', 'number': self.unique_id, 'run': 'test_run_A', 'display_name': 'Test Course A', 'enrollment_mode': 'audit', 'cert_name_long': 'Certificate of Audit Achievement' }, 'B': { 'org': 'test_org', 'number': self.unique_id, 'run': 'test_run_B', 'display_name': 'Test Course B', 'enrollment_mode': 'verified', 'cert_name_long': 'Certificate of Verified Achievement' }, 'C': { 'org': 'test_org', 'number': self.unique_id, 'run': 'test_run_C', 'display_name': 'Test Course C', 'enrollment_mode': 'credit', 'cert_name_long': 'Certificate of Credit Achievement' } } self.username = "******".format(uuid=self.unique_id[0:6]) self.email = "{user}@example.com".format(user=self.username) self.course_keys = {} self.course_fixtures = {} for key, value in self.courses.iteritems(): course_key = generate_course_key( value['org'], value['number'], value['run'], ) course_fixture = CourseFixture( value['org'], value['number'], value['run'], value['display_name'], ) course_fixture.add_advanced_settings({ u"social_sharing_url": {u"value": "http://custom/course/url"}, u"cert_name_long": {u"value": value['cert_name_long']} }) course_fixture.install() self.course_keys[key] = course_key self.course_fixtures[key] = course_fixture # Create the test user, register them for the course, and authenticate AutoAuthPage( self.browser, username=self.username, email=self.email, course_id=course_key, enrollment_mode=value['enrollment_mode'] ).visit() # Navigate the authenticated, enrolled user to the dashboard page and get testing! self.dashboard_page.visit()
def setUp(self): """ Initializes the components (page objects, courses, users) for this test suite """ # Some parameters are provided by the parent setUp() routine, such as the following: # self.course_id, self.course_info, self.unique_id super(BaseLmsDashboardTestMultiple, self).setUp() # lint-amnesty, pylint: disable=super-with-arguments # Load page objects for use by the tests self.dashboard_page = DashboardPage(self.browser) # Configure some aspects of the test course and install the settings into the course self.courses = { 'A': { 'org': 'test_org', 'number': self.unique_id, 'run': 'test_run_A', 'display_name': 'Test Course A', 'enrollment_mode': 'audit', 'cert_name_long': 'Certificate of Audit Achievement' }, 'B': { 'org': 'test_org', 'number': self.unique_id, 'run': 'test_run_B', 'display_name': 'Test Course B', 'enrollment_mode': 'verified', 'cert_name_long': 'Certificate of Verified Achievement' }, 'C': { 'org': 'test_org', 'number': self.unique_id, 'run': 'test_run_C', 'display_name': 'Test Course C', 'enrollment_mode': 'credit', 'cert_name_long': 'Certificate of Credit Achievement' } } self.username = "******".format(uuid=self.unique_id[0:6]) self.email = "{user}@example.com".format(user=self.username) self.course_keys = {} self.course_fixtures = {} for key, value in six.iteritems(self.courses): course_key = generate_course_key( value['org'], value['number'], value['run'], ) course_fixture = CourseFixture( value['org'], value['number'], value['run'], value['display_name'], ) course_fixture.add_advanced_settings({ u"social_sharing_url": { u"value": "http://custom/course/url" }, u"cert_name_long": { u"value": value['cert_name_long'] } }) course_fixture.add_children( XBlockFixtureDesc('chapter', 'Test Section 1').add_children( XBlockFixtureDesc('sequential', 'Test Subsection 1,1'). add_children( XBlockFixtureDesc( 'problem', 'Test Problem 1', data='<problem>problem 1 dummy body</problem>'), XBlockFixtureDesc( 'html', 'html 1', data="<html>html 1 dummy body</html>"), XBlockFixtureDesc( 'problem', 'Test Problem 2', data="<problem>problem 2 dummy body</problem>"), XBlockFixtureDesc( 'html', 'html 2', data="<html>html 2 dummy body</html>"), ), XBlockFixtureDesc('sequential', 'Test Subsection 1,2'). add_children( XBlockFixtureDesc( 'problem', 'Test Problem 3', data='<problem>problem 3 dummy body</problem>'), ), XBlockFixtureDesc( 'sequential', 'Test HIDDEN Subsection', metadata={ 'visible_to_staff_only': True }).add_children( XBlockFixtureDesc( 'problem', 'Test HIDDEN Problem', data='<problem>hidden problem</problem>'), ), )).install() self.course_keys[key] = course_key self.course_fixtures[key] = course_fixture # Create the test user, register them for the course, and authenticate AutoAuthPage(self.browser, username=self.username, email=self.email, course_id=course_key, enrollment_mode=value['enrollment_mode']).visit() # Navigate the authenticated, enrolled user to the dashboard page and get testing! self.dashboard_page.visit()