コード例 #1
0
 def test_adding_subproject_fails_when_user_is_not_admin(self):
     user = fixture.get(User)
     project = fixture.get(Project, slug='mainproject')
     project.users.add(user)
     subproject = fixture.get(Project, slug='subproject')
     self.assertQuerysetEqual(
         Project.objects.for_admin_user(user),
         [project],
         transform=lambda n: n,
         ordered=False,
     )
     form = ProjectRelationshipForm(
         {'child': subproject.pk},
         project=project,
         user=user,
     )
     form.full_clean()
     self.assertEqual(len(form.errors['child']), 1)
     self.assertRegex(
         form.errors['child'][0],
         r'Select a valid choice.',
     )
     self.assertEqual(
         [proj_id for (proj_id, _) in form.fields['child'].choices],
         [''],
     )
コード例 #2
0
 def test_subproject_form_cant_create_sub_sub_project(self):
     user = fixture.get(User)
     project = fixture.get(Project, users=[user])
     subproject = fixture.get(Project, users=[user])
     subsubproject = fixture.get(Project, users=[user])
     relation = fixture.get(
         ProjectRelationship, parent=project, child=subproject
     )
     self.assertQuerysetEqual(
         Project.objects.for_admin_user(user),
         [project, subproject, subsubproject],
         transform=lambda n: n,
     )
     form = ProjectRelationshipForm(
         {'child': subsubproject.pk},
         project=subproject,
         user=user
     )
     # The subsubproject is valid here, as far as the child check is
     # concerned, but the parent check should fail.
     self.assertEqual(
         [proj_id for (proj_id, __) in form.fields['child'].choices],
         ['', subsubproject.pk],
     )
     form.full_clean()
     self.assertEqual(len(form.errors['parent']), 1)
     self.assertRegexpMatches(
         form.errors['parent'][0],
         r'Subproject nesting is not supported'
     )
コード例 #3
0
 def test_subproject_form_cant_create_sub_sub_project(self):
     user = fixture.get(User)
     project = fixture.get(Project, users=[user])
     subproject = fixture.get(Project, users=[user])
     subsubproject = fixture.get(Project, users=[user])
     relation = fixture.get(
         ProjectRelationship, parent=project, child=subproject,
     )
     self.assertQuerysetEqual(
         Project.objects.for_admin_user(user),
         [project, subproject, subsubproject],
         transform=lambda n: n,
         ordered=False,
     )
     form = ProjectRelationshipForm(
         {'child': subsubproject.pk},
         project=subproject,
         user=user,
     )
     # The subsubproject is valid here, as far as the child check is
     # concerned, but the parent check should fail.
     self.assertEqual(
         [proj_id for (proj_id, _) in form.fields['child'].choices],
         ['', subsubproject.pk],
     )
     form.full_clean()
     self.assertEqual(len(form.errors['parent']), 1)
     self.assertRegex(
         form.errors['parent'][0],
         r'Subproject nesting is not supported',
     )
コード例 #4
0
 def test_empty_child(self):
     user = fixture.get(User)
     project = fixture.get(Project, slug='mainproject')
     form = ProjectRelationshipForm({}, project=project, user=user)
     form.full_clean()
     self.assertEqual(len(form.errors['child']), 1)
     self.assertRegexpMatches(form.errors['child'][0],
                              r'This field is required.')
コード例 #5
0
 def test_nonexistent_child(self):
     user = fixture.get(User)
     project = fixture.get(Project, slug='mainproject')
     self.assertFalse(Project.objects.filter(pk=9999).exists())
     form = ProjectRelationshipForm({'child': 9999},
                                    project=project,
                                    user=user)
     form.full_clean()
     self.assertEqual(len(form.errors['child']), 1)
     self.assertRegexpMatches(form.errors['child'][0],
                              r'Select a valid choice.')
コード例 #6
0
 def test_empty_child(self):
     user = fixture.get(User)
     project = fixture.get(Project, slug='mainproject')
     form = ProjectRelationshipForm(
         {},
         project=project,
         user=user
     )
     form.full_clean()
     self.assertEqual(len(form.errors['child']), 1)
     self.assertRegexpMatches(
         form.errors['child'][0],
         r'This field is required.'
     )
コード例 #7
0
 def test_nonexistent_child(self):
     user = fixture.get(User)
     project = fixture.get(Project, slug='mainproject')
     self.assertFalse(Project.objects.filter(pk=9999).exists())
     form = ProjectRelationshipForm(
         {'child': 9999},
         project=project,
         user=user
     )
     form.full_clean()
     self.assertEqual(len(form.errors['child']), 1)
     self.assertRegexpMatches(
         form.errors['child'][0],
         r'Select a valid choice.'
     )
コード例 #8
0
 def test_adding_subproject_passes_when_user_is_admin(self):
     user = fixture.get(User)
     project = fixture.get(Project, slug='mainproject')
     project.users.add(user)
     subproject = fixture.get(Project, slug='subproject')
     subproject.users.add(user)
     self.assertQuerysetEqual(
         Project.objects.for_admin_user(user),
         [project, subproject],
         transform=lambda n: n,
     )
     form = ProjectRelationshipForm({'child': subproject.pk},
                                    project=project,
                                    user=user)
     form.full_clean()
     self.assertTrue(form.is_valid())
     form.save()
     self.assertEqual([r.child for r in project.subprojects.all()],
                      [subproject])
コード例 #9
0
 def test_adding_subproject_fails_when_user_is_not_admin(self):
     user = fixture.get(User)
     project = fixture.get(Project, slug='mainproject')
     project.users.add(user)
     subproject = fixture.get(Project, slug='subproject')
     self.assertQuerysetEqual(
         Project.objects.for_admin_user(user),
         [project],
         transform=lambda n: n,
     )
     form = ProjectRelationshipForm(
         {'child': subproject.pk},
         project=project,
         user=user
     )
     form.full_clean()
     self.assertEqual(len(form.errors['child']), 1)
     self.assertRegexpMatches(
         form.errors['child'][0],
         r'Select a valid choice.'
     )
コード例 #10
0
 def test_adding_subproject_passes_when_user_is_admin(self):
     user = fixture.get(User)
     project = fixture.get(Project, slug='mainproject')
     project.users.add(user)
     subproject = fixture.get(Project, slug='subproject')
     subproject.users.add(user)
     self.assertQuerysetEqual(
         Project.objects.for_admin_user(user),
         [project, subproject],
         transform=lambda n: n,
     )
     form = ProjectRelationshipForm(
         {'child': subproject.pk},
         project=project,
         user=user
     )
     form.full_clean()
     self.assertTrue(form.is_valid())
     form.save()
     self.assertEqual(
         [r.child for r in project.subprojects.all()],
         [subproject]
     )