From e8ae3d1b4a652ea69ab5976da4d6bef4e9a178f7 Mon Sep 17 00:00:00 2001 From: polesye Date: Fri, 1 Aug 2014 14:53:32 +0300 Subject: [PATCH] Fix Group Configuration Page after rebase. --- cms/djangoapps/contentstore/views/course.py | 2 +- .../js/views/pages/group_configurations.js | 4 +-- common/test/acceptance/pages/studio/utils.py | 6 ++-- .../tests/test_studio_split_test.py | 36 +++++++++++-------- 4 files changed, 27 insertions(+), 21 deletions(-) diff --git a/cms/djangoapps/contentstore/views/course.py b/cms/djangoapps/contentstore/views/course.py index d1e204e191..f82ccb7d43 100644 --- a/cms/djangoapps/contentstore/views/course.py +++ b/cms/djangoapps/contentstore/views/course.py @@ -1136,7 +1136,7 @@ class GroupConfiguration(object): continue unit_url = reverse_usage_url( - 'unit_handler', + 'container_handler', course.location.course_key.make_usage_key(unit.location.block_type, unit.location.name) ) usage_info[split_test.user_partition_id].append({ diff --git a/cms/static/js/views/pages/group_configurations.js b/cms/static/js/views/pages/group_configurations.js index 7965f305ec..2bce4afe6d 100644 --- a/cms/static/js/views/pages/group_configurations.js +++ b/cms/static/js/views/pages/group_configurations.js @@ -14,9 +14,9 @@ function ($, _, gettext, BasePage, GroupConfigurationsList) { renderPage: function() { var hash = this.getLocationHash(); - this.$el.append(this.listView.render().el); + this.$('.content-primary').append(this.listView.render().el); this.addButtonActions(); - this.addWindowActions(); + this.addWindowActions(); if (hash) { // Strip leading '#' to get id string to match this.expandConfiguration(hash.replace('#', '')); diff --git a/common/test/acceptance/pages/studio/utils.py b/common/test/acceptance/pages/studio/utils.py index 7bb43b2b10..aaa21b1126 100644 --- a/common/test/acceptance/pages/studio/utils.py +++ b/common/test/acceptance/pages/studio/utils.py @@ -27,14 +27,14 @@ def click_css(page, css, source_index=0, require_notification=True): # Click on the element in the browser page.q(css=css).filter(lambda el: _is_visible(el)).nth(source_index).click() + if require_notification: + wait_for_notification(page) + # Some buttons trigger ajax posts # (e.g. .add-missing-groups-button as configured in split_test_author_view.js) # so after you click anything wait for the ajax call to finish page.wait_for_ajax() - if require_notification: - wait_for_notification(page) - def wait_for_notification(page): """ diff --git a/common/test/acceptance/tests/test_studio_split_test.py b/common/test/acceptance/tests/test_studio_split_test.py index b25ee8087d..3c6dd008da 100644 --- a/common/test/acceptance/tests/test_studio_split_test.py +++ b/common/test/acceptance/tests/test_studio_split_test.py @@ -13,11 +13,10 @@ from bok_choy.promise import Promise, EmptyPromise from ..fixtures.course import XBlockFixtureDesc from ..pages.studio.component_editor import ComponentEditorView -from ..pages.studio.overview import CourseOutlinePage +from ..pages.studio.overview import CourseOutlinePage, CourseOutlineUnit from ..pages.studio.settings_advanced import AdvancedSettingsPage from ..pages.studio.settings_group_configurations import GroupConfigurationsPage from ..pages.studio.utils import add_advanced_component -from ..pages.studio.unit import UnitPage from ..pages.xblock.utils import wait_for_xblock_initialization from .base_studio_test import StudioCourseTest @@ -45,7 +44,7 @@ class SplitTestMixin(object): def check_xblock_names(expected_groups, actual_blocks): self.assertEqual(len(expected_groups), len(actual_blocks)) for idx, expected in enumerate(expected_groups): - self.assertEqual('Expand or Collapse\n{}'.format(expected), actual_blocks[idx].name) + self.assertEqual(expected, actual_blocks[idx].name) check_xblock_names(active_groups, container.active_xblocks) check_xblock_names(inactive_groups, container.inactive_xblocks) @@ -65,22 +64,29 @@ class SplitTestMixin(object): Promise(missing_groups_button_not_present, "Add missing groups button should not be showing.").fulfill() + @attr('shard_1') -class SplitTest(ContainerBase): +class SplitTest(ContainerBase, SplitTestMixin): """ Tests for creating and editing split test instances in Studio. """ __test__ = True - def populate_course_fixture(self, course_fixture): - course_fixture.add_advanced_settings( - { - u"advanced_modules": {"value": ["split_test"]}, - u"user_partitions": {"value": [ + def setUp(self): + super(SplitTest, self).setUp() + # This line should be called once courseFixture is installed + self.course_fixture._update_xblock(self.course_fixture._course_location, { + "metadata": { + u"user_partitions": [ UserPartition(0, 'Configuration alpha,beta', 'first', [Group("0", 'alpha'), Group("1", 'beta')]).to_json(), UserPartition(1, 'Configuration 0,1,2', 'second', [Group("0", 'Group 0'), Group("1", 'Group 1'), Group("2", 'Group 2')]).to_json() - ]} - } + ], + }, + }) + + def populate_course_fixture(self, course_fixture): + course_fixture.add_advanced_settings( + {u"advanced_modules": {"value": ["split_test"]}} ) course_fixture.add_children( @@ -442,9 +448,9 @@ class GroupConfigurationsTest(ContainerBase, SplitTestMixin): # Save the configuration config.save() - unit = self.go_to_unit_page(make_draft=True) + unit = self.go_to_unit_page() add_advanced_component(unit, 0, 'split_test') - container = self.go_to_container_page() + container = self.go_to_nested_container_page() container.edit() component_editor = ComponentEditorView(self.browser, container.locator) component_editor.set_select_value_and_save('Group Configuration', 'New Group Configuration Name') @@ -461,7 +467,7 @@ class GroupConfigurationsTest(ContainerBase, SplitTestMixin): # Save the configuration config.save() - container = self.go_to_container_page() + container = self.go_to_nested_container_page() container.edit() component_editor = ComponentEditorView(self.browser, container.locator) self.assertEqual( @@ -646,7 +652,7 @@ class GroupConfigurationsTest(ContainerBase, SplitTestMixin): vertical.locator, XBlockFixtureDesc('split_test', 'Test Content Experiment', metadata={'user_partition_id': 0}) ) - unit = UnitPage(self.browser, vertical.locator) + unit = CourseOutlineUnit(self.browser, vertical.locator) # Go to the Group Configuration Page and click unit anchor self.page.visit()