diff --git a/common/test/acceptance/tests/lms/test_lms_course_home.py b/common/test/acceptance/tests/lms/test_lms_course_home.py index bee5448968..f883a05d5c 100644 --- a/common/test/acceptance/tests/lms/test_lms_course_home.py +++ b/common/test/acceptance/tests/lms/test_lms_course_home.py @@ -63,74 +63,6 @@ class CourseHomeBaseTest(UniqueCourseTest): auto_auth(self.browser, self.USERNAME, self.EMAIL, False, self.course_id) -class CourseHomeTest(CourseHomeBaseTest): - """ - Tests the course home page with course outline. - """ - shard = 20 - - def test_course_home(self): - """ - Smoke test of course goals, course outline, breadcrumbs to and from course outline, and bookmarks. - """ - ModeCreationPage( - self.browser, self.course_id, mode_slug=u'verified', - mode_display_name='verified', min_price=10 - ).visit() - self.course_home_page.visit() - - # TODO: TNL-6546: Remove course_outline_page. - self.course_home_page.course_outline_page = True - self.courseware_page.nav.course_outline_page = True - - # Check that the tab lands on the course home page. - self.assertTrue(self.course_home_page.is_browser_on_page()) - - # Check that a success message and update course field are shown when selecting a course goal - # TODO: LEARNER-2522: Ensure the correct message shows up for a particular goal choice - self.assertFalse(self.course_home_page.is_course_goal_success_message_shown()) - self.assertFalse(self.course_home_page.is_course_goal_update_field_shown()) - self.course_home_page.select_course_goal() - self.course_home_page.wait_for_ajax() - self.assertTrue(self.course_home_page.is_course_goal_success_message_shown()) - self.assertTrue(self.course_home_page.is_course_goal_update_field_shown()) - - # Check that the course navigation appears correctly - EXPECTED_SECTIONS = { - u'Test Section': [u'Test Subsection'], - u'Test Section 2': [u'Test Subsection 2', u'Test Subsection 3'] - } - - actual_sections = self.course_home_page.outline.sections - for section, _ in six.iteritems(EXPECTED_SECTIONS): - self.assertIn(section, actual_sections) - self.assertEqual(actual_sections[section], EXPECTED_SECTIONS[section]) - - # Navigate to a particular section - self.course_home_page.outline.go_to_section(u'Test Section', u'Test Subsection') - - # Check the sequence items on the courseware page - EXPECTED_ITEMS = ['Test Problem 1', 'Test Problem 2', 'Test HTML'] - - actual_items = self.courseware_page.nav.sequence_items - self.assertEqual(len(actual_items), len(EXPECTED_ITEMS)) - for expected in EXPECTED_ITEMS: - self.assertIn(expected, actual_items) - - # Use outline breadcrumb to get back to course home page. - self.courseware_page.nav.go_to_outline() - - # Navigate to a particular section other than the default landing section. - self.course_home_page.outline.go_to_section('Test Section 2', 'Test Subsection 3') - self.assertTrue(self.courseware_page.nav.is_on_section('Test Section 2', 'Test Subsection 3')) - - # Verify that we can navigate to the bookmarks page - self.course_home_page.visit() - self.course_home_page.click_bookmarks_button() - bookmarks_page = BookmarksPage(self.browser, self.course_id) - self.assertTrue(bookmarks_page.is_browser_on_page()) - - @attr('a11y') class CourseHomeA11yTest(CourseHomeBaseTest): """ diff --git a/common/test/acceptance/tests/lms/test_lms_help.py b/common/test/acceptance/tests/lms/test_lms_help.py index 93f68f4029..e88837d3da 100644 --- a/common/test/acceptance/tests/lms/test_lms_help.py +++ b/common/test/acceptance/tests/lms/test_lms_help.py @@ -88,29 +88,3 @@ class TestCohortHelp(ContainerBase, CohortTestMixin): '/course_features/cohorts/cohorts_overview.html#all-automated-assignment', ) self.verify_help_link(href) - - -@skip_unless_master # See note at the top of the file. -class InstructorDashboardHelp(BaseInstructorDashboardTest): - """ - Tests opening help from the general Help button in the instructor dashboard. - """ - shard = 2 - - def setUp(self): - super(InstructorDashboardHelp, self).setUp() - self.course_fixture = CourseFixture(**self.course_info).install() - self.log_in_as_instructor() - self.instructor_dashboard_page = self.visit_instructor_dashboard() - - def test_instructor_dashboard_help(self): - """ - Scenario: Help button opens staff help - Given that I am viewing the Instructor Dashboard - When I click "Help" - Then I see help about the instructor dashboard in a new tab - """ - href = url_for_help('course_author', '/CA_instructor_dash_help.html') - help_element = self.instructor_dashboard_page.get_help_element() - click_and_wait_for_window(self, help_element) - assert_opened_help_link_is_correct(self, href) diff --git a/common/test/acceptance/tests/lms/test_problem_types.py b/common/test/acceptance/tests/lms/test_problem_types.py index 9bfa5acb3b..745a11ee9d 100644 --- a/common/test/acceptance/tests/lms/test_problem_types.py +++ b/common/test/acceptance/tests/lms/test_problem_types.py @@ -1450,34 +1450,6 @@ class FormulaProblemTypeBase(ProblemTypeTestBase): self.problem_page.fill_answer(textvalue) -@ddt.ddt -class FormulaProblemTypeTest(FormulaProblemTypeBase, ProblemTypeTestMixin, ChangingAnswerOfProblemTestMixin): - """ - Standard tests for the Formula Problem Type - """ - shard = 24 - pass - - -class FormulaProblemTypeTestNonRandomized(FormulaProblemTypeBase, NonRandomizedProblemTypeTestMixin): - """ - Tests for non-randomized Formula problem - """ - shard = 24 - - def get_problem(self): - """ - Creates a {problem_type} problem - """ - # Generate the problem XML using capa.tests.response_xml_factory - return XBlockFixtureDesc( - 'problem', - self.problem_name, - data=self.factory.build_xml(**self.factory_kwargs), - metadata={'rerandomize': 'never', 'show_reset_button': True} - ) - - class FormulaProblemTypeNeverShowCorrectnessTest(FormulaProblemTypeBase, ProblemNeverShowCorrectnessMixin): """ Ensure that correctness can be withheld for Formula Problem Type problems. @@ -1591,24 +1563,6 @@ class ScriptProblemResetAfterAnswerTest(ScriptProblemTypeBase): self.answer_problem(other_correctness) self.assertTrue(self.problem_status('unanswered')) - @ddt.data(['correct', '2/2 points (ungraded)'], ['incorrect', '0/2 points (ungraded)']) - @ddt.unpack - def test_script_score_after_answer_and_reset(self, correctness, score): - """ - Scenario: I can see my score on a script problem when I answer it and after I reset it - - Given I am viewing a script problem - When I answer a script problem correct/incorrect - Then I should see a score - When I reset the problem - Then I should see a score of points possible: 0/2 points (ungraded) - """ - self.answer_problem(correctness) - self.problem_page.click_submit() - self.assertEqual(self.problem_page.problem_progress_graded_value, score) - self.problem_page.click_reset() - self.assertEqual(self.problem_page.problem_progress_graded_value, '0/2 points (ungraded)') - class ScriptProblemTypeTestNonRandomized(ScriptProblemTypeBase, NonRandomizedProblemTypeTestMixin): """ diff --git a/common/test/acceptance/tests/studio/test_studio_container.py b/common/test/acceptance/tests/studio/test_studio_container.py index fffe35adef..bfa99ede43 100644 --- a/common/test/acceptance/tests/studio/test_studio_container.py +++ b/common/test/acceptance/tests/studio/test_studio_container.py @@ -537,23 +537,6 @@ class ContentGroupVisibilityModalTest(BaseGroupConfigurationsTest): """ self.select_and_verify_saved(self.html_component, self.CONTENT_GROUP_PARTITION, ['Dogs', 'Cats']) - def test_select_zero_content_groups(self): - """ - Scenario: The component visibility modal can not be set to be visible to 'Specific Content Groups' without - selecting those specific groups. - Given I have a unit with one component - When I go to the container page for that unit - And I open the visibility editor modal for that unit's component - And I select 'Specific Content Groups' - And I save the modal - Then the visibility selection should be 'All Students and Staff' - And the container page should not display the content visibility warning - """ - self.select_and_verify_saved( - self.html_component, self.CONTENT_GROUP_PARTITION - ) - self.verify_visibility_set(self.html_component, False) - def test_missing_groups(self): """ Scenario: The component visibility modal shows a validation error when visibility is set to multiple unknown @@ -1356,29 +1339,6 @@ class MoveComponentTest(ContainerBase): component_display_names_after_operation=['HTML 21', 'HTML 22', 'HTML 11'] ) - def test_undo_move_component_successfully(self): - """ - Test if we can undo move a component successfully. - - Given I am a staff user - And I go to unit page in first section - And I open the move modal - When I click on the move button - Then I see move operation successful message - And When I clicked on undo move link - Then I see that undo move operation is successful - """ - unit_page = self.go_to_unit_page(unit_name='Test Unit 1') - components = unit_page.displayed_children - self.assertEqual(len(components), 2) - - self.verify_move_opertions( - unit_page=unit_page, - source_component=components[0], - operation='undo_move', - component_display_names_after_operation=['HTML 11', 'HTML 12'] - ) - @ddt.data('publish', 'discard') def test_publish_discard_changes_afer_move(self, operation): """ diff --git a/common/test/acceptance/tests/studio/test_studio_library_container.py b/common/test/acceptance/tests/studio/test_studio_library_container.py index 7993a6ebce..38c459626d 100644 --- a/common/test/acceptance/tests/studio/test_studio_library_container.py +++ b/common/test/acceptance/tests/studio/test_studio_library_container.py @@ -109,63 +109,6 @@ class StudioLibraryContainerTest(StudioLibraryTest, UniqueCourseTest, TestWithSe self.assertEqual(edit_modal.library_name, library_name) self.assertEqual(edit_modal.count, max_count) - def test_no_library_shows_library_not_configured(self): - """ - Scenario: Given I have a library, a course and library content xblock in a course - When I go to studio unit page for library content block - And I edit to select "No Library" - Then I can see that library content block is misconfigured - """ - expected_text = 'A library has not yet been selected.' - expected_action = 'Select a Library' - library_container = self._get_library_xblock_wrapper(self.unit_page.xblocks[1]) - - # precondition check - the library block should be configured before we remove the library setting - self.assertFalse(library_container.has_validation_not_configured_warning) - - library_container.edit() - edit_modal = StudioLibraryContentEditor(self.browser, library_container.locator) - edit_modal.library_name = "No Library Selected" - library_container.save_settings() - - self.assertTrue(library_container.has_validation_not_configured_warning) - self.assertIn(expected_text, library_container.validation_not_configured_warning_text) - self.assertIn(expected_action, library_container.validation_not_configured_warning_text) - - def test_out_of_date_message(self): - """ - Scenario: Given I have a library, a course and library content xblock in a course - When I go to studio unit page for library content block - Then I update the library being used - Then I refresh the page - Then I can see that library content block needs to be updated - When I click on the update link - Then I can see that the content no longer needs to be updated - """ - # Formerly flaky: see TE-745 - expected_text = "This component is out of date. The library has new content." - library_block = self._get_library_xblock_wrapper(self.unit_page.xblocks[1]) - - self.assertFalse(library_block.has_validation_warning) - # Removed this assert until a summary message is added back to the author view (SOL-192) - #self.assertIn("3 matching components", library_block.author_content) - - self.library_fixture.create_xblock(self.library_fixture.library_location, XBlockFixtureDesc("html", "Html4")) - - self.unit_page.visit() # Reload the page - - self.assertTrue(library_block.has_validation_warning) - self.assertIn(expected_text, library_block.validation_warning_text) - - library_block.refresh_children() - - self.unit_page.wait_for_page() # Wait for the page to reload - library_block = self._get_library_xblock_wrapper(self.unit_page.xblocks[1]) - - self.assertFalse(library_block.has_validation_message) - # Removed this assert until a summary message is added back to the author view (SOL-192) - #self.assertIn("4 matching components", library_block.author_content) - def test_no_content_message(self): """ Scenario: Given I have a library, a course and library content xblock in a course @@ -214,85 +157,6 @@ class StudioLibraryContainerTest(StudioLibraryTest, UniqueCourseTest, TestWithSe self.assertFalse(library_container.has_validation_error) self.assertFalse(library_container.has_validation_warning) - def test_not_enough_children_blocks(self): - """ - Scenario: Given I have a library, a course and library content xblock in a course - When I go to studio unit page for library content block - And I set Problem Type selector so "Any" - Then I can see that "No matching content" warning is shown - """ - expected_tpl = u"The specified library is configured to fetch {count} problems, " \ - u"but there are only {actual} matching problems." - - library_container = self._get_library_xblock_wrapper(self.unit_page.xblocks[1]) - - # precondition check - assert block is configured fine - self.assertFalse(library_container.has_validation_error) - self.assertFalse(library_container.has_validation_warning) - - library_container.edit() - edit_modal = StudioLibraryContentEditor(self.browser, library_container.locator) - edit_modal.count = 50 - library_container.save_settings() - - self.assertTrue(library_container.has_validation_warning) - self.assertIn( - expected_tpl.format(count=50, actual=len(self.library_fixture.children)), - library_container.validation_warning_text - ) - - def test_settings_overrides(self): - """ - Scenario: Given I have a library, a course and library content xblock in a course - When I go to studio unit page for library content block - And when I click the "View" link - Then I can see a preview of the blocks drawn from the library. - - When I edit one of the blocks to change a setting such as "display_name", - Then I can see the new setting is overriding the library version. - - When I subsequently click to refresh the content with the latest from the library, - Then I can see that the overrided version of the setting is preserved. - - When I click to edit the block and reset the setting, - then I can see that the setting's field defaults back to the library version. - """ - block_wrapper_unit_page = self._get_library_xblock_wrapper(self.unit_page.xblocks[0].children[0]) - container_page = block_wrapper_unit_page.go_to_container() - library_block = self._get_library_xblock_wrapper(container_page.xblocks[0]) - - self.assertFalse(library_block.has_validation_message) - self.assertEqual(len(library_block.children), 3) - - block = library_block.children[0] - self.assertIn(block.name, ("Html1", "Html2", "Html3")) - name_default = block.name - - block.edit() - new_display_name = "A new name for this HTML block" - block.set_field_val("Display Name", new_display_name) - block.save_settings() - - self.assertEqual(block.name, new_display_name) - - # Create a new block, causing a new library version: - self.library_fixture.create_xblock(self.library_fixture.library_location, XBlockFixtureDesc("html", "Html4")) - - container_page.visit() # Reload - self.assertTrue(library_block.has_validation_warning) - - library_block.refresh_children() - container_page.wait_for_page() # Wait for the page to reload - - self.assertEqual(len(library_block.children), 4) - self.assertEqual(block.name, new_display_name) - - # Reset: - block.edit() - block.reset_field_val("Display Name") - block.save_settings() - self.assertEqual(block.name, name_default) - def test_cannot_manage(self): """ Scenario: Given I have a library, a course and library content xblock in a course diff --git a/common/test/acceptance/tests/studio/test_studio_problem_editor.py b/common/test/acceptance/tests/studio/test_studio_problem_editor.py index 69906a7da2..4b0b036efe 100644 --- a/common/test/acceptance/tests/studio/test_studio_problem_editor.py +++ b/common/test/acceptance/tests/studio/test_studio_problem_editor.py @@ -43,96 +43,6 @@ class ProblemComponentEditor(ContainerBase): ) ) - def test_user_can_view_metadata(self): - """ - Scenario: User can view metadata - Given I have created a Blank Common Problem - When I edit and select Settings - Then I see the advanced settings and their expected values - And Edit High Level Source is not visible - """ - expected_default_settings = { - 'Display Name': u'Blank Common Problem', - 'Matlab API key': u'', - 'Maximum Attempts': u'', - 'Problem Weight': u'', - 'Randomization': u'Never', - 'Show Answer': u'Finished', - 'Show Answer: Number of Attempts': u'0', - 'Show Reset Button': u'False', - 'Timer Between Attempts': u'0' - } - self.problem_editor.open_settings() - settings = self.problem_editor.get_settings() - self.assertEqual(expected_default_settings, settings) - self.assertFalse(self.problem_editor.is_latex_compiler_present()) - - def test_user_can_modify_string_values(self): - """ - Given I have created a Blank Common Problem - When I edit and select Settings - Then I can modify the display name - And my display name change is persisted on save - """ - self.problem_editor.open_settings() - self.problem_editor.set_field_val('Display Name', 'New Name') - self.problem_editor.save() - component_name = self.unit.xblock_titles[0] - self.assertEqual(component_name, 'New Name', 'Component Name is not same as the new name') - - def test_user_can_specify_special_characters(self): - """ - Scenario: User can specify special characters in String values - Given I have created a Blank Common Problem - When I edit and select Settings - Then I can specify special characters in the display name - And my special characters are persisted on save - """ - self.problem_editor.open_settings() - self.problem_editor.set_field_val('Display Name', '&&&') - self.problem_editor.save() - component_name = self.unit.xblock_titles[0] - self.assertEqual(component_name, '&&&', 'Component Name is not same as the new name') - - def test_user_can_revert_display_name_to_unset(self): - """ - Scenario: User can revert display name to unset - Given I have created a Blank Common Problem - When I edit and select Settings - Then I can revert the display name to unset - And my display name is unset on save - """ - self.problem_editor.open_settings() - self.problem_editor.set_field_val('Display Name', 'New Name') - self.problem_editor.save() - - # reopen settings - self.container_page.edit() - self.problem_editor.open_settings() - - self.problem_editor.revert_setting(display_name=True) - self.problem_editor.save() - component_name = self.unit.xblock_titles[0] - self.assertEqual(component_name, 'Blank Advanced Problem', 'Component Name is not reverted to default name') - - def test_user_can_set_html_in_display_name(self): - """ - Scenario: User can specify html in display name and it will be escaped - Given I have created a Blank Common Problem - When I edit and select Settings - Then I can specify html in the display name and save - And the problem display name is "" - """ - self.problem_editor.open_settings() - self.problem_editor.set_field_val('Display Name', '') - self.problem_editor.save() - component_name = self.unit.xblock_titles[0] - self.assertEqual( - component_name, - '', - 'Component Name is not same as the new name' - ) - def test_user_can_modify_float_input(self): """ Scenario: User can modify float input values @@ -156,18 +66,6 @@ class ProblemComponentEditor(ContainerBase): field_value = self.problem_editor.get_field_val('Problem Weight') self.assertEqual(field_value, '', 'Component settings is not reverted to default') - def test_user_cannot_type_letters(self): - """ - Scenario: User cannot type letters in float number field - Given I have created a Blank Common Problem - When I edit and select Settings - Then if I set the weight to "abc", it remains unset - """ - self.problem_editor.open_settings() - self.problem_editor.set_field_val('Problem Weight', 'abc') - field_value = self.problem_editor.get_field_val('Problem Weight') - self.assertEqual(field_value, '', "Only the Numerical input is allowed in this field") - @skip_if_browser('firefox') # Lettuce tests run on chrome and chrome does not allow to enter # periods/dots in this field and consequently we have to save the @@ -194,24 +92,6 @@ class ProblemComponentEditor(ContainerBase): field_value = self.problem_editor.get_field_val('Maximum Attempts') self.assertEqual(field_value, '234', "Decimal values are not allowed in this field") - def test_user_cannot_type_out_of_range_values(self): - """ - Scenario: User cannot type out of range values in an integer number field - Given I have created a Blank Common Problem - When I edit and select Settings - Then if I set the max attempts to "-3", it will persist as a valid integer - """ - self.problem_editor.open_settings() - self.problem_editor.set_field_val('Maximum Attempts', '-3') - self.problem_editor.save() - - # reopen settings - self.container_page.edit() - self.problem_editor.open_settings() - - field_value = self.problem_editor.get_field_val('Maximum Attempts') - self.assertGreaterEqual(field_value, '0', "Negative values are not allowed in this field") - def test_settings_are_not_saved_on_cancel(self): """ Scenario: Settings changes are not saved on Cancel @@ -241,29 +121,3 @@ class ProblemComponentEditor(ContainerBase): """ self.problem_editor.toggle_cheatsheet() self.assertTrue(self.problem_editor.is_cheatsheet_present(), "Cheatsheet not present") - - def test_user_can_select_values(self): - """ - Scenario: User can select values in a Select - Given I have created a Blank Common Problem - When I edit and select Settings - Then I can select 'Per Student' for Randomization - And my change to randomization is persisted - And I can revert to the default value for randomization - """ - dropdown_name = 'Randomization' - self.problem_editor.open_settings() - self.problem_editor.select_from_dropdown(dropdown_name, 'Per Student') - self.problem_editor.save() - - # reopen the settings - self.container_page.edit() - self.problem_editor.open_settings() - - dropdown_value = self.problem_editor.get_value_from_the_dropdown(dropdown_name) - self.assertEqual(dropdown_value, 'Per Student', "Component setting is not changed") - - # revert settings - self.problem_editor.revert_setting() - dropdown_value = self.problem_editor.get_value_from_the_dropdown(dropdown_name) - self.assertEqual(dropdown_value, 'Never', 'Component setting is not reverted to default') diff --git a/common/test/acceptance/tests/studio/test_studio_settings.py b/common/test/acceptance/tests/studio/test_studio_settings.py index 8e1cfa2427..7d906ee758 100644 --- a/common/test/acceptance/tests/studio/test_studio_settings.py +++ b/common/test/acceptance/tests/studio/test_studio_settings.py @@ -231,59 +231,6 @@ class ContentGroupConfigurationTest(StudioCourseTest): self.outline_page.wait_for_page() -@attr(shard=17) -class EnrollmentTrackModeTest(StudioCourseTest): - """ - Tests for the enrollment tracks section - """ - - def setUp(self, is_staff=True, test_xss=True): - super(EnrollmentTrackModeTest, self).setUp(is_staff=is_staff) - - self.audit_track = "Audit" - self.verified_track = "Verified" - self.staff_user = self.user - - def test_all_course_modes_present(self): - """ - This test is meant to ensure that all the course modes show up as groups - on the Group configuration page within the Enrollment Tracks section. - It also checks to make sure that the edit buttons are not available. - """ - add_enrollment_course_modes(self.browser, self.course_id, ['audit', 'verified']) - group_configurations_page = GroupConfigurationsPage( - self.browser, - self.course_info['org'], - self.course_info['number'], - self.course_info['run'] - ) - group_configurations_page.visit() - self.assertTrue(group_configurations_page.enrollment_track_section_present) - - # Make sure the edit buttons are not available. - self.assertFalse(group_configurations_page.enrollment_track_edit_present) - groups = group_configurations_page.get_enrollment_groups() - for g in [self.audit_track, self.verified_track]: - assert g in groups - - def test_one_course_mode(self): - """ - The purpose of this test is to ensure that when there is 1 or fewer course modes - the enrollment track section is not shown. - """ - add_enrollment_course_modes(self.browser, self.course_id, ['audit']) - group_configurations_page = GroupConfigurationsPage( - self.browser, - self.course_info['org'], - self.course_info['number'], - self.course_info['run'] - ) - group_configurations_page.visit() - self.assertFalse(group_configurations_page.enrollment_track_section_present) - groups = group_configurations_page.get_enrollment_groups() - self.assertEqual(len(groups), 0) - - @attr('a11y') class StudioSettingsA11yTest(StudioCourseTest): diff --git a/common/test/acceptance/tests/video/test_studio_video_transcript.py b/common/test/acceptance/tests/video/test_studio_video_transcript.py index e75b35e02e..8beb18aa6c 100644 --- a/common/test/acceptance/tests/video/test_studio_video_transcript.py +++ b/common/test/acceptance/tests/video/test_studio_video_transcript.py @@ -43,86 +43,6 @@ class VideoTranscriptTest(CMSVideoBaseTest): self.navigate_to_course_unit() - def test_input_validation(self): - """ - Scenario: Check input error messages - Given I have created a Video component - - Entering "123.webm" and "456.webm" source to field number 1 and 2 respectively should disable field 1 and 3 - Then I see error message "Link types should be unique." - When I clear fields, input fields should be enabled - - And I enter a "http://link.c" source to field number 1 should disable fields 2 and 3 - Then I see error message "Incorrect url format." - - Entering "http://goo.gl/pxxZrg" source to both field number 1 and 2 should disable fields 1 and 3 - Then I see error message "Links should be unique." - When I clear fields, input fields should be enabled - - And I enter a "http://youtu.be/t_not_exist" source to field number 1 - Then I do not see error message - And I expect inputs are enabled - """ - self._create_video_component() - self.edit_component() - - #User inputs html5 links with equal extension - self.video.set_url_field('123.webm', 1) - self.video.set_url_field('456.webm', 2) - self.assertEqual(self.video.message('error'), 'Link types should be unique.') - - # Currently we are working with 2nd field. It means, that if 2nd field - # contain incorrect value, 1st and 3rd fields should be disabled until - # 2nd field will be filled by correct correct value - self.assertEqual(list(self.video.url_field_status(1, 3).values()), [False, False]) - self.video.clear_fields() - self.assertEqual(list(self.video.url_field_status().values()), [True, True, True]) - - #User input URL with incorrect format - self.video.set_url_field('http://link.c', 1) - self.assertEqual(self.video.message('error'), 'Incorrect url format.') - self.assertEqual(list(self.video.url_field_status(2, 3).values()), [False, False]) - - #User input URL with incorrect format - self.video.set_url_field('http://goo.gl/pxxZrg', 1) - self.video.set_url_field('http://goo.gl/pxxZrg', 2) - self.assertEqual(self.video.message('error'), 'Links should be unique.') - self.assertEqual(list(self.video.url_field_status(1, 3).values()), [False, False]) - self.video.clear_fields() - self.assertEqual(list(self.video.url_field_status().values()), [True, True, True]) - - self.video.set_url_field('http://youtu.be/t_not_exist', 1) - self.assertEqual(self.video.message('error'), '') - self.assertEqual(list(self.video.url_field_status().values()), [True, True, True]) - - def test_youtube_server_interaction(self): - """ - Scenario: Testing interaction with test youtube server - Given I have created a Video component with subtitles - - And I enter a "http://youtu.be/t__eq_exist" source to field number 1 - Then I see status message "No EdX Timed Transcript" - And I see button "import" - - And I enter a "http://youtu.be/t_not_exist" source to field number 1 - Then I see status message "No Timed Transcript" - And I do not see button "import" - And I see button "disabled_download_to_edit" - """ - self._create_video_component(subtitles=True) - self.edit_component() - - # first part of url will be substituted by mock_youtube_server address - # for t__eq_exist id server will respond with transcripts - self.video.set_url_field('http://youtu.be/t__eq_exist', 1) - self.assertEqual(self.video.message('status'), 'No EdX Timed Transcript') - self.assertTrue(self.video.is_transcript_button_visible('import')) - - self.video.set_url_field('http://youtu.be/t_not_exist', 1) - self.assertEqual(self.video.message('status'), 'No Timed Transcript') - self.assertFalse(self.video.is_transcript_button_visible('import')) - self.assertTrue(self.video.is_transcript_button_visible('disabled_download_to_edit')) - def test_youtube_id_w_different_local_server_sub(self): """ Scenario: Youtube id only: check "Found" state when user sets youtube_id with different local and server subs @@ -182,27 +102,6 @@ class VideoTranscriptTest(CMSVideoBaseTest): self.assertTrue(self.video.is_transcript_button_visible('import')) self.assertTrue(self.video.is_transcript_button_visible('upload_new_timed_transcripts')) - def test_youtube_no_import(self): - """ - Scenario: Entering youtube (no importing), and 2 html5 sources without transcripts - "Not Found" - Given I have created a Video component - - urls = ['http://youtu.be/t_not_exist', 't_not_exist.mp4', 't_not_exist.webm'] - for each url in urls do the following -            Enter `url` to field number `n` -            Status message `No Timed Transcript` is shown -            `disabled_download_to_edit` and `upload_new_timed_transcripts` buttons are shown - """ - self._create_video_component() - self.edit_component() - - urls = ['http://youtu.be/t_not_exist', 't_not_exist.mp4', 't_not_exist.webm'] - for index, url in enumerate(urls, 1): - self.video.set_url_field(url, index) - self.assertEqual(self.video.message('status'), 'No Timed Transcript') - self.assertTrue(self.video.is_transcript_button_visible('disabled_download_to_edit')) - self.assertTrue(self.video.is_transcript_button_visible('upload_new_timed_transcripts')) - def test_youtube_with_import(self): """ Scenario: Entering youtube with imported transcripts, and 2 html5 sources without transcripts - "Found" @@ -238,36 +137,6 @@ class VideoTranscriptTest(CMSVideoBaseTest): self.assertTrue(self.video.is_transcript_button_visible('download_to_edit')) self.assertTrue(self.video.is_transcript_button_visible('upload_new_timed_transcripts')) - def test_youtube_wo_transcripts(self): - """ - Scenario: Entering youtube w/o transcripts - html5 w/o transcripts - html5 with transcripts - Given I have created a Video component with subtitles "t_neq_exist" - - urls = ['http://youtu.be/t_not_exist', 't_not_exist.mp4'] - for each url in urls do the following -            Enter `url` to field number `n` -            Status message `No Timed Transcript` is shown -            `disabled_download_to_edit` and `upload_new_timed_transcripts` buttons are shown - - And I enter a "t_neq_exist.webm" source to field number 3 - Then I see status message "Timed Transcript Found" - `download_to_edit` and `upload_new_timed_transcripts` buttons are shown - """ - self._create_video_component(subtitles=True, subtitle_id='t_neq_exist') - self.edit_component() - - urls = ['http://youtu.be/t_not_exist', 't_not_exist.mp4'] - for index, url in enumerate(urls, 1): - self.video.set_url_field(url, index) - self.assertEqual(self.video.message('status'), 'No Timed Transcript') - self.assertTrue(self.video.is_transcript_button_visible('disabled_download_to_edit')) - self.assertTrue(self.video.is_transcript_button_visible('upload_new_timed_transcripts')) - - self.video.set_url_field('t_neq_exist.webm', 3) - self.assertEqual(self.video.message('status'), 'Timed Transcript Found') - self.assertTrue(self.video.is_transcript_button_visible('download_to_edit')) - self.assertTrue(self.video.is_transcript_button_visible('upload_new_timed_transcripts')) - def test_youtube_wo_imported_transcripts(self): """ Scenario: Entering youtube w/o imported transcripts - html5 w/o transcripts w/o import - html5 with transcripts @@ -289,27 +158,6 @@ class VideoTranscriptTest(CMSVideoBaseTest): self.assertTrue(self.video.is_transcript_button_visible('import')) self.assertTrue(self.video.is_transcript_button_visible('upload_new_timed_transcripts')) - def test_youtube_wo_imported_transcripts2(self): - """ - Scenario: Entering youtube w/o imported transcripts - html5 with transcripts - html5 w/o transcripts w/o import - Given I have created a Video component with subtitles "t_neq_exist" - - urls = ['http://youtu.be/t__eq_exist', 't_neq_exist.mp4', 't_not_exist.webm'] - for each url in urls do the following -            Enter `url` to field number `n` -            Status message `No EdX Timed Transcript` is shown -            `import` and `upload_new_timed_transcripts` buttons are shown - """ - self._create_video_component(subtitles=True, subtitle_id='t_neq_exist') - self.edit_component() - - urls = ['http://youtu.be/t__eq_exist', 't_neq_exist.mp4', 't_not_exist.webm'] - for index, url in enumerate(urls, 1): - self.video.set_url_field(url, index) - self.assertEqual(self.video.message('status'), 'No EdX Timed Transcript') - self.assertTrue(self.video.is_transcript_button_visible('import')) - self.assertTrue(self.video.is_transcript_button_visible('upload_new_timed_transcripts')) - def test_youtube_w_imported_transcripts(self): """ Scenario: Entering youtube with imported transcripts - html5 with transcripts - html5 w/o transcripts @@ -419,61 +267,6 @@ class VideoTranscriptTest(CMSVideoBaseTest): self.video.set_url_field('uk_transcripts.webm', 3) self.assertEqual(self.video.message('status'), 'Timed Transcript Found') - def test_one_field_only(self): - """ - Scenario: Work with 1 field only: Enter HTML5 source with transcripts - save -> change it to another one - HTML5 source w/o transcripts - click on use existing -> change it to another one HTML5 source - w/o transcripts - do not click on use existing -> change it to another one HTML5 source w/o - transcripts - click on use existing - Given I have created a Video component with subtitles "t_not_exist" - - If i enter "t_not_exist.mp4" source to field number 1 Then I see status message "Timed Transcript Found" - `download_to_edit` and `upload_new_timed_transcripts` buttons are shown - And I save changes And then edit the component - - If i enter "video_name_2.mp4" source to field number 1 Then I see status message "Confirm Timed Transcript" - I see button "use_existing" - - If i enter "video_name_3.mp4" source to field number 1 Then I see status message "Confirm Timed Transcript" - And I see button "use_existing" - - If i enter a "video_name_4.mp4" source to field number 1 Then I see status message "Confirm Timed Transcript" - I see button "use_existing" And I click on it And I see status message "Timed Transcript Found" - - I save video component And see that the captions are visible - Then I edit video component And I see status message "Timed Transcript Found" - """ - self.metadata = {'sub': 't_not_exist'} - self._create_video_component(subtitles=True, subtitle_id='t_not_exist') - self.edit_component() - - self.video.set_url_field('t_not_exist.mp4', 1) - self.assertEqual(self.video.message('status'), 'Timed Transcript Found') - self.assertTrue(self.video.is_transcript_button_visible('download_to_edit')) - self.assertTrue(self.video.is_transcript_button_visible('upload_new_timed_transcripts')) - self.save_unit_settings() - - self.edit_component() - self.video.set_url_field('video_name_2.mp4', 1) - self.assertEqual(self.video.message('status'), 'Confirm Timed Transcript') - self.assertTrue(self.video.is_transcript_button_visible('use_existing')) - self.assertTrue(self.video.is_transcript_button_visible('upload_new_timed_transcripts')) - - self.video.set_url_field('video_name_3.mp4', 1) - self.assertEqual(self.video.message('status'), 'Confirm Timed Transcript') - self.assertTrue(self.video.is_transcript_button_visible('use_existing')) - - self.video.set_url_field('video_name_4.mp4', 1) - self.assertEqual(self.video.message('status'), 'Confirm Timed Transcript') - self.assertTrue(self.video.is_transcript_button_visible('use_existing')) - self.video.click_button('use_existing') - - self.save_unit_settings() - self.assertTrue(self.video.is_captions_visible()) - - self.edit_component() - self.assertEqual(self.video.message('status'), 'Timed Transcript Found') - def test_two_fields_only(self): """ Scenario: Work with 2 fields: Enter HTML5 source with transcripts - save -> change it to another one HTML5 @@ -527,39 +320,6 @@ class VideoTranscriptTest(CMSVideoBaseTest): self.edit_component() self.assertEqual(self.video.message('status'), 'Timed Transcript Found') - def test_upload_subtitles(self): - """ - Scenario: Transcript upload for a video who has Video ID set on it. - Given I have created a Video component - - I enter a "video_name_1.mp4" source to field number 1 - And set "Video ID" to "video_001" - And I see status message "No Timed Transcript" - And I upload the transcripts file "uk_transcripts.srt" - Then I see status message "Timed Transcript Uploaded Successfully" - And I save changes - Then when I view the video it does show the captions - And I edit the component - Then I see status message "Timed Transcript Found" - """ - self._create_video_component() - - self.edit_component() - self.video.set_field_value('Video ID', 'video_001') - self.save_unit_settings() - - self.edit_component() - self.video.set_url_field('video_name_1.mp4', 1) - self.assertEqual(self.video.message('status'), 'No Timed Transcript') - self.video.upload_transcript('uk_transcripts.srt') - self.assertEqual(self.video.message('status'), 'Timed Transcript Uploaded Successfully') - self.save_unit_settings() - self.video.is_captions_visible() - - self.edit_component() - self.video.verify_field_value('Video ID', 'video_001') - self.assertEqual(self.video.message('status'), 'Timed Transcript Found') - def test_video_wo_subtitles(self): """ Scenario: Video w/o subs - another video w/o subs - Not found message @@ -638,48 +398,6 @@ class VideoTranscriptTest(CMSVideoBaseTest): self.edit_component() self.assertEqual(self.video.message('status'), 'Timed Transcript Found') - def test_non_ascii_transcripts(self): - """ - Scenario: Check non-ascii (chinese) transcripts - Given I have created a Video component - - After I enter a "video_name_1.mp4" source to field number 1 Then I see status message "No Timed Transcript" - After I upload the transcripts "chinese_transcripts.srt" I see message "Timed Transcript Uploaded Successfully" - After saving the changes video captions should be visible - """ - self._create_video_component() - self.edit_component() - - self.video.set_url_field('video_name_1.mp4', 1) - self.assertEqual(self.video.message('status'), 'No Timed Transcript') - self.video.upload_transcript('chinese_transcripts.srt') - self.assertEqual(self.video.message('status'), 'Timed Transcript Uploaded Successfully') - self.save_unit_settings() - self.assertTrue(self.video.is_captions_visible()) - - def test_upload_subtitles_w_different_names2(self): - """ - Scenario: Uploading subtitles for file with periods in it does not effect the uploaded transcript in anyway - Given I have created a Video component - - After I enter a "video_name_1.1.2.mp4" source to field number 1, I see status message "No Timed Transcript" - After I upload the transcripts file "uk_transcripts.srt" I see message "Timed Transcript Uploaded Successfully" - After saving the changes video captions should be visible - After I edit the component I should see status message "Timed Transcript Found" - """ - self._create_video_component() - self.edit_component() - - self.video.set_url_field('video_name_1.1.2.mp4', 1) - self.assertEqual(self.video.message('status'), 'No Timed Transcript') - self.video.upload_transcript('uk_transcripts.srt') - self.assertEqual(self.video.message('status'), 'Timed Transcript Uploaded Successfully') - self.save_unit_settings() - self.assertTrue(self.video.is_captions_visible()) - - self.edit_component() - self.assertEqual(self.video.message('status'), 'Timed Transcript Found') - def test_upload_subtitles_w_different_names3(self): """ Scenario: Shortened link: Shortened link to the source does not effect the uploaded