def test_group_configuration_not_used(self):
     """
     Test that right data structure will be created if group configuration is not used.
     """
     self._add_user_partitions()
     actual = GroupConfiguration.add_usage_info(self.course, self.store)
     expected = [{
         'id':
         0,
         'name':
         'Name 0',
         'description':
         'Description 0',
         'version':
         1,
         'groups': [
             {
                 'id': 0,
                 'name': 'Group A',
                 'version': 1
             },
             {
                 'id': 1,
                 'name': 'Group B',
                 'version': 1
             },
             {
                 'id': 2,
                 'name': 'Group C',
                 'version': 1
             },
         ],
         'usage': [],
     }]
     self.assertEqual(actual, expected)
    def test_can_get_usage_info_when_special_characters_are_used(self):
        """
        Test if group configurations json updated successfully when special
         characters are being used in content experiment
        """
        self._add_user_partitions(count=1)
        vertical, __ = self._create_content_experiment(cid=0, name_suffix='0', special_characters=u"JOSÉ ANDRÉS")

        actual = GroupConfiguration.get_split_test_partitions_with_usage(self.course, self.store)

        expected = [{
            'id': 0,
            'name': 'Name 0',
            'scheme': 'random',
            'description': 'Description 0',
            'version': UserPartition.VERSION,
            'groups': [
                {'id': 0, 'name': 'Group A', 'version': 1},
                {'id': 1, 'name': 'Group B', 'version': 1},
                {'id': 2, 'name': 'Group C', 'version': 1},
            ],
            'usage': [{
                'url': '/container/{}'.format(vertical.location),
                'label': u"Test Unit 0 / Test Content Experiment 0JOSÉ ANDRÉS",
                'validation': None,
            }],
        }]

        self.assertEqual(actual, expected)
Exemple #3
0
    def test_can_use_one_configuration_in_multiple_experiments(self):
        """
        Test if multiple experiments are present in usage info when they use same
        group configuration.
        """
        self._add_user_partitions()
        self._create_content_experiment(cid=0, name_suffix='0')
        self._create_content_experiment(cid=0, name_suffix='1')

        actual = GroupConfiguration.add_usage_info(self.course, self.store)

        expected = [{
            u'id': 0,
            u'name': u'Name 0',
            u'description': u'Description 0',
            u'version': 1,
            u'groups': [
                {u'id': 0, u'name': u'Group A', u'version': 1},
                {u'id': 1, u'name': u'Group B', u'version': 1},
                {u'id': 2, u'name': u'Group C', u'version': 1},
            ],
            u'usage': [{
                'url': '/unit/i4x://MITx/999/vertical/Test_Unit_0',
                'label': 'Test Unit 0 / Test Content Experiment 0',
            }, {
                'url': '/unit/i4x://MITx/999/vertical/Test_Unit_1',
                'label': 'Test Unit 1 / Test Content Experiment 1',
            }],
        }]
        self.assertEqual(actual, expected)
    def test_can_use_one_configuration_in_multiple_experiments(self):
        """
        Test if multiple experiments are present in usage info when they use same
        group configuration.
        """
        self._add_user_partitions()
        vertical, __ = self._create_content_experiment(cid=0, name_suffix='0')
        vertical1, __ = self._create_content_experiment(cid=0, name_suffix='1')

        actual = GroupConfiguration.add_usage_info(self.course, self.store)

        expected = [{
            'id': 0,
            'name': 'Name 0',
            'description': 'Description 0',
            'version': 1,
            'groups': [
                {'id': 0, 'name': 'Group A', 'version': 1},
                {'id': 1, 'name': 'Group B', 'version': 1},
                {'id': 2, 'name': 'Group C', 'version': 1},
            ],
            'usage': [{
                'url': '/container/{}'.format(vertical.location),
                'label': 'Test Unit 0 / Test Content Experiment 0',
                'validation': None,
            }, {
                'url': '/container/{}'.format(vertical1.location),
                'label': 'Test Unit 1 / Test Content Experiment 1',
                'validation': None,
            }],
        }]
        self.assertEqual(actual, expected)
 def test_content_group_not_used(self):
     """
     Test that right data structure will be created if content group is not used.
     """
     self._add_user_partitions(scheme_id='cohort')
     actual = GroupConfiguration.get_or_create_content_group(self.store, self.course)
     expected = self._get_expected_content_group(usage_for_group=[])
     self.assertEqual(actual, expected)
 def test_update_usage_info_no_message(self, mocked_validation_messages):
     """
     Tests if validation message is not present when updating usage info.
     """
     self._add_user_partitions()
     self._create_content_experiment(cid=0, name_suffix='0')
     mocked_validation_messages.return_value = []
     group_configuration = GroupConfiguration.update_usage_info(self.store, self.course, self.course.user_partitions[0])
     self.assertEqual(group_configuration['usage'][0]['validation'], None)
 def test_update_usage_info_no_message(self, mocked_validation_messages):
     """
     Tests if validation message is not present when updating usage info.
     """
     self._add_user_partitions()
     self._create_content_experiment(cid=0, name_suffix='0')
     mocked_validation_messages.return_value = []
     group_configuration = GroupConfiguration.update_usage_info(
         self.store, self.course, self.course.user_partitions[0])
     self.assertEqual(group_configuration['usage'][0]['validation'], None)
Exemple #8
0
 def test_can_handle_without_parent(self):
     """
     Test if it possible to handle case when split_test has no parent.
     """
     self._add_user_partitions()
     # Create split test without parent.
     ItemFactory.create(category='split_test',
                        user_partition_id=0,
                        display_name='Test Content Experiment')
     self.save_course()
     actual = GroupConfiguration.get_usage_info(self.course, self.store)
     self.assertEqual(actual, {0: []})
    def verify_validation_add_usage_info(self, expected_result, mocked_message, mocked_validation_messages):
        """
        Helper method for testing validation information present after add_usage_info.
        """
        self._add_user_partitions()
        split_test = self._create_content_experiment(cid=0, name_suffix='0')[1]

        validation = StudioValidation(split_test.location)
        validation.add(mocked_message)
        mocked_validation_messages.return_value = validation

        group_configuration = GroupConfiguration.add_usage_info(self.course, self.store)[0]
        self.assertEqual(expected_result.to_json(), group_configuration['usage'][0]['validation'])
 def test_can_handle_without_parent(self):
     """
     Test if it possible to handle case when split_test has no parent.
     """
     self._add_user_partitions()
     # Create split test without parent.
     ItemFactory.create(
         category='split_test',
         user_partition_id=0,
         display_name='Test Content Experiment'
     )
     self.save_course()
     actual = GroupConfiguration.get_usage_info(self.course, self.store)
     self.assertEqual(actual, {0: []})
    def test_can_get_correct_usage_info_for_content_groups(self):
        """
        Test if content group json updated successfully with usage information.
        """
        self._add_user_partitions(count=1, scheme_id='cohort')
        vertical, __ = self._create_problem_with_content_group(cid=0, group_id=1, name_suffix='0')

        actual = GroupConfiguration.get_or_create_content_group(self.store, self.course)

        expected = self._get_expected_content_group(usage_for_group=[
            {
                'url': '/container/{}'.format(vertical.location),
                'label': 'Test Unit 0 / Test Problem 0'
            }
        ])

        self.assertEqual(actual, expected)
    def test_can_handle_without_parent(self):
        """
        Test if it possible to handle case when split_test has no parent.
        """
        self._add_user_partitions()
        # Create split test without parent.
        with modulestore().branch_setting(ModuleStoreEnum.Branch.published_only):
            orphan = modulestore().create_item(
                ModuleStoreEnum.UserID.test,
                self.course.id, 'split_test',
            )
            orphan.user_partition_id = 0
            orphan.display_name = 'Test Content Experiment'
            modulestore().update_item(orphan, ModuleStoreEnum.UserID.test)

        self.save_course()
        actual = GroupConfiguration.get_usage_info(self.course, self.store)
        self.assertEqual(actual, {0: []})
    def test_warning_message_present(self, mocked_validation_messages):
        """
        Tests if validation message is present.
        """
        self._add_user_partitions()
        split_test = self._create_content_experiment(cid=0, name_suffix='0')[1]

        mocked_validation_messages.return_value = [
            ValidationMessage(split_test, u"Validation message",
                              ValidationMessageType.warning)
        ]
        group_configuration = GroupConfiguration.add_usage_info(
            self.course, self.store)[0]
        self.assertEqual(
            group_configuration['usage'][0]['validation'], {
                'message':
                u'This content experiment has issues that affect content visibility.',
                'type': 'warning'
            })
 def test_group_configuration_not_used(self):
     """
     Test that right data structure will be created if group configuration is not used.
     """
     self._add_user_partitions()
     actual = GroupConfiguration.add_usage_info(self.course, self.store)
     expected = [{
         'id': 0,
         'name': 'Name 0',
         'description': 'Description 0',
         'version': 1,
         'groups': [
             {'id': 0, 'name': 'Group A', 'version': 1},
             {'id': 1, 'name': 'Group B', 'version': 1},
             {'id': 2, 'name': 'Group C', 'version': 1},
         ],
         'usage': [],
     }]
     self.assertEqual(actual, expected)
    def test_can_get_correct_usage_info(self):
        """
        Test if group configurations json updated successfully with usage information.
        """
        self._add_user_partitions(count=2)
        vertical, __ = self._create_content_experiment(cid=0, name_suffix='0')
        self._create_content_experiment(name_suffix='1')

        actual = GroupConfiguration.get_split_test_partitions_with_usage(self.course, self.store)

        expected = [{
            'id': 0,
            'name': 'Name 0',
            'scheme': 'random',
            'description': 'Description 0',
            'version': UserPartition.VERSION,
            'groups': [
                {'id': 0, 'name': 'Group A', 'version': 1},
                {'id': 1, 'name': 'Group B', 'version': 1},
                {'id': 2, 'name': 'Group C', 'version': 1},
            ],
            'usage': [{
                'url': '/container/{}'.format(vertical.location),
                'label': 'Test Unit 0 / Test Content Experiment 0',
                'validation': None,
            }],
        }, {
            'id': 1,
            'name': 'Name 1',
            'scheme': 'random',
            'description': 'Description 1',
            'version': UserPartition.VERSION,
            'groups': [
                {'id': 0, 'name': 'Group A', 'version': 1},
                {'id': 1, 'name': 'Group B', 'version': 1},
                {'id': 2, 'name': 'Group C', 'version': 1},
            ],
            'usage': [],
        }]

        self.assertEqual(actual, expected)
    def test_can_get_correct_usage_info(self):
        """
        Test if group configurations json updated successfully with usage information.
        """
        self._add_user_partitions(count=2)
        vertical, __ = self._create_content_experiment(cid=0, name_suffix='0')
        self._create_content_experiment(name_suffix='1')

        actual = GroupConfiguration.add_usage_info(self.course, self.store)

        expected = [{
            'id': 0,
            'name': 'Name 0',
            'description': 'Description 0',
            'version': 1,
            'groups': [
                {'id': 0, 'name': 'Group A', 'version': 1},
                {'id': 1, 'name': 'Group B', 'version': 1},
                {'id': 2, 'name': 'Group C', 'version': 1},
            ],
            'usage': [{
                'url': '/container/{}'.format(vertical.location),
                'label': 'Test Unit 0 / Test Content Experiment 0',
                'validation': None,
            }],
        }, {
            'id': 1,
            'name': 'Name 1',
            'description': 'Description 1',
            'version': 1,
            'groups': [
                {'id': 0, 'name': 'Group A', 'version': 1},
                {'id': 1, 'name': 'Group B', 'version': 1},
                {'id': 2, 'name': 'Group C', 'version': 1},
            ],
            'usage': [],
        }]

        self.assertEqual(actual, expected)
    def test_can_get_correct_usage_info(self):
        """
        Test if group configurations json updated successfully with usage information.
        """
        self._add_user_partitions(count=2)
        self._create_content_experiment(cid=0, name_suffix='0')
        self._create_content_experiment(name_suffix='1')

        actual = GroupConfiguration.add_usage_info(self.course, self.store)

        expected = [{
            'id': 0,
            'name': 'Name 0',
            'description': 'Description 0',
            'version': 1,
            'groups': [
                {'id': 0, 'name': 'Group A', 'version': 1},
                {'id': 1, 'name': 'Group B', 'version': 1},
                {'id': 2, 'name': 'Group C', 'version': 1},
            ],
            'usage': [{
                'url': '/container/i4x://MITx/999/vertical/Test_Unit_0',
                'label': 'Test Unit 0 / Test Content Experiment 0',
                'validation': None,
            }],
        }, {
            'id': 1,
            'name': 'Name 1',
            'description': 'Description 1',
            'version': 1,
            'groups': [
                {'id': 0, 'name': 'Group A', 'version': 1},
                {'id': 1, 'name': 'Group B', 'version': 1},
                {'id': 2, 'name': 'Group C', 'version': 1},
            ],
            'usage': [],
        }]

        self.assertEqual(actual, expected)
    def test_warning_message_present(self, mocked_validation_messages):
        """
        Tests if validation message is present.
        """
        self._add_user_partitions()
        split_test = self._create_content_experiment(cid=0, name_suffix='0')[1]

        mocked_validation_messages.return_value = [
            ValidationMessage(
                split_test,
                u"Validation message",
                ValidationMessageType.warning
            )
        ]
        group_configuration = GroupConfiguration.add_usage_info(self.course, self.store)[0]
        self.assertEqual(
            group_configuration['usage'][0]['validation'],
            {
                'message': u'This content experiment has issues that affect content visibility.',
                'type': 'warning'
            }
        )
Exemple #19
0
    def test_can_get_correct_usage_info(self):
        """
        Test if group configurations json updated successfully with usage information.
        """
        self._add_user_partitions(count=2)
        self._create_content_experiment(cid=0, name_suffix='0')
        self._create_content_experiment(name_suffix='1')

        actual = GroupConfiguration.add_usage_info(self.course, self.store)

        expected = [{
            u'id': 0,
            u'name': u'Name 0',
            u'description': u'Description 0',
            u'version': 1,
            u'groups': [
                {u'id': 0, u'name': u'Group A', u'version': 1},
                {u'id': 1, u'name': u'Group B', u'version': 1},
                {u'id': 2, u'name': u'Group C', u'version': 1},
            ],
            u'usage': [{
                'url': '/unit/i4x://MITx/999/vertical/Test_Unit_0',
                'label': 'Test Unit 0 / Test Content Experiment 0',
            }],
        }, {
            u'id': 1,
            u'name': u'Name 1',
            u'description': u'Description 1',
            u'version': 1,
            u'groups': [
                {u'id': 0, u'name': u'Group A', u'version': 1},
                {u'id': 1, u'name': u'Group B', u'version': 1},
                {u'id': 2, u'name': u'Group C', u'version': 1},
            ],
            u'usage': [],
        }]

        self.assertEqual(actual, expected)
    def test_can_use_one_content_group_in_multiple_problems(self):
        """
        Test if multiple problems are present in usage info when they use same
        content group.
        """
        self._add_user_partitions(scheme_id='cohort')
        vertical, __ = self._create_problem_with_content_group(cid=0, group_id=1, name_suffix='0')
        vertical1, __ = self._create_problem_with_content_group(cid=0, group_id=1, name_suffix='1')

        actual = GroupConfiguration.get_or_create_content_group(self.store, self.course)

        expected = self._get_expected_content_group(usage_for_group=[
            {
                'url': '/container/{}'.format(vertical.location),
                'label': 'Test Unit 0 / Test Problem 0'
            },
            {
                'url': '/container/{}'.format(vertical1.location),
                'label': 'Test Unit 1 / Test Problem 1'
            }
        ])

        self.assertEqual(actual, expected)