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
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'],
|
|
)
|
|
|