class DeleteMotion(TestCase): """ Tests deleting motions. """ def setUp(self): self.client = APIClient() self.client.login(username="******", password="******") self.admin = get_user_model().objects.get(username="******") self.motion = Motion( title="test_title_acle3fa93l11lwlkcc31", text="test_text_f390sjfyycj29ss56sro", ) self.motion.save() def test_simple_delete(self): response = self.client.delete( reverse("motion-detail", args=[self.motion.pk])) self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT) motions = Motion.objects.count() self.assertEqual(motions, 0) def make_admin_delegate(self): self.admin.groups.remove(GROUP_ADMIN_PK) self.admin.groups.add(GROUP_DELEGATE_PK) inform_changed_data(self.admin) def put_motion_in_complex_workflow(self): workflow = Workflow.objects.get(name="Complex Workflow") self.motion.reset_state(workflow=workflow) self.motion.save() def test_delete_foreign_motion_as_delegate(self): self.make_admin_delegate() self.put_motion_in_complex_workflow() response = self.client.delete( reverse("motion-detail", args=[self.motion.pk])) self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) def test_delete_own_motion_as_delegate(self): self.make_admin_delegate() self.put_motion_in_complex_workflow() Submitter.objects.add(self.admin, self.motion) response = self.client.delete( reverse("motion-detail", args=[self.motion.pk])) self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT) motions = Motion.objects.count() self.assertEqual(motions, 0) def test_delete_with_two_change_recommendations(self): self.cr1 = MotionChangeRecommendation.objects.create( motion=self.motion, internal=False, line_from=1, line_to=1) self.cr2 = MotionChangeRecommendation.objects.create( motion=self.motion, internal=False, line_from=2, line_to=2) response = self.client.delete( reverse("motion-detail", args=[self.motion.pk])) self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT) motions = Motion.objects.count() self.assertEqual(motions, 0)
class DeleteMotion(TestCase): """ Tests deleting motions. """ def setUp(self): self.client = APIClient() self.client.login(username='******', password='******') self.admin = get_user_model().objects.get(username='******') self.motion = Motion(title='test_title_acle3fa93l11lwlkcc31', text='test_text_f390sjfyycj29ss56sro') self.motion.save() def test_simple_delete(self): response = self.client.delete( reverse('motion-detail', args=[self.motion.pk])) self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT) motions = Motion.objects.count() self.assertEqual(motions, 0) def make_admin_delegate(self): group_staff = self.admin.groups.get(name='Staff') group_delegates = Group.objects.get(name='Delegates') self.admin.groups.remove(group_staff) self.admin.groups.add(group_delegates) CollectionElement.from_instance(self.admin) def put_motion_in_complex_workflow(self): workflow = Workflow.objects.get(name='Complex Workflow') self.motion.reset_state(workflow=workflow) self.motion.save() def test_delete_foreign_motion_as_delegate(self): self.make_admin_delegate() self.put_motion_in_complex_workflow() response = self.client.delete( reverse('motion-detail', args=[self.motion.pk])) self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) def test_delete_own_motion_as_delegate(self): self.make_admin_delegate() self.put_motion_in_complex_workflow() self.motion.submitters.add(self.admin) response = self.client.delete( reverse('motion-detail', args=[self.motion.pk])) self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT) motions = Motion.objects.count() self.assertEqual(motions, 0)
class DeleteWorkflow(TestCase): """ Tests the deletion of workflows. """ def setUp(self): self.client = APIClient() self.client.login(username="******", password="******") self.workflow = Workflow.objects.first() def test_simple_delete(self): response = self.client.delete( reverse("workflow-detail", args=[self.workflow.pk]) ) self.assertEqual(response.status_code, status.HTTP_204_NO_CONTENT) self.assertEqual(Workflow.objects.count(), 1) # Just the other default one def test_delete_with_assigned_motions(self): self.motion = Motion( title="test_title_chee7ahCha6bingaew4e", text="test_text_birah1theL9ooseeFaip", ) self.motion.reset_state(self.workflow) self.motion.save() response = self.client.delete( reverse("workflow-detail", args=[self.workflow.pk]) ) self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) self.assertEqual(Workflow.objects.count(), 2) def test_delete_last_workflow(self): self.workflow.delete() other_workflow_pk = Workflow.objects.get().pk response = self.client.delete( reverse("workflow-detail", args=[other_workflow_pk]) ) self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST) self.assertEqual(Workflow.objects.count(), 1) # Just the other default one