Skip to content

Commit 3dc3145

Browse files
authored
Merge pull request #199 from novafloss/fix-presets-list
Fix error on presets_lists endpoint
2 parents 7e4c1e7 + 2a48775 commit 3dc3145

File tree

4 files changed

+28
-47
lines changed

4 files changed

+28
-47
lines changed

demo/tests/test_end_point.py

Lines changed: 5 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@
1414
from formidable.serializers.forms import ContextFormSerializer
1515
from formidable.serializers.fields import BASE_FIELDS, FieldSerializerRegister
1616
from formidable.serializers.presets import (
17-
PresetsSerializer, PresetsArgsSerializer, PresetsArgSerializerWithItems,
17+
PresetsClassSerializer, PresetsArgsSerializer,
18+
PresetsArgSerializerWithItems,
1819
)
1920
from formidable.forms.validations.presets import (
2021
ConfirmationPresets, ComparisonPresets
@@ -1165,7 +1166,7 @@ def test_delete_items_on_update(self):
11651166
self.assertEquals(field.items.count(), 0)
11661167

11671168

1168-
class TestPresetsSerializerRender(TestCase):
1169+
class TestPresetsClassSerializerRender(TestCase):
11691170

11701171
class PresetsTest(presets.Presets):
11711172

@@ -1193,8 +1194,7 @@ class MetaParameters(object):
11931194
)
11941195

11951196
def test_render_preset_attr(self):
1196-
preset_instance = self.PresetsTest([])
1197-
serializer = PresetsSerializer(preset_instance)
1197+
serializer = PresetsClassSerializer(self.PresetsTest)
11981198
self.assertTrue(serializer.data)
11991199
data = serializer.data
12001200
self.assertIn('label', data)
@@ -1206,16 +1206,6 @@ def test_render_preset_attr(self):
12061206
self.assertIn('message', data)
12071207
self.assertEqual(data['message'], 'thrown message when error test')
12081208

1209-
def test_render_class_attr(self):
1210-
preset_instance = self.PresetsTest([])
1211-
preset_instance.description = 'oh no !'
1212-
serializer = PresetsSerializer(preset_instance)
1213-
self.assertTrue(serializer.data)
1214-
data = serializer.data
1215-
self.assertIn('description', data)
1216-
self.assertNotEqual(data['description'], 'oh no !')
1217-
self.assertEqual(data['description'], 'this is a test')
1218-
12191209
def test_render_preset_field_arg(self):
12201210
field_arg = presets.PresetFieldArgument(
12211211
slug='test', label='test',
@@ -1286,11 +1276,7 @@ def test_render_preset_hybrid_arg(self):
12861276
self.assertIn('field', data['types'])
12871277

12881278
def test_render_preset_with_argument(self):
1289-
preset_instance = self.PresetsTestWithArgs(arguments=[
1290-
PresetArg(slug='lhs', field_id='foo'),
1291-
PresetArg(slug='rhs', value='toto'),
1292-
])
1293-
serializer = PresetsSerializer(preset_instance)
1279+
serializer = PresetsClassSerializer(self.PresetsTestWithArgs)
12941280
self.assertTrue(serializer.data)
12951281
data = serializer.data
12961282
self.assertIn('arguments', data)

demo/tests/tests_integration.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -241,6 +241,20 @@ def test_get(self):
241241
self.assertEqual(access['preview_as'], 'FORM')
242242

243243

244+
class TestPresetsList(APITestCase):
245+
246+
def test_get(self):
247+
response = self.client.get(reverse('formidable:presets_list'))
248+
self.assertEqual(response.status_code, 200)
249+
self.assertTrue(len(response.data) > 2)
250+
for preset in response.data:
251+
self.assertIn('slug', preset)
252+
self.assertIn('label', preset)
253+
self.assertIn('description', preset)
254+
self.assertIn('message', preset)
255+
self.assertIn('arguments', preset)
256+
257+
244258
class TestChain(APITestCase):
245259

246260
def setUp(self):

formidable/serializers/presets.py

Lines changed: 6 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -13,22 +13,6 @@
1313
)
1414

1515

16-
class ClassAttrSerializer(object):
17-
18-
def get_attribute(self, instance):
19-
return super(ClassAttrSerializer, self).get_attribute(
20-
instance.__class__
21-
)
22-
23-
24-
class CharFieldClassAttr(ClassAttrSerializer, fields.CharField):
25-
pass
26-
27-
28-
class SlugFieldClassAttr(ClassAttrSerializer, fields.SlugField):
29-
pass
30-
31-
3216
class PresetsArgsSerializerRegister(dict):
3317

3418
lookup_field = 'has_items'
@@ -48,7 +32,7 @@ def __init__(self, *args, **kwargs):
4832
super(PresetArgsListSerializer, self).__init__(*args, **kwargs)
4933

5034
def get_attribute(self, instance):
51-
return instance.__class__._declared_arguments.values()
35+
return instance._declared_arguments.values()
5236

5337

5438
class PresetsArgsSerializer(Serializer):
@@ -68,12 +52,12 @@ class PresetsArgSerializerWithItems(PresetsArgsSerializer):
6852
items = fields.DictField()
6953

7054

71-
class PresetsSerializer(Serializer):
55+
class PresetsClassSerializer(Serializer):
7256

73-
slug = SlugFieldClassAttr()
74-
label = CharFieldClassAttr()
75-
description = CharFieldClassAttr()
76-
message = CharFieldClassAttr(source='default_message')
57+
slug = fields.SlugField()
58+
label = fields.CharField()
59+
description = fields.CharField()
60+
message = fields.CharField(source='default_message')
7761
arguments = PresetsArgsSerializer(many=True)
7862

7963

formidable/views.py

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
from formidable.models import Formidable
1616
from formidable.serializers import FormidableSerializer, SimpleAccessSerializer
1717
from formidable.serializers.forms import ContextFormSerializer
18-
from formidable.serializers.presets import PresetsSerializer
18+
from formidable.serializers.presets import PresetsClassSerializer
1919
from rest_framework import exceptions
2020
from rest_framework.generics import (
2121
CreateAPIView, RetrieveAPIView, RetrieveUpdateAPIView
@@ -213,12 +213,9 @@ class PresetsList(six.with_metaclass(MetaClassView, APIView)):
213213
settings_permission_key = 'FORMIDABLE_PERMISSION_BUILDER'
214214

215215
def get(self, request, format=None):
216-
presets_declarations = [
217-
klass([]) for klass in presets_register.values()
218-
]
219-
serializer = PresetsSerializer(
216+
serializer = PresetsClassSerializer(
220217
many=True,
221-
instance=presets_declarations
218+
instance=presets_register.values()
222219
)
223220
return Response(serializer.data)
224221

0 commit comments

Comments
 (0)