Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 5 additions & 19 deletions demo/tests/test_end_point.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,8 @@
from formidable.serializers.forms import ContextFormSerializer
from formidable.serializers.fields import BASE_FIELDS, FieldSerializerRegister
from formidable.serializers.presets import (
PresetsSerializer, PresetsArgsSerializer, PresetsArgSerializerWithItems,
PresetsClassSerializer, PresetsArgsSerializer,
PresetsArgSerializerWithItems,
)
from formidable.forms.validations.presets import (
ConfirmationPresets, ComparisonPresets
Expand Down Expand Up @@ -1165,7 +1166,7 @@ def test_delete_items_on_update(self):
self.assertEquals(field.items.count(), 0)


class TestPresetsSerializerRender(TestCase):
class TestPresetsClassSerializerRender(TestCase):

class PresetsTest(presets.Presets):

Expand Down Expand Up @@ -1193,8 +1194,7 @@ class MetaParameters(object):
)

def test_render_preset_attr(self):
preset_instance = self.PresetsTest([])
serializer = PresetsSerializer(preset_instance)
serializer = PresetsClassSerializer(self.PresetsTest)
self.assertTrue(serializer.data)
data = serializer.data
self.assertIn('label', data)
Expand All @@ -1206,16 +1206,6 @@ def test_render_preset_attr(self):
self.assertIn('message', data)
self.assertEqual(data['message'], 'thrown message when error test')

def test_render_class_attr(self):
preset_instance = self.PresetsTest([])
preset_instance.description = 'oh no !'
serializer = PresetsSerializer(preset_instance)
self.assertTrue(serializer.data)
data = serializer.data
self.assertIn('description', data)
self.assertNotEqual(data['description'], 'oh no !')
self.assertEqual(data['description'], 'this is a test')

def test_render_preset_field_arg(self):
field_arg = presets.PresetFieldArgument(
slug='test', label='test',
Expand Down Expand Up @@ -1286,11 +1276,7 @@ def test_render_preset_hybrid_arg(self):
self.assertIn('field', data['types'])

def test_render_preset_with_argument(self):
preset_instance = self.PresetsTestWithArgs(arguments=[
PresetArg(slug='lhs', field_id='foo'),
PresetArg(slug='rhs', value='toto'),
])
serializer = PresetsSerializer(preset_instance)
serializer = PresetsClassSerializer(self.PresetsTestWithArgs)
self.assertTrue(serializer.data)
data = serializer.data
self.assertIn('arguments', data)
Expand Down
14 changes: 14 additions & 0 deletions demo/tests/tests_integration.py
Original file line number Diff line number Diff line change
Expand Up @@ -241,6 +241,20 @@ def test_get(self):
self.assertEqual(access['preview_as'], 'FORM')


class TestPresetsList(APITestCase):

def test_get(self):
response = self.client.get(reverse('formidable:presets_list'))
self.assertEqual(response.status_code, 200)
self.assertTrue(len(response.data) > 2)
for preset in response.data:
self.assertIn('slug', preset)
self.assertIn('label', preset)
self.assertIn('description', preset)
self.assertIn('message', preset)
self.assertIn('arguments', preset)


class TestChain(APITestCase):

def setUp(self):
Expand Down
28 changes: 6 additions & 22 deletions formidable/serializers/presets.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,22 +13,6 @@
)


class ClassAttrSerializer(object):

def get_attribute(self, instance):
return super(ClassAttrSerializer, self).get_attribute(
instance.__class__
)


class CharFieldClassAttr(ClassAttrSerializer, fields.CharField):
pass


class SlugFieldClassAttr(ClassAttrSerializer, fields.SlugField):
pass


class PresetsArgsSerializerRegister(dict):

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

def get_attribute(self, instance):
return instance.__class__._declared_arguments.values()
return instance._declared_arguments.values()


class PresetsArgsSerializer(Serializer):
Expand All @@ -68,12 +52,12 @@ class PresetsArgSerializerWithItems(PresetsArgsSerializer):
items = fields.DictField()


class PresetsSerializer(Serializer):
class PresetsClassSerializer(Serializer):

slug = SlugFieldClassAttr()
label = CharFieldClassAttr()
description = CharFieldClassAttr()
message = CharFieldClassAttr(source='default_message')
slug = fields.SlugField()
label = fields.CharField()
description = fields.CharField()
message = fields.CharField(source='default_message')
arguments = PresetsArgsSerializer(many=True)


Expand Down
9 changes: 3 additions & 6 deletions formidable/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
from formidable.models import Formidable
from formidable.serializers import FormidableSerializer, SimpleAccessSerializer
from formidable.serializers.forms import ContextFormSerializer
from formidable.serializers.presets import PresetsSerializer
from formidable.serializers.presets import PresetsClassSerializer
from rest_framework import exceptions
from rest_framework.generics import (
CreateAPIView, RetrieveAPIView, RetrieveUpdateAPIView
Expand Down Expand Up @@ -213,12 +213,9 @@ class PresetsList(six.with_metaclass(MetaClassView, APIView)):
settings_permission_key = 'FORMIDABLE_PERMISSION_BUILDER'

def get(self, request, format=None):
presets_declarations = [
klass([]) for klass in presets_register.values()
]
serializer = PresetsSerializer(
serializer = PresetsClassSerializer(
many=True,
instance=presets_declarations
instance=presets_register.values()
)
return Response(serializer.data)

Expand Down