Exemple #1
0
    def test_merge_history_meta_data_real_groups(self):
        test_assignment = mommy.make_recipe(
            'devilry.apps.core.assignment_activeperiod_start')
        group1 = mommy.make('core.AssignmentGroup',
                            parentnode=test_assignment,
                            name='group1')
        group2 = mommy.make('core.AssignmentGroup',
                            parentnode=test_assignment,
                            name='group2')
        group3 = mommy.make('core.AssignmentGroup',
                            parentnode=test_assignment,
                            name='group3')
        group4 = mommy.make('core.AssignmentGroup',
                            parentnode=test_assignment,
                            name='group4')

        AssignmentGroup.merge_groups([group1, group2, group3])
        AssignmentGroup.merge_groups([group1, group4])

        meta_data = AssignmentGroupHistory.objects.get(
            assignment_group__id=group1.id).meta_data
        self.assertEqual(len(meta_data), 2)
        self.assertDictContainsSubset({'groups': ['group1', 'group4']},
                                      meta_data[0])
        self.assertDictContainsSubset(
            {'groups': ['group1', 'group2', 'group3']}, meta_data[1])
    def test_merge_single_assignment_groups(self):
        test_assignment = mommy.make_recipe('devilry.apps.core.assignment_activeperiod_start')
        group1 = mommy.make('core.AssignmentGroup', parentnode=test_assignment, name='group1')
        group2 = mommy.make('core.AssignmentGroup', parentnode=test_assignment, name='group2')

        AssignmentGroup.merge_groups([group1, group2])
        merge_history = AssignmentGroupHistory.objects.get(assignment_group__id=group1.id).merge_history
        self.assertEqual(merge_history['groups'][0]['state']['name'], 'group1')
        self.assertEqual(merge_history['groups'][1]['state']['name'], 'group2')
 def form_valid(self, form):
     try:
         AssignmentGroup.merge_groups(self.__get_groups_from_form(form))
     except ValidationError as e:
         messages.warning(self.request, ugettext_lazy(str(e.message)))
     else:
         messages.success(
             self.request,
             ugettext_lazy("A group with {} has been created!".format(
                 self.__get_merged_candidates_short_name(
                     self.target_group))))
     return super(MergeGroupsView, self).form_valid(form)
 def form_valid(self, form):
     try:
         AssignmentGroup.merge_groups(self.__get_groups_from_form(form))
     except ValidationError as e:
         messages.warning(
             self.request,
             ugettext_lazy(str(e.message)))
     else:
         candidates_short_name = self.__get_merged_candidates_short_name(self.target_group)
         messages.success(
             self.request,
             ugettext_lazy("A group with %(what)s has been created!") % {'what': candidates_short_name}
         )
     return super(MergeGroupsView, self).form_valid(form)
    def test_merge_history_meta_data_real_groups(self):
        test_assignment = mommy.make_recipe('devilry.apps.core.assignment_activeperiod_start')
        group1 = mommy.make('core.AssignmentGroup', parentnode=test_assignment, name='group1')
        group2 = mommy.make('core.AssignmentGroup', parentnode=test_assignment, name='group2')
        group3 = mommy.make('core.AssignmentGroup', parentnode=test_assignment, name='group3')
        group4 = mommy.make('core.AssignmentGroup', parentnode=test_assignment, name='group4')

        AssignmentGroup.merge_groups([group1, group2, group3])
        AssignmentGroup.merge_groups([group1, group4])

        meta_data = AssignmentGroupHistory.objects.get(assignment_group__id=group1.id).meta_data
        self.assertEqual(len(meta_data), 2)
        self.assertDictContainsSubset({
            'groups': ['group1', 'group4']
        }, meta_data[0])
        self.assertDictContainsSubset({
            'groups': ['group1', 'group2', 'group3']
        }, meta_data[1])
Exemple #6
0
    def test_is_deleted_after_merge(self):
        test_assignment = mommy.make_recipe(
            'devilry.apps.core.assignment_activeperiod_start')
        group1 = mommy.make('core.AssignmentGroup',
                            parentnode=test_assignment,
                            name='group1')
        group2 = mommy.make('core.AssignmentGroup',
                            parentnode=test_assignment,
                            name='group2')
        group3 = mommy.make('core.AssignmentGroup',
                            parentnode=test_assignment,
                            name='group3')
        group4 = mommy.make('core.AssignmentGroup',
                            parentnode=test_assignment,
                            name='group4')

        AssignmentGroup.merge_groups([group1, group2])
        historygroup1id = group1.assignmentgrouphistory.id
        AssignmentGroup.merge_groups([group4, group3])
        historygroup4id = group4.assignmentgrouphistory.id
        AssignmentGroup.merge_groups([group1, group4])

        with self.assertRaises(AssignmentGroupHistory.DoesNotExist):
            AssignmentGroupHistory.objects.get(id=historygroup4id)
        self.assertTrue(
            AssignmentGroupHistory.objects.filter(id=historygroup1id).exists())
 def test_examiner_count_filter_after_merge(self):
     testuser = mommy.make(settings.AUTH_USER_MODEL)
     testassignment = mommy.make_recipe('devilry.apps.core.assignment_activeperiod_start')
     group1 = mommy.make('core.AssignmentGroup', parentnode=testassignment)
     group2 = mommy.make('core.AssignmentGroup', parentnode=testassignment)
     mommy.make('core.AssignmentGroup', parentnode=testassignment)
     mommy.make('core.AssignmentGroup', parentnode=testassignment)
     core_mommy.candidate(group=group1)
     core_mommy.candidate(group=group1)
     core_mommy.candidate(group=group2)
     core_mommy.examiner(group=group2)
     core_mommy.examiner(group=group1)
     AssignmentGroup.merge_groups([group1, group2])
     mockresponse = self.mock_http200_getrequest_htmls(
         cradmin_role=testassignment,
         cradmin_instance=self.__mockinstance_with_devilryrole('departmentadmin'),
         requestuser=testuser,
         viewkwargs={
             'filters_string': 'candidatecount-eq-3'
         })
     self.assertEqual(
         1,
         mockresponse.selector.count('.django-cradmin-listbuilder-itemvalue'))
Exemple #8
0
 def test_examiner_count_filter_after_merge(self):
     testuser = mommy.make(settings.AUTH_USER_MODEL)
     testassignment = mommy.make_recipe('devilry.apps.core.assignment_activeperiod_start')
     group1 = mommy.make('core.AssignmentGroup', parentnode=testassignment)
     group2 = mommy.make('core.AssignmentGroup', parentnode=testassignment)
     mommy.make('core.AssignmentGroup', parentnode=testassignment)
     mommy.make('core.AssignmentGroup', parentnode=testassignment)
     core_mommy.candidate(group=group1)
     core_mommy.candidate(group=group1)
     core_mommy.candidate(group=group2)
     core_mommy.examiner(group=group2)
     core_mommy.examiner(group=group1)
     AssignmentGroup.merge_groups([group1, group2])
     mockresponse = self.mock_http200_getrequest_htmls(
         cradmin_role=testassignment,
         cradmin_instance=self.__mockinstance_with_devilryrole('departmentadmin'),
         requestuser=testuser,
         viewkwargs={
             'filters_string': 'candidatecount-3'
         })
     self.assertEqual(
         1,
         mockresponse.selector.count('.django-cradmin-listbuilder-itemvalue'))
    def test_is_deleted_after_merge(self):
        test_assignment = mommy.make_recipe('devilry.apps.core.assignment_activeperiod_start')
        group1 = mommy.make('core.AssignmentGroup', parentnode=test_assignment, name='group1')
        group2 = mommy.make('core.AssignmentGroup', parentnode=test_assignment, name='group2')
        group3 = mommy.make('core.AssignmentGroup', parentnode=test_assignment, name='group3')
        group4 = mommy.make('core.AssignmentGroup', parentnode=test_assignment, name='group4')

        AssignmentGroup.merge_groups([group1, group2])
        historygroup1id = group1.assignmentgrouphistory.id
        AssignmentGroup.merge_groups([group4, group3])
        historygroup4id = group4.assignmentgrouphistory.id
        AssignmentGroup.merge_groups([group1, group4])

        with self.assertRaises(AssignmentGroupHistory.DoesNotExist):
            AssignmentGroupHistory.objects.get(id=historygroup4id)
        self.assertTrue(AssignmentGroupHistory.objects.filter(id=historygroup1id).exists())
    def test_merge_assignmentgroup_multiple_times(self):
        test_assignment = mommy.make_recipe('devilry.apps.core.assignment_activeperiod_start')
        group1 = mommy.make('core.AssignmentGroup', parentnode=test_assignment, name='group1')
        group2 = mommy.make('core.AssignmentGroup', parentnode=test_assignment, name='group2')
        group3 = mommy.make('core.AssignmentGroup', parentnode=test_assignment, name='group3')
        group4 = mommy.make('core.AssignmentGroup', parentnode=test_assignment, name='group4')

        core_mommy.candidate(group=group1)
        core_mommy.candidate(group=group1)
        core_mommy.candidate(group=group2)
        core_mommy.candidate(group=group3)
        core_mommy.candidate(group=group4)
        core_mommy.examiner(group=group1)
        core_mommy.examiner(group=group2)
        core_mommy.examiner(group=group2)
        core_mommy.examiner(group=group3)
        group1_state = group1.get_current_state()
        group2_state = group2.get_current_state()
        group3_state = group3.get_current_state()
        group4_state = group4.get_current_state()

        AssignmentGroup.merge_groups([group1, group3])
        AssignmentGroup.merge_groups([group2, group4])

        group1_merge_history = AssignmentGroupHistory.objects.get(assignment_group__id=group1.id).merge_history
        group2_merge_history = AssignmentGroupHistory.objects.get(assignment_group__id=group2.id).merge_history
        self.assertDictEqual(group1_merge_history['groups'][0]['state'], group1_state)
        self.assertDictEqual(group1_merge_history['groups'][1]['state'], group3_state)
        self.assertDictEqual(group2_merge_history['groups'][0]['state'], group2_state)
        self.assertDictEqual(group2_merge_history['groups'][1]['state'], group4_state)
        group1 = AssignmentGroup.objects.get(id=group1.id)
        group2 = AssignmentGroup.objects.get(id=group2.id)

        # Checking one more level in the Btree
        group1_state = AssignmentGroup.objects.get(id=group1.id).get_current_state()
        group2_state = AssignmentGroup.objects.get(id=group2.id).get_current_state()
        AssignmentGroup.merge_groups([group1, group2])
        group1_merge_history_new = AssignmentGroupHistory.objects.get(assignment_group__id=group1.id).merge_history
        self.assertListEqual(group1_merge_history_new['groups'][0]['groups'], group1_merge_history['groups'])
        self.assertListEqual(group1_merge_history_new['groups'][1]['groups'], group2_merge_history['groups'])
        self.assertDictEqual(group1_merge_history_new['groups'][0]['state'], group1_state)
        self.assertDictEqual(group1_merge_history_new['groups'][1]['state'], group2_state)