You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

201 lines
7.3 KiB

# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.core.urlresolvers import reverse
from django.test import TransactionTestCase
from django.utils.translation import override, force_text
from ..models import Person, Group
from . import BasePeopleTest
class TestBasicPeopleModels(TransactionTestCase):
def test_create_person(self):
"""We can create a person with a name."""
name = 'Tom Test'
person = Person.objects.create(name=name)
self.assertEqual(person.name, name)
self.assertEqual(Person.objects.all()[0], person)
def test_delete_person(self):
"""We can delete a person."""
name = 'Person Delete'
Person.objects.create(name=name)
Person.objects.get(name=name).delete()
self.assertFalse(Person.objects.filter(name=name))
def test_str(self):
name = 'Person Str'
person = Person.objects.create(name=name)
self.assertEqual(force_text(person), name)
def test_absolute_url(self):
slug = 'person-slug'
person = Person.objects.create(slug=slug)
# This isn't a translation test, per se, but let's make sure that we
# have a predictable language prefix, regardless of the tester's locale.
with override('en'):
self.assertEqual(
person.get_absolute_url(),
'/en/people/{0}/'.format(slug)
)
# Now test that it will work when there's no slug too.
person.slug = ''
self.assertEqual(
person.get_absolute_url(),
'/en/people/{0}/'.format(person.pk),
)
def test_auto_slugify(self):
name = 'Melchior Hoffman'
slug = 'melchior-hoffman'
person = Person.objects.create(name=name)
person.save()
self.assertEquals(person.slug, slug)
class TestBasicGroupModel(TransactionTestCase):
def test_create_group(self):
"""We can create a group with a name."""
group = Group.objects.create(name='group_b')
self.assertTrue(group.name, 'group_b')
def test_delete_group(self):
"""We can delete a group."""
name = 'Group Delete'
Group.objects.create(name=name)
group = Group.objects.translated(name=name)
if group:
group[0].delete()
self.assertFalse(Group.objects.translated(name=name))
def test_create_another_group(self):
"""we create a group."""
name = 'Gruppe Neu'
group = Group.objects.create(name=name)
self.assertEqual(group.name, name)
self.assertEqual(Group.objects.all()[0], group)
def test_add_person_to_group(self):
"""We create a person and add her to the created group."""
personname = 'Daniel'
person = Person.objects.create(name=personname)
name = 'Group One'
group = Group.objects.create(name=name)
person.group = group
person.save()
self.assertIn(person, group.person_set.all())
class TestPersonModelTranslation(BasePeopleTest):
def test_person_translatable(self):
person1 = self.reload(self.person1, 'en')
self.assertEqual(
person1.function,
self.data['person1']['en']['function']
)
person1 = self.reload(self.person1, 'de')
self.assertEqual(
person1.safe_translation_getter('function'),
self.data['person1']['de']['function']
)
def test_comment(self):
person1 = self.reload(self.person1, 'en')
self.assertEqual(
person1.comment,
self.data['person1']['en']['description']
)
person1 = self.reload(self.person1, 'de')
self.assertEqual(
person1.comment,
self.data['person1']['de']['description']
)
def test_get_vcard(self):
person1 = self.reload(self.person1, 'en')
# Test with no group
vcard_en = 'BEGIN:VCARD\r\nVERSION:3.0\r\nFN:person1\r\nN:;person1;;;\r\nTITLE:function1\r\nEND:VCARD\r\n' # flake8: noqa
self.assertEqual(
person1.get_vcard(),
vcard_en
)
# Test with a group and other fields populated
group1 = self.reload(self.group1, 'en')
group1.address = '123 Main Street'
group1.city = 'Anytown'
group1.postal_code = '12345'
group1.phone = '+1 (234) 567-8903'
group1.fax = '+1 (234) 567-8904'
group1.website = 'www.groupwebsite.com'
group1.save()
person1.group = group1
person1.email = 'person@org.org'
person1.phone = '+1 (234) 567-8900'
person1.mobile = '+1 (234) 567-8901'
person1.fax = '+1 (234) 567-8902'
person1.website = 'www.website.com'
person1.save()
vcard_en = 'BEGIN:VCARD\r\nVERSION:3.0\r\nADR;TYPE=WORK:;;123 Main Street;Anytown;;12345;\r\nEMAIL:person@org.org\r\nFN:person1\r\nN:;person1;;;\r\nORG:group1\r\nTEL;TYPE=WORK:+1 (234) 567-8900\r\nTEL;TYPE=CELL:+1 (234) 567-8901\r\nTEL;TYPE=FAX:+1 (234) 567-8902\r\nTEL;TYPE=WORK:+1 (234) 567-8903\r\nTEL;TYPE=FAX:+1 (234) 567-8904\r\nTITLE:function1\r\nURL:www.website.com\r\nURL:www.groupwebsite.com\r\nEND:VCARD\r\n' # flake8: noqa
self.assertEqual(
person1.get_vcard(),
vcard_en
)
# Ensure this works for other langs too
person1 = self.reload(self.person1, 'de')
vcard_de = 'BEGIN:VCARD\r\nVERSION:3.0\r\nADR;TYPE=WORK:;;123 Main Street;Anytown;;12345;\r\nEMAIL:person@org.org\r\nFN:person1\r\nN:;person1;;;\r\nORG:Gruppe1\r\nTEL;TYPE=WORK:+1 (234) 567-8900\r\nTEL;TYPE=CELL:+1 (234) 567-8901\r\nTEL;TYPE=FAX:+1 (234) 567-8902\r\nTEL;TYPE=WORK:+1 (234) 567-8903\r\nTEL;TYPE=FAX:+1 (234) 567-8904\r\nTITLE:Funktion1\r\nURL:www.website.com\r\nURL:www.groupwebsite.com\r\nEND:VCARD\r\n' # flake8: noqa
with override('de'):
self.assertEqual(
person1.get_vcard(),
vcard_de
)
class TestGroupModelTranslation(BasePeopleTest):
def test_group_translation(self):
group1 = self.reload(self.group1, 'en')
self.assertEqual(group1.name, self.data['group1']['en']['name'])
group1 = self.reload(self.group1, 'de')
self.assertEqual(group1.name, self.data['group1']['de']['name'])
def test_company_name(self):
group1 = self.reload(self.group1, 'en')
self.assertEqual(
group1.company_name,
self.data['group1']['en']['name'],
)
group1 = self.reload(self.group1, 'de')
self.assertEqual(
group1.company_name,
self.data['group1']['de']['name'],
)
def test_company_description(self):
group1 = self.reload(self.group1, 'en')
self.assertEqual(
group1.company_description,
self.data['group1']['en']['description'],
)
group1 = self.reload(self.group1, 'de')
self.assertEqual(
group1.company_description,
self.data['group1']['de']['description'],
)
def test_str(self):
group1 = self.reload(self.group1, 'en')
self.assertEqual(
force_text(group1),
self.data['group1']['en']['name'],
)
group1 = self.reload(self.group1, 'de')
self.assertEqual(
force_text(group1),
self.data['group1']['de']['name'],
)