Added tests and test configuration for pretix/base

This commit is contained in:
Raphael Michel
2015-08-25 17:18:33 +02:00
parent 077e36e375
commit 8f6b92fbf3
10 changed files with 101 additions and 9 deletions
+2 -1
View File
@@ -1,10 +1,11 @@
[run]
source = pretix
omit = */migrations/*,*/urls.py,*/tests/*,*/testdummy/*,*/admin.py,*/mt940.py
omit = */migrations/*,*/urls.py,*/tests/*,*/testdummy/*,*/admin.py,*/mt940.py,pretix/wsgi.py,pretix/settings.py
[report]
exclude_lines =
pragma: no cover
def __str__
der __repr__
if settings.DEBUG
NOQA
+2 -2
View File
@@ -56,7 +56,7 @@ class LazyI18nString:
def __repr__(self):
return '<LazyI18nString: %s>' % repr(self.data)
def __lt__(self, other):
def __lt__(self, other): # NOQA
return str(self) < str(other)
@@ -209,7 +209,7 @@ class I18nFieldMixin:
return json.dumps({k: v for k, v in value.items() if v}, sort_keys=True)
return value
def get_prep_lookup(self, lookup_type, value):
def get_prep_lookup(self, lookup_type, value): # NOQA
raise TypeError('Lookups on i18n string currently not supported.')
def formfield(self, **kwargs):
+2 -2
View File
@@ -32,7 +32,7 @@ class LocaleMiddleware(BaseLocaleMiddleware):
else:
language = request.event.settings.locale
for lang in request.event.settings.locales:
if lang == firstpart or lang.startswith(firstpart + '-'):
if lang.startswith(firstpart + '-'):
language = lang
break
translation.activate(language)
@@ -107,7 +107,7 @@ def get_language_from_browser(request) -> str:
def get_default_language():
try:
return get_supported_language_variant(settings.LANGUAGE_CODE)
except LookupError:
except LookupError: # NOQA
return settings.LANGUAGE_CODE
+5 -4
View File
@@ -38,10 +38,10 @@ class Versionable(BaseVersionable):
a performance optimization for cases in which we have to handle the Many2Many relations
by hand anyways.
"""
if not self.pk:
if not self.pk: # NOQA
raise ValueError('Instance must be saved before it can be cloned')
if self.version_end_date:
if self.version_end_date: # NOQA
raise ValueError('This is a historical item and can not be cloned.')
if forced_version_date:
@@ -112,7 +112,8 @@ class UserManager(BaseUserManager):
user.save()
return user
def create_superuser(self, identifier, password=None):
def create_superuser(self, identifier, password=None): # NOQA
# Not used in the software but required by Django
if password is None:
raise Exception("You must provide a password")
user = self.model(identifier=identifier, email=identifier)
@@ -287,7 +288,7 @@ class User(AbstractBaseUser, PermissionsMixin):
return self.username
if self.email:
return self.email
return self.identifier
return self.identifier # NOQA
class Organizer(Versionable):
+36
View File
@@ -70,3 +70,39 @@ class LocaleDeterminationTest(TestCase):
response = c.get('/control/login')
language = response['Content-Language']
self.assertEqual(language, self.TEST_LOCALE)
def test_event_allowed(self):
self.event.settings.set('locales', ['de', 'en'])
c = Client()
cookies = c.cookies
cookies[settings.LANGUAGE_COOKIE_NAME] = 'de'
response = c.get('/dummy/dummy/')
language = response['Content-Language']
self.assertEqual(language, 'de')
def test_event_fallback_to_short(self):
self.event.settings.set('locales', ['de'])
c = Client()
cookies = c.cookies
cookies[settings.LANGUAGE_COOKIE_NAME] = 'de-informal'
response = c.get('/dummy/dummy/')
language = response['Content-Language']
self.assertEqual(language, 'de')
def test_event_fallback_to_long(self):
self.event.settings.set('locales', ['de-informal'])
c = Client()
cookies = c.cookies
cookies[settings.LANGUAGE_COOKIE_NAME] = 'de'
response = c.get('/dummy/dummy/')
language = response['Content-Language']
self.assertEqual(language, 'de-informal')
def test_event_not_allowed(self):
self.event.settings.set('locales', ['en'])
c = Client()
cookies = c.cookies
cookies[settings.LANGUAGE_COOKIE_NAME] = 'de'
response = c.get('/dummy/dummy/')
language = response['Content-Language']
self.assertEqual(language, 'en')
+28
View File
@@ -177,6 +177,34 @@ class UserTestCase(TestCase):
u.save()
self.assertEqual(u.identifier, "test@example.com")
def test_name(self):
o = Organizer.objects.create(name='Dummy', slug='dummy')
event = Event.objects.create(
organizer=o, name='Dummy', slug='dummy',
date_from=now(),
)
u = User.objects.create_local_user(event, 'test', 'test')
self.assertEqual(u.get_local_name(), 'test')
u.givenname = "Christopher"
u.familyname = "Nolan"
u.set_password("test")
u.save()
self.assertEqual(u.get_full_name(), 'Nolan, Christopher')
self.assertEqual(u.get_short_name(), 'Christopher')
u.givenname = None
u.save()
self.assertEqual(u.get_full_name(), 'Nolan')
self.assertEqual(u.get_short_name(), 'Nolan')
u.givenname = "Christopher"
u.familyname = None
u.save()
self.assertEqual(u.get_full_name(), 'Christopher')
self.assertEqual(u.get_short_name(), 'Christopher')
u.givenname = None
u.save()
self.assertEqual(u.get_full_name(), 'test')
self.assertEqual(u.get_short_name(), 'test')
class BaseQuotaTestCase(TestCase):
+24
View File
@@ -1,6 +1,8 @@
from datetime import date, datetime, time
from decimal import Decimal
from django.core.files import File
from django.core.files.uploadedfile import SimpleUploadedFile
from django.test import TestCase
from django.utils.timezone import now
@@ -22,6 +24,14 @@ class SettingsTestCase(TestCase):
date_from=now(),
)
def test_organizer_set_explicit(self):
self.organizer.settings.test = 'foo'
self.assertEqual(self.organizer.settings.test, 'foo')
# Reload object
self.organizer = Organizer.objects.get(identity=self.organizer.identity)
self.assertEqual(self.organizer.settings.test, 'foo')
def test_event_set_explicit(self):
self.event.settings.test = 'foo'
self.assertEqual(self.event.settings.test, 'foo')
@@ -153,6 +163,20 @@ class SettingsTestCase(TestCase):
except TypeError:
pass
def test_serialize_file(self):
val = SimpleUploadedFile("sample_invalid_image.jpg", b"file_content", content_type="image/jpeg")
self.event.settings.set('test', val)
self.event.settings._flush()
self.assertIsInstance(self.event.settings.get('test', as_type=File), File)
self.assertTrue(self.event.settings.get('test', as_type=File).name.endswith(val.name))
def test_detect_file_value(self):
val = SimpleUploadedFile("sample_invalid_image.jpg", b"file_content", content_type="image/jpeg")
self.event.settings.set('test', val)
self.event.settings._flush()
self.assertIsInstance(self.event.settings.get('test'), File)
self.assertTrue(self.event.settings.get('test').name.endswith(val.name))
def _test_serialization(self, val, as_type):
self.event.settings.set('test', val)
self.event.settings._flush()
View File
+2
View File
@@ -7,3 +7,5 @@ TEMPLATES[0]['DIRS'].append(os.path.join(TEST_DIR, 'templates'))
INSTALLED_APPS = INSTALLED_APPS + (
'tests.testdummy',
)
MEDIA_ROOT = os.path.join(TEST_DIR, 'media')