diff options
Diffstat (limited to 'ishtar_common/tests.py')
-rw-r--r-- | ishtar_common/tests.py | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/ishtar_common/tests.py b/ishtar_common/tests.py index fe88cea51..b28dde5ec 100644 --- a/ishtar_common/tests.py +++ b/ishtar_common/tests.py @@ -432,6 +432,77 @@ class AccessControlTest(TestCase): self.assertNotIn(admin, ishtar_user.person.person_types.all()) +class UserProfileTest(TestCase): + fixtures = OPERATION_FIXTURES + + def setUp(self): + self.password = 'mypassword' + self.username = "myuser" + self.user = User.objects.create_superuser( + self.username, 'myemail@test.com', self.password) + self.user.set_password(self.password) + self.user.save() + self.client = Client() + self.client.login(username=self.username, password=self.password) + + def test_profile_edit(self): + base_url = '/profile/' + base_profile = self.user.ishtaruser.current_profile + response = self.client.get(base_url) + self.assertEqual(response.status_code, 200) + response = self.client.post( + base_url, {'name': "New name", "current_profile": base_profile.pk}) + self.assertEqual(response.status_code, 302) + base_profile = models.UserProfile.objects.get(pk=base_profile.pk) + self.assertEqual( + base_profile.name, + u"New name" + ) + + self.client.post( + base_url, {'delete_profile': True, 'name': "New name", + "current_profile": base_profile.pk}) + self.assertEqual(response.status_code, 302) + # cannot delete a profile it is the last of his kind + self.assertEqual( + self.user.ishtaruser.person.profiles.count(), + 1 + ) + + self.client.post( + base_url, {'name': "New name", 'duplicate_profile': True, + "current_profile": base_profile.pk}) + self.assertEqual(response.status_code, 302) + # duplicate + self.assertEqual( + self.user.ishtaruser.person.profiles.count(), + 2 + ) + # new current profile is the duplicated + new_profile = self.user.ishtaruser.current_profile + base_profile = models.UserProfile.objects.get(pk=base_profile.pk) + self.assertNotEqual(base_profile.pk, + new_profile.pk) + self.assertNotEqual(base_profile.name, + new_profile.name) + + response = self.client.post( + base_url, {'name': "New name", "current_profile": new_profile.pk}) + self.assertIn( + "errorlist nonfield", response.content, + msg="An error should be isplayed as this name is already taken" + ) + + # the deletion can now occurs + self.client.post( + base_url, {'delete_profile': True, + "current_profile": base_profile.pk}) + self.assertEqual( + self.user.ishtaruser.person.profiles.count(), + 1 + ) + + class AdminGenTypeTest(TestCase): fixtures = OPERATION_FIXTURES gen_models = [ |