def test_subproject_cant_be_subproject(self):
        user = fixture.get(User)
        project = fixture.get(Project, users=[user])
        another_project = fixture.get(Project, users=[user])
        subproject = fixture.get(Project, users=[user])
        relation = fixture.get(
            ProjectRelationship, parent=project, child=subproject,
        )

        form = ProjectRelationshipForm(
            {'child': subproject.pk},
            project=project,
            user=user,
        )
        self.assertFalse(form.is_valid())
        self.assertRegex(
            form.errors['child'][0],
            'Select a valid choice',
        )

        form = ProjectRelationshipForm(
            {'child': subproject.pk},
            project=another_project,
            user=user,
        )
        self.assertFalse(form.is_valid())
        self.assertRegex(
            form.errors['child'][0],
            'Select a valid choice',
        )
    def test_change_alias(self):
        subproject_2 = fixture.get(Project, users=[self.user])
        self.project.add_subproject(subproject_2, 'another-subproject')

        relation = subproject_2.superprojects.first()

        # Change alias to an existing alias
        form = ProjectRelationshipForm(
            {
                'child': subproject_2.id,
                'alias': 'subproject'
            },
            instance=relation,
            project=self.project,
            user=self.user,
        )
        self.assertFalse(form.is_valid())
        error_msg = 'A subproject with this alias already exists'
        self.assertDictEqual(form.errors, {'alias': [error_msg]})

        # Change alias to a new alias
        form = ProjectRelationshipForm(
            {
                'child': subproject_2.id,
                'alias': 'other-subproject'
            },
            instance=relation,
            project=self.project,
            user=self.user,
        )
        self.assertTrue(form.is_valid())
        form.save()
        relation.refresh_from_db()
        self.assertEqual(relation.alias, 'other-subproject')
Esempio n. 3
0
    def test_exclude_self_project_as_subproject(self):
        user = fixture.get(User)
        project = fixture.get(Project, users=[user])

        form = ProjectRelationshipForm({'child': project.pk},
                                       project=project,
                                       user=user)
        self.assertFalse(form.is_valid())
        self.assertNotIn(
            project.id,
            [proj_id for (proj_id, __) in form.fields['child'].choices])
 def test_change_alias_to_same_alias(self):
     form = ProjectRelationshipForm(
         {
             'child': self.subproject.id,
             'alias': 'subproject'
         },
         instance=self.relation,
         project=self.project,
         user=self.user,
     )
     self.assertTrue(form.is_valid())
     form.save()
     self.relation.refresh_from_db()
     self.assertEqual(self.relation.alias, 'subproject')
    def test_exclude_self_project_as_subproject(self):
        user = fixture.get(User)
        project = fixture.get(Project, users=[user])

        form = ProjectRelationshipForm(
            {'child': project.pk},
            project=project,
            user=user
        )
        self.assertFalse(form.is_valid())
        self.assertNotIn(
            project.id,
            [proj_id for (proj_id, __) in form.fields['child'].choices]
        )
Esempio n. 6
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])
 def test_alias_already_exists_for_a_project(self):
     user = fixture.get(User)
     project = fixture.get(Project, users=[user])
     subproject = fixture.get(Project, users=[user])
     subproject_2 = fixture.get(Project, users=[user])
     relation = fixture.get(
          ProjectRelationship, parent=project, child=subproject,
          alias='subproject'
     )
     form = ProjectRelationshipForm(
         {
             'child': subproject_2.id,
             'alias': 'subproject'
         },
         project=project,
         user=user,
     )
     self.assertFalse(form.is_valid())
     error_msg = 'A subproject with this alias already exists'
     self.assertDictEqual(form.errors, {'alias': [error_msg]})
 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]
     )