Skip to content

Commit f765808

Browse files
author
Torsten Engelbrecht
committed
finish tests
1 parent a55f615 commit f765808

File tree

4 files changed

+127
-32
lines changed

4 files changed

+127
-32
lines changed

dynamicsettings/forms.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -81,23 +81,23 @@ def clean(self):
8181
if value_type == 'tuple' and type(value).__name__!='tuple':
8282
try:
8383
if type(value).__name__ == 'dict':
84-
raise TypeError()
84+
raise TypeError
8585
self.cleaned_data['value'] = tuple(value)
86-
except ValueError, TypeError:
86+
except (ValueError, TypeError):
8787
raise forms.ValidationError(_(error_message_tmpl % ('tuple', 'a valid JSON string representing an Array (leading "["and traling "]")')))
8888
elif value_type == 'list' and type(value).__name__!='list':
8989
try:
9090
if type(value).__name__ == 'dict':
91-
raise TypeError()
91+
raise TypeError
9292
self.cleaned_data['value'] = list(value)
93-
except ValueError, TypeError:
93+
except (ValueError, TypeError):
9494
raise forms.ValidationError(_(error_message_tmpl % ('list', 'a valid JSON string representing an Array (leading "["and traling "]")')))
9595
elif value_type == 'dict' and type(value).__name__!='dict':
9696
try:
9797
if type(value).__name__ == 'list':
98-
raise TypeError()
98+
raise TypeError
9999
self.cleaned_data['value'] = dict(value)
100-
except ValueError, TypeError:
100+
except (ValueError, TypeError):
101101
raise forms.ValidationError(_(error_message_tmpl % ('dict', 'a valid JSON string representing an Object (leading "{"and traling "}")')))
102102
#c)
103103
value = self.cleaned_data['value']

dynamicsettings/tests/__init__.py

Lines changed: 119 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -11,30 +11,6 @@
1111
from dynamicsettings import app_settings
1212

1313

14-
"""
15-
test:
16-
- views:
17-
- index view: status code, context is set, check a couple random
18-
settings are included or not, check for the values of these settings
19-
(mainly if the type is the expected one)
20-
- set view:
21-
- on success: status code, status message, check if setting is
22-
set properly in the database
23-
- on error: status code, status message, check if setting is
24-
not set in the database
25-
- reset view:
26-
- on success: status code, status message, check if setting is
27-
reset properly in the database
28-
- on error: status code, status message, check if setting is
29-
not reset in the database
30-
- SettingsForm:
31-
- submit some test data to the form and check if the validation is
32-
as expected (some random settings, some with type change some
33-
with none)
34-
- dynamicsettings init: retrieval of a setting, setting of a setting, don"t
35-
know what exaclty to check here since its similiar to the view
36-
"""
37-
3814
class DynamicSettingsViewsTestCase(TestCase):
3915
urls = 'dynamicsettings.urls'
4016

@@ -123,8 +99,91 @@ def test_set_view_staff(self):
12399
self.assertFalse(dynamic_settings.is_in_db('TEST_SETTING1'))
124100
self.assertEqual(dynamic_settings.TEST_SETTING1, 73)
125101

126-
#check another setting
102+
#check second setting
103+
response = self.client.post('/set/', {'key': 'TEST_SETTING2', 'value': 'my_custom_string', 'type': 'str'})
104+
self.assertEqual(response.status_code, 200)
105+
content_json = simplejson.loads(response.content)
106+
self.assertEqual(content_json['status'], 'success')
107+
self.assertEqual(content_json['value'], 'my_custom_string')
108+
self.assertEqual(content_json['type'], 'str')
109+
self.assertTrue(dynamic_settings.is_in_db('TEST_SETTING2'))
110+
#change to the type
111+
response = self.client.post('/set/', {'key': 'TEST_SETTING2', 'value': '123', 'type': 'int'})
112+
self.assertEqual(response.status_code, 200)
113+
content_json = simplejson.loads(response.content)
114+
self.assertEqual(content_json['status'], 'error')
115+
self.assertTrue(dynamic_settings.is_in_db('TEST_SETTING2'))
116+
#check that the old value is still saved
117+
self.assertEqual(dynamic_settings.TEST_SETTING2, 'my_custom_string')
118+
dynamic_settings.reset('TEST_SETTING2')
119+
self.assertFalse(dynamic_settings.is_in_db('TEST_SETTING2'))
120+
self.assertEqual(dynamic_settings.TEST_SETTING2, 'a string')
121+
122+
#check third setting
123+
response = self.client.post('/set/', {'key': 'TEST_SETTING3', 'value': '[4,5]', 'type': 'list'})
124+
self.assertEqual(response.status_code, 200)
125+
content_json = simplejson.loads(response.content)
126+
self.assertEqual(content_json['status'], 'success')
127+
self.assertEqual(content_json['value'].replace('\n','').replace(' ',''), '[4,5]')
128+
self.assertEqual(content_json['type'], 'list')
129+
self.assertTrue(dynamic_settings.is_in_db('TEST_SETTING3'))
130+
#change the value to sth which doesnt look like a list
131+
response = self.client.post('/set/', {'key': 'TEST_SETTING3', 'value': '{"d": 123}', 'type': 'list'})
132+
self.assertEqual(response.status_code, 200)
133+
content_json = simplejson.loads(response.content)
134+
self.assertEqual(content_json['status'], 'error')
135+
self.assertTrue(dynamic_settings.is_in_db('TEST_SETTING3'))
136+
#check that the old value is still saved
137+
self.assertEqual(dynamic_settings.TEST_SETTING3, [4, 5])
138+
dynamic_settings.reset('TEST_SETTING3')
139+
self.assertFalse(dynamic_settings.is_in_db('TEST_SETTING3'))
140+
self.assertEqual(dynamic_settings.TEST_SETTING3, [1, 2, 3])
127141

142+
#check fourth setting
143+
response = self.client.post('/set/', {'key': 'TEST_SETTING4', 'value': '{"d": 123, "abc": "string", "l": []}', 'type': 'dict'})
144+
self.assertEqual(response.status_code, 200)
145+
content_json = simplejson.loads(response.content)
146+
self.assertEqual(content_json['status'], 'success')
147+
self.assertEqual(content_json['type'], 'dict')
148+
self.assertTrue(dynamic_settings.is_in_db('TEST_SETTING4'))
149+
#change the value and type to something completely different
150+
response = self.client.post('/set/', {'key': 'TEST_SETTING4', 'value': '123', 'type': 'long'})
151+
self.assertEqual(response.status_code, 200)
152+
content_json = simplejson.loads(response.content)
153+
self.assertEqual(content_json['status'], 'error')
154+
self.assertTrue(dynamic_settings.is_in_db('TEST_SETTING4'))
155+
#check that the old value is still saved
156+
self.assertEqual(dynamic_settings.TEST_SETTING4, {"d": 123, "abc": "string", "l": []})
157+
dynamic_settings.reset('TEST_SETTING4')
158+
self.assertFalse(dynamic_settings.is_in_db('TEST_SETTING4'))
159+
self.assertEqual(dynamic_settings.TEST_SETTING4, {'key': 'value', 'num': 3})
160+
161+
#check last setting (NoneType - can be changed to anything)
162+
response = self.client.post('/set/', {'key': 'TEST_SETTING5', 'value': u'你好', 'type': 'unicode'})
163+
self.assertEqual(response.status_code, 200)
164+
content_json = simplejson.loads(response.content)
165+
self.assertEqual(content_json['status'], 'success')
166+
self.assertEqual(content_json['value'], u'你好')
167+
self.assertEqual(content_json['type'], 'unicode')
168+
self.assertTrue(dynamic_settings.is_in_db('TEST_SETTING5'))
169+
#check to another type (once a type is set it should not change anymore)
170+
response = self.client.post('/set/', {'key': 'TEST_SETTING5', 'value': '300', 'type': 'int'})
171+
self.assertEqual(response.status_code, 200)
172+
content_json = simplejson.loads(response.content)
173+
self.assertEqual(content_json['status'], 'error')
174+
self.assertTrue(dynamic_settings.is_in_db('TEST_SETTING5'))
175+
#change the type to list and value to something which doesnt look like a list
176+
response = self.client.post('/set/', {'key': 'TEST_SETTING5', 'value': '404', 'type': 'list'})
177+
self.assertEqual(response.status_code, 200)
178+
content_json = simplejson.loads(response.content)
179+
self.assertEqual(content_json['status'], 'error')
180+
self.assertTrue(dynamic_settings.is_in_db('TEST_SETTING5'))
181+
#check that the old value is still saved
182+
self.assertEqual(dynamic_settings.TEST_SETTING5, u'你好')
183+
dynamic_settings.reset('TEST_SETTING5')
184+
self.assertFalse(dynamic_settings.is_in_db('TEST_SETTING5'))
185+
self.assertEqual(dynamic_settings.TEST_SETTING5, None)
186+
self.assertEqual(type(dynamic_settings.TEST_SETTING5).__name__, 'NoneType')
128187

129188
self.client.logout()
130189

@@ -137,13 +196,39 @@ def test_set_view_normal(self):
137196
#even a post request should not succeed
138197
response = self.client.post('/set/', {'key': 'TEST_SETTING1', 'value': 'some random string', 'type': 'int'})
139198
self.assertEqual(response.status_code, 200)
199+
self.assertFalse(dynamic_settings.is_in_db('TEST_SETTING1'))
200+
self.assertEqual(dynamic_settings.TEST_SETTING1, 73)
140201
self.client.logout()
202+
#no need to test furhter settings
141203

142204
def test_reset_view_staff(self):
143205
logged_in = self.client.login(username=self.staff['username'], password=self.staff['password'])
144206
self.assertTrue(logged_in)
145207
response = self.client.get('/reset/')
146208
self.assertEqual(response.status_code, 405)
209+
210+
#set some setting
211+
dynamic_settings.set('TEST_SETTING1', 500, 'int')
212+
self.assertEqual(dynamic_settings.TEST_SETTING1, 500)
213+
response = self.client.post('/reset/', {'key': 'TEST_SETTING1'})
214+
self.assertEqual(response.status_code, 200)
215+
content_json = simplejson.loads(response.content)
216+
self.assertEqual(content_json['status'], 'success')
217+
self.assertEqual(content_json['value'], 73)
218+
self.assertEqual(content_json['type'], 'int')
219+
self.assertEqual(dynamic_settings.TEST_SETTING1, 73)
220+
#call view without key
221+
response = self.client.post('/reset/')
222+
self.assertEqual(response.status_code, 200)
223+
content_json = simplejson.loads(response.content)
224+
self.assertEqual(content_json['status'], 'error')
225+
#reset a key wjhich is already reseted
226+
response = self.client.post('/reset/', {'key': 'TEST_SETTING3'})
227+
self.assertEqual(response.status_code, 200)
228+
content_json = simplejson.loads(response.content)
229+
self.assertEqual(content_json['status'], 'error')
230+
self.assertEqual(dynamic_settings.TEST_SETTING1, 73)
231+
147232
self.client.logout()
148233

149234
def test_reset_view_normal(self):
@@ -152,6 +237,15 @@ def test_reset_view_normal(self):
152237
response = self.client.get('/reset/')
153238
#attempt to log the user into admin
154239
self.assertEqual(response.status_code, 200)
240+
241+
dynamic_settings.set('TEST_SETTING1', 500, 'int')
242+
self.assertEqual(dynamic_settings.TEST_SETTING1, 500)
243+
response = self.client.post('/reset/', {'key': 'TEST_SETTING1'})
244+
self.assertEqual(response.status_code, 200)
245+
self.assertEqual(dynamic_settings.TEST_SETTING1, 500)
246+
dynamic_settings.reset('TEST_SETTING1')
247+
self.assertEqual(dynamic_settings.TEST_SETTING1, 73)
248+
155249
self.client.logout()
156250

157251

dynamicsettings/tests/test_settings.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@
22
TEST_SETTING2 = 'a string'
33
TEST_SETTING3 = [1, 2, 3]
44
TEST_SETTING4 = {'key': 'value', 'num': 3}
5-
TEST_SETTING5 = {'mylist': TEST_SETTING3}
5+
TEST_SETTING5 = None

dynamicsettings/views.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@ def dynamicsettings_set(request):
8787
settings_form_rendered = template.loader.render_to_string('dynamicsettings/settings_form.html', form_dict)
8888
response_dict.update({
8989
'status': 'error',
90+
'message': settings_form.errors['__all__'],
9091
'form': settings_form_rendered
9192
})
9293
return http.HttpResponse(simplejson.dumps(response_dict, indent=4), mimetype="text/plain")

0 commit comments

Comments
 (0)