def test_runtimesettingswrapper(): test_value = {'testing': 1, 'count': 2} test2_value = {'testing': 1, 'count': 4} RuntimeSetting.objects.create(key="TEST", raw_value=json.dumps(test_value)) RuntimeSetting.objects.create(key="TEST2", raw_value=json.dumps(test2_value)) class ListPerPageForm(Form): count = IntegerField(initial=25, min_value=1, max_value=99) registry.register('TEST', ListPerPageForm, {'count': '3'}) registry.register('TEST_DEFAULT', ListPerPageForm, {'count': '14'}) wrapped = RuntimeSettingWrapper() assert wrapped['TEST'] == {'count': 2} assert wrapped['TEST_DEFAULT'] == {'count': 14} # new values won't be discovered until the existing data is updated RuntimeSetting.objects.create(key="TEST_DEFAULT", raw_value=json.dumps(test2_value)) assert wrapped['TEST_DEFAULT'] == {'count': 14} wrapped2 = RuntimeSettingWrapper() assert wrapped2['TEST_DEFAULT'] == {'count': 4} assert bool(wrapped) is True assert 'TEST' in wrapped assert wrapped.TEST == {'count': 2} data = set(x for x, v in wrapped) assert data == {'TEST', 'TEST_DEFAULT'}
def form(key): class ListPerPageForm(Form): count = IntegerField(initial=25, min_value=1, max_value=99) registry.register(key, ListPerPageForm, {'amdefault': None}) try: yield ListPerPageForm finally: registry.unregister(key)
def userform(key): class ModelChoicesForm(Form): single_user = ModelChoiceField(queryset=get_user_model().objects.all()) many_users = ModelMultipleChoiceField(queryset=get_user_model().objects.all()) another = IntegerField(min_value=1, max_value=5) registry.register(key, ModelChoicesForm) try: yield ModelChoicesForm finally: registry.unregister(key)
def fake_keys(*args): class ListPerPageForm(Form): count = IntegerField(min_value=1, max_value=99) for key in args: registry.register(key, ListPerPageForm) try: yield finally: for key in args: registry.unregister(key)
def test_defaults_mapped_over_db_values(): test_value = {'testing': 1, 'count': 2} # this emulates an old value whose defaults have since been updated. RuntimeSetting.objects.create(key="TESTX", raw_value=json.dumps(test_value)) test_value.update(another=1.2) form_class = generate_form(test_value) registry.register('TESTX', form_class, {'another': 4.2}) wrapper = RuntimeSettingWrapper() value = wrapper.TESTX registry.unregister('TESTX') assert value == {'count': 2, 'testing': 1, 'another': 4.2}