#!/usr/bin/env python # -*- coding: utf-8 -*- """ openslides.person_api.tests ~~~~~~~~~~~~~~~~~~~~~~~ Unit test for the person api. :copyright: 2011 - 2013 by OpenSlides team, see AUTHORS. :license: GNU GPL, see LICENSE for more details. """ from django.test.client import Client from django.db.models.query import EmptyQuerySet from django.contrib.auth.models import AnonymousUser from openslides.utils.test import TestCase from openslides.utils.person.api import get_person from .models import TestPerson, TestModel class PersonTest(TestCase): def setUp(self): self.person1 = TestPerson.objects.create(name='test1') def test_update_of_person_field(self): self.assertEqual(self.person1.person_id, 'test:1') # save person field test_object = TestModel.objects.create(person=self.person1) self.assertEqual(test_object.person, self.person1) # update person field test_object.save() self.assertEqual(TestModel.objects.get(pk=test_object.pk).person, self.person1) def test_save_anonymous_user_in_person_field(self): with self.assertRaisesRegexp( AttributeError, 'An AnonymousUser can not be saved into the database.'): TestModel.objects.create(person=AnonymousUser()) def test_save_unsupported_object_in_person_field(self): with self.assertRaisesRegexp( AttributeError, 'You can not save \'\' into a person field.'): TestModel.objects.create(person=5) def test_get_absolute_url_with_deleted_person(self): person2 = TestPerson.objects.create(name='test2') self.assertEqual(person2.get_absolute_url(), 'absolute_url_of_test_person') person_id = person2.person_id self.assertEqual(get_person(person_id).get_absolute_url(), 'absolute_url_of_test_person') person2.delete() with self.assertRaisesRegexp(ValueError, 'This person object has no url.'): get_person(person_id).get_absolute_url()