|
1 | 1 | # -*- coding: utf-8 -*-
|
2 | 2 | from __future__ import unicode_literals
|
3 | 3 |
|
| 4 | +import json |
| 5 | + |
4 | 6 | from copy import deepcopy
|
5 | 7 |
|
6 | 8 | from django.core.urlresolvers import reverse
|
@@ -102,3 +104,32 @@ def test_update_no_settings_error(self):
|
102 | 104 | form_data_without_items, format='json'
|
103 | 105 | )
|
104 | 106 | self.assertEquals(res.status_code, 422)
|
| 107 | + |
| 108 | + |
| 109 | +class UpdateFormWithTheSameFieldSlug(APITestCase): |
| 110 | + @override_settings(FORMIDABLE_POST_CREATE_CALLBACK_SUCCESS=None) |
| 111 | + def test_update_no_error(self): |
| 112 | + # Create a form with the usual data. |
| 113 | + res_create = self.client.post( |
| 114 | + reverse('formidable:form_create'), form_data, format='json' |
| 115 | + ) |
| 116 | + # Do not use .json() for django 1.8 |
| 117 | + data = json.loads(res_create.content.decode('utf-8')) |
| 118 | + form_id = data.get('id') |
| 119 | + data_to_update = deepcopy(form_data_items) |
| 120 | + # The field [0] was a text field |
| 121 | + # Now it becomes a dropdown |
| 122 | + data_to_update['fields'][0]['slug'] = form_data['fields'][0]['slug'] |
| 123 | + res_update = self.client.put( |
| 124 | + reverse('formidable:form_detail', args=[form_id]), |
| 125 | + data_to_update, format='json' |
| 126 | + ) |
| 127 | + self.assertEquals(res_update.status_code, 200) |
| 128 | + form = Formidable.objects.get(pk=form_id) |
| 129 | + json_data = form.to_json() |
| 130 | + # Still one field |
| 131 | + self.assertEqual(len(json_data['fields']), 1) |
| 132 | + self.assertEqual( |
| 133 | + json_data['fields'][0]['slug'], form_data['fields'][0]['slug'] |
| 134 | + ) |
| 135 | + self.assertEqual(json_data['fields'][0]['type_id'], 'dropdown') |
0 commit comments