mirror of
https://github.com/pretix/pretix.git
synced 2026-08-05 09:57:49 +00:00
Added tests and test configuration for pretix/base
This commit is contained in:
+2
-1
@@ -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
|
||||
|
||||
@@ -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):
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
|
||||
@@ -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):
|
||||
|
||||
@@ -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')
|
||||
|
||||
@@ -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):
|
||||
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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')
|
||||
|
||||
Reference in New Issue
Block a user