forked from CGM_Public/pretix_original
Integrate hierarkey package (#460)
This commit is contained in:
@@ -1,15 +1,9 @@
|
||||
from datetime import date, datetime, time
|
||||
from decimal import Decimal
|
||||
|
||||
from django.core.files import File
|
||||
from django.core.files.storage import default_storage
|
||||
from django.core.files.uploadedfile import SimpleUploadedFile
|
||||
from django.test import TestCase
|
||||
from django.utils.timezone import now
|
||||
from i18nfield.strings import LazyI18nString
|
||||
|
||||
from pretix.base import settings
|
||||
from pretix.base.models import Event, Organizer, User
|
||||
from pretix.base.models import Event, Organizer
|
||||
from pretix.base.settings import SettingsSandbox
|
||||
from pretix.control.forms.global_settings import GlobalSettingsObject
|
||||
|
||||
@@ -21,243 +15,24 @@ class SettingsTestCase(TestCase):
|
||||
'type': str
|
||||
}
|
||||
self.global_settings = GlobalSettingsObject()
|
||||
self.global_settings.settings._flush()
|
||||
self.global_settings.settings.flush()
|
||||
self.organizer = Organizer.objects.create(name='Dummy', slug='dummy')
|
||||
self.organizer.settings._flush()
|
||||
self.organizer.settings.flush()
|
||||
self.event = Event.objects.create(
|
||||
organizer=self.organizer, name='Dummy', slug='dummy',
|
||||
date_from=now(),
|
||||
)
|
||||
self.event.settings._flush()
|
||||
|
||||
def test_global_set_explicit(self):
|
||||
self.global_settings.settings.test = 'foo'
|
||||
self.assertEqual(self.global_settings.settings.test, 'foo')
|
||||
|
||||
# Reload object
|
||||
self.global_settings = GlobalSettingsObject()
|
||||
self.assertEqual(self.global_settings.settings.test, 'foo')
|
||||
|
||||
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(id=self.organizer.id)
|
||||
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')
|
||||
|
||||
# Reload object
|
||||
self.event = Event.objects.get(id=self.event.id)
|
||||
self.assertEqual(self.event.settings.test, 'foo')
|
||||
|
||||
def test_event_set_twice(self):
|
||||
self.event.settings.test = 'bar'
|
||||
self.event.settings.test = 'foo'
|
||||
self.assertEqual(self.event.settings.test, 'foo')
|
||||
|
||||
# Reload object
|
||||
self.event = Event.objects.get(id=self.event.id)
|
||||
self.assertEqual(self.event.settings.test, 'foo')
|
||||
|
||||
def test_organizer_set_on_global(self):
|
||||
self.global_settings.settings.test = 'foo'
|
||||
self.assertEqual(self.global_settings.settings.test, 'foo')
|
||||
self.assertEqual(self.organizer.settings.test, 'foo')
|
||||
|
||||
# Reload object
|
||||
self.global_settings = GlobalSettingsObject()
|
||||
self.assertEqual(self.global_settings.settings.test, 'foo')
|
||||
self.assertEqual(self.organizer.settings.test, 'foo')
|
||||
|
||||
def test_event_set_on_global(self):
|
||||
self.global_settings.settings.test = 'foo'
|
||||
self.assertEqual(self.global_settings.settings.test, 'foo')
|
||||
self.assertEqual(self.event.settings.test, 'foo')
|
||||
|
||||
# Reload object
|
||||
self.global_settings = GlobalSettingsObject()
|
||||
self.assertEqual(self.global_settings.settings.test, 'foo')
|
||||
self.assertEqual(self.event.settings.test, 'foo')
|
||||
|
||||
def test_event_set_on_organizer(self):
|
||||
self.organizer.settings.test = 'foo'
|
||||
self.assertEqual(self.organizer.settings.test, 'foo')
|
||||
self.assertEqual(self.event.settings.test, 'foo')
|
||||
|
||||
# Reload object
|
||||
self.organizer = Organizer.objects.get(id=self.organizer.id)
|
||||
self.assertEqual(self.organizer.settings.test, 'foo')
|
||||
self.assertEqual(self.event.settings.test, 'foo')
|
||||
|
||||
def test_event_override_organizer(self):
|
||||
self.organizer.settings.test = 'foo'
|
||||
self.event.settings.test = 'bar'
|
||||
self.assertEqual(self.organizer.settings.test, 'foo')
|
||||
self.assertEqual(self.event.settings.test, 'bar')
|
||||
|
||||
# Reload object
|
||||
self.organizer = Organizer.objects.get(id=self.organizer.id)
|
||||
self.event = Event.objects.get(id=self.event.id)
|
||||
self.assertEqual(self.organizer.settings.test, 'foo')
|
||||
self.assertEqual(self.event.settings.test, 'bar')
|
||||
|
||||
def test_event_override_global(self):
|
||||
self.global_settings.settings.test = 'foo'
|
||||
self.event.settings.test = 'bar'
|
||||
self.assertEqual(self.global_settings.settings.test, 'foo')
|
||||
self.assertEqual(self.event.settings.test, 'bar')
|
||||
|
||||
# Reload object
|
||||
self.global_settings = GlobalSettingsObject()
|
||||
self.event = Event.objects.get(id=self.event.id)
|
||||
self.assertEqual(self.global_settings.settings.test, 'foo')
|
||||
self.assertEqual(self.event.settings.test, 'bar')
|
||||
|
||||
def test_default(self):
|
||||
self.assertEqual(self.global_settings.settings.test_default, 'def')
|
||||
self.assertEqual(self.organizer.settings.test_default, 'def')
|
||||
self.assertEqual(self.event.settings.test_default, 'def')
|
||||
self.assertEqual(self.event.settings.get('nonexistant', default='abc'), 'abc')
|
||||
|
||||
def test_default_typing(self):
|
||||
self.assertIs(type(self.event.settings.get('nonexistant', as_type=Decimal, default=0)), Decimal)
|
||||
|
||||
def test_item_access(self):
|
||||
self.event.settings['foo'] = 'abc'
|
||||
self.assertEqual(self.event.settings['foo'], 'abc')
|
||||
del self.event.settings['foo']
|
||||
self.assertIsNone(self.event.settings['foo'])
|
||||
|
||||
def test_delete(self):
|
||||
self.organizer.settings.test = 'foo'
|
||||
self.event.settings.test = 'bar'
|
||||
self.assertEqual(self.organizer.settings.test, 'foo')
|
||||
self.assertEqual(self.event.settings.test, 'bar')
|
||||
|
||||
del self.event.settings.test
|
||||
self.assertEqual(self.event.settings.test, 'foo')
|
||||
|
||||
self.event = Event.objects.get(id=self.event.id)
|
||||
self.assertEqual(self.event.settings.test, 'foo')
|
||||
|
||||
del self.organizer.settings.test
|
||||
self.assertIsNone(self.organizer.settings.test)
|
||||
|
||||
self.organizer = Organizer.objects.get(id=self.organizer.id)
|
||||
self.assertIsNone(self.organizer.settings.test)
|
||||
|
||||
def test_serialize_str(self):
|
||||
self._test_serialization('ABC', as_type=str)
|
||||
|
||||
def test_serialize_float(self):
|
||||
self._test_serialization(2.3, float)
|
||||
|
||||
def test_serialize_int(self):
|
||||
self._test_serialization(2, int)
|
||||
|
||||
def test_serialize_datetime(self):
|
||||
self._test_serialization(now(), datetime)
|
||||
|
||||
def test_serialize_time(self):
|
||||
self._test_serialization(now().time(), time)
|
||||
|
||||
def test_serialize_date(self):
|
||||
self._test_serialization(now().date(), date)
|
||||
|
||||
def test_serialize_decimal(self):
|
||||
self._test_serialization(Decimal('2.3'), Decimal)
|
||||
|
||||
def test_serialize_dict(self):
|
||||
self._test_serialization({'a': 'b', 'c': 'd'}, dict)
|
||||
|
||||
def test_serialize_list(self):
|
||||
self._test_serialization([1, 2, 'a'], list)
|
||||
|
||||
def test_serialize_lazyi18nstring(self):
|
||||
self._test_serialization(LazyI18nString({'de': 'Hallo', 'en': 'Hello'}), LazyI18nString)
|
||||
|
||||
def test_serialize_bool(self):
|
||||
self._test_serialization(True, bool)
|
||||
self._test_serialization(False, bool)
|
||||
|
||||
def test_serialize_bool_implicit(self):
|
||||
self.event.settings.set('test', True)
|
||||
self.event.settings._flush()
|
||||
self.assertIs(self.event.settings.get('test', as_type=None), True)
|
||||
self.event.settings.set('test', False)
|
||||
self.event.settings._flush()
|
||||
self.assertIs(self.event.settings.get('test', as_type=None), False)
|
||||
|
||||
def test_serialize_versionable(self):
|
||||
self._test_serialization(self.event, Event)
|
||||
|
||||
def test_serialize_model(self):
|
||||
self._test_serialization(User.objects.create_user('dummy@dummy.dummy', 'dummy'), User)
|
||||
|
||||
def test_serialize_unknown(self):
|
||||
class Type:
|
||||
pass
|
||||
|
||||
try:
|
||||
self._test_serialization(Type(), Type)
|
||||
self.assertTrue(False, 'No exception thrown!')
|
||||
except TypeError:
|
||||
pass
|
||||
|
||||
def test_serialize_file(self):
|
||||
val = SimpleUploadedFile("sample_invalid_image.jpg", b"file_content", content_type="image/jpeg")
|
||||
default_storage.save(val.name, val)
|
||||
val.close()
|
||||
self.event.settings.set('test', val)
|
||||
self.event.settings._flush()
|
||||
f = self.event.settings.get('test', as_type=File)
|
||||
self.assertIsInstance(f, File)
|
||||
self.assertTrue(f.name.endswith(val.name))
|
||||
f.close()
|
||||
|
||||
def test_unserialize_file_value(self):
|
||||
val = SimpleUploadedFile("sample_invalid_image.jpg", b"file_content", content_type="image/jpeg")
|
||||
default_storage.save(val.name, val)
|
||||
val.close()
|
||||
self.event.settings.set('test', val)
|
||||
self.event.settings._flush()
|
||||
f = self.event.settings.get('test', as_type=File)
|
||||
self.assertIsInstance(f, File)
|
||||
self.assertTrue(f.name.endswith(val.name))
|
||||
f.close()
|
||||
|
||||
def test_autodetect_file_value(self):
|
||||
val = SimpleUploadedFile("sample_invalid_image.jpg", b"file_content", content_type="image/jpeg")
|
||||
default_storage.save(val.name, val)
|
||||
val.close()
|
||||
self.event.settings.set('test', val)
|
||||
self.event.settings._flush()
|
||||
f = self.event.settings.get('test')
|
||||
self.assertIsInstance(f, File)
|
||||
self.assertTrue(f.name.endswith(val.name))
|
||||
f.close()
|
||||
|
||||
def test_autodetect_file_value_of_parent(self):
|
||||
val = SimpleUploadedFile("sample_invalid_image.jpg", b"file_content", content_type="image/jpeg")
|
||||
default_storage.save(val.name, val)
|
||||
val.close()
|
||||
self.organizer.settings.set('test', val)
|
||||
self.organizer.settings._flush()
|
||||
f = self.event.settings.get('test')
|
||||
self.assertIsInstance(f, File)
|
||||
self.assertTrue(f.name.endswith(val.name))
|
||||
f.close()
|
||||
self.event.settings.flush()
|
||||
|
||||
def _test_serialization(self, val, as_type):
|
||||
self.event.settings.set('test', val)
|
||||
self.event.settings._flush()
|
||||
self.event.settings.flush()
|
||||
self.assertEqual(self.event.settings.get('test', as_type=as_type), val)
|
||||
self.assertIsInstance(self.event.settings.get('test', as_type=as_type), as_type)
|
||||
|
||||
def test_serialize_lazyi18nstring(self):
|
||||
self._test_serialization(LazyI18nString({'de': 'Hallo', 'en': 'Hello'}), LazyI18nString)
|
||||
|
||||
def test_sandbox(self):
|
||||
sandbox = SettingsSandbox('testing', 'foo', self.event)
|
||||
sandbox.set('foo', 'bar')
|
||||
@@ -278,26 +53,3 @@ class SettingsTestCase(TestCase):
|
||||
|
||||
self.assertIsNone(sandbox.bar)
|
||||
self.assertIsNone(sandbox['baz'])
|
||||
|
||||
def test_freeze(self):
|
||||
olddef = settings.DEFAULTS
|
||||
settings.DEFAULTS = {
|
||||
'test_default': {
|
||||
'default': 'def',
|
||||
'type': str
|
||||
}
|
||||
}
|
||||
self.event.organizer.settings.set('bar', 'baz')
|
||||
self.event.organizer.settings.set('foo', 'baz')
|
||||
self.event.settings.set('foo', 'bar')
|
||||
frozen = self.event.settings.freeze()
|
||||
self.event.settings.set('foo', 'notfrozen')
|
||||
|
||||
try:
|
||||
self.assertEqual(frozen, {
|
||||
'test_default': 'def',
|
||||
'bar': 'baz',
|
||||
'foo': 'bar'
|
||||
})
|
||||
finally:
|
||||
settings.DEFAULTS = olddef
|
||||
|
||||
Reference in New Issue
Block a user