Skip to content

Commit 4abc2a8

Browse files
authored
Merge pull request #276 from novafloss/fix-pep8-and-minor-fixes
Fix pep8 and minor changes
2 parents d2f3012 + 0c6d2e6 commit 4abc2a8

File tree

11 files changed

+247
-46
lines changed

11 files changed

+247
-46
lines changed

CHANGELOG.rst

+2-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@ ChangeLog
55
master (unreleased)
66
===================
77

8-
Nothing here yet.
8+
- Added tests for the validators mapping
9+
- Minor syntax changes
910

1011
Release 1.0.2 (2017-10-10)
1112
==========================

demo/tests/test_validators.py

+193
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,193 @@
1+
# -*- coding: utf-8 -*-
2+
from collections import namedtuple
3+
from django.test import TestCase
4+
from formidable.validators import ValidatorFactory, DateValidatorFactory
5+
try:
6+
from unittest import mock
7+
except ImportError:
8+
import mock
9+
10+
11+
class TestValidatorFactoryMapping(TestCase):
12+
def setUp(self):
13+
self.validation_named_tuple = namedtuple(
14+
'Validation', ['type', 'message', 'value']
15+
)
16+
self.validation_object = ValidatorFactory()
17+
18+
def test_min_length(self):
19+
mock_object = mock.Mock()
20+
ValidatorFactory.min_length = mock_object
21+
self.validation_object.produce(
22+
self.validation_named_tuple(
23+
type='MINLENGTH',
24+
value=20,
25+
message='message'
26+
)
27+
)
28+
29+
assert mock_object.called
30+
31+
def test_max_length(self):
32+
mock_object = mock.Mock()
33+
ValidatorFactory.max_length = mock_object
34+
35+
self.validation_object.produce(
36+
self.validation_named_tuple(
37+
type='MAXLENGTH',
38+
value=20,
39+
message='message'
40+
)
41+
)
42+
43+
assert mock_object.called
44+
45+
def test_regexp(self):
46+
mock_object = mock.Mock()
47+
ValidatorFactory.regexp = mock_object
48+
49+
self.validation_object.produce(
50+
self.validation_named_tuple(
51+
type='REGEXP',
52+
value='value',
53+
message='message'
54+
)
55+
)
56+
57+
assert mock_object.called
58+
59+
def test_gt(self):
60+
mock_object = mock.Mock()
61+
ValidatorFactory.gt = mock_object
62+
63+
self.validation_object.produce(
64+
self.validation_named_tuple(
65+
type='GT',
66+
value=20,
67+
message='message'
68+
)
69+
)
70+
71+
assert mock_object.called
72+
73+
def test_gte(self):
74+
mock_object = mock.Mock()
75+
ValidatorFactory.gte = mock_object
76+
77+
self.validation_object.produce(
78+
self.validation_named_tuple(
79+
type='GTE',
80+
value=20,
81+
message='message'
82+
)
83+
)
84+
85+
assert mock_object.called
86+
87+
def test_lt(self):
88+
mock_object = mock.Mock()
89+
ValidatorFactory.lt = mock_object
90+
91+
self.validation_object.produce(
92+
self.validation_named_tuple(
93+
type='LT',
94+
value=20,
95+
message='message'
96+
)
97+
)
98+
99+
assert mock_object.called
100+
101+
def test_lte(self):
102+
mock_object = mock.Mock()
103+
ValidatorFactory.lte = mock_object
104+
105+
self.validation_object.produce(
106+
self.validation_named_tuple(
107+
type='LTE',
108+
value=20,
109+
message='message'
110+
)
111+
)
112+
113+
assert mock_object.called
114+
115+
def test_eq(self):
116+
mock_object = mock.Mock()
117+
ValidatorFactory.eq = mock_object
118+
119+
self.validation_object.produce(
120+
self.validation_named_tuple(
121+
type='EQ',
122+
value=20,
123+
message='message'
124+
)
125+
)
126+
127+
assert mock_object.called
128+
129+
def test_neq(self):
130+
mock_object = mock.Mock()
131+
ValidatorFactory.neq = mock_object
132+
133+
self.validation_object.produce(
134+
self.validation_named_tuple(
135+
type='NEQ',
136+
value=20,
137+
message='message'
138+
)
139+
)
140+
141+
assert mock_object.called
142+
143+
144+
class TestDateValidatorFactoryMapping(TestCase):
145+
def setUp(self):
146+
self.validation_named_tuple = namedtuple(
147+
'Validation', ['type', 'message', 'value']
148+
)
149+
self.validation_object = DateValidatorFactory()
150+
151+
@mock.patch('formidable.validators.DateLTValidator')
152+
def test_lt(self, mocked_validator):
153+
self.validation_object.produce(
154+
self.validation_named_tuple(
155+
type='LT',
156+
value=20,
157+
message='message'
158+
)
159+
)
160+
assert mocked_validator.called
161+
162+
@mock.patch('formidable.validators.DateMaxValueValidator')
163+
def test_lte(self, mocked_validator):
164+
self.validation_object.produce(
165+
self.validation_named_tuple(
166+
type='LTE',
167+
value=20,
168+
message='message'
169+
)
170+
)
171+
assert mocked_validator.called
172+
173+
@mock.patch('formidable.validators.DateGTValidator')
174+
def test_gt(self, mocked_validator):
175+
self.validation_object.produce(
176+
self.validation_named_tuple(
177+
type='GT',
178+
value=20,
179+
message='message'
180+
)
181+
)
182+
assert mocked_validator.called
183+
184+
@mock.patch('formidable.validators.DateIsInFuture')
185+
def test_date_future(self, mocked_validator):
186+
self.validation_object.produce(
187+
self.validation_named_tuple(
188+
type='IS_DATE_IN_THE_FUTURE',
189+
value='20',
190+
message='message'
191+
)
192+
)
193+
assert mocked_validator.called

formidable/forms/__init__.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -76,9 +76,9 @@ def get_dynamic_form_class_from_schema(schema, field_factory=None):
7676
attrs,
7777
conditions
7878
)
79-
klass = type(str('DynamicForm'), (BaseDynamicForm,), attrs)
80-
klass.__doc__ = doc
81-
return klass
79+
form_class = type(str('DynamicForm'), (BaseDynamicForm,), attrs)
80+
form_class.__doc__ = doc
81+
return form_class
8282

8383

8484
def get_dynamic_form_class(formidable, role=None, field_factory=None):

formidable/forms/conditions.py

+5-5
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ class ConditionsRegister(dict):
3535
def gen_from_schema(self, fields, conditions_schema):
3636
for condition in conditions_schema:
3737
# name, fields_ids, action, tests
38-
klass = self[condition['action']]
38+
condition_class = self[condition['action']]
3939

4040
# cast values to field's type
4141
def convert_values(field_id, values):
@@ -47,7 +47,7 @@ def convert_values(field_id, values):
4747
convert_values(test['field_id'],
4848
test['values']))
4949
for test in condition['tests']]
50-
yield klass(
50+
yield condition_class(
5151
condition['fields_ids'],
5252
condition['name'],
5353
tests
@@ -66,12 +66,12 @@ class ConditionsMetaClass(type):
6666
"""
6767

6868
def __new__(mcls, name, base, attrs):
69-
klass = super(ConditionsMetaClass, mcls).__new__(
69+
condition_class = super(ConditionsMetaClass, mcls).__new__(
7070
mcls, name, base, attrs
7171
)
7272
if 'action' in attrs:
73-
conditions_register[klass.action] = klass
74-
return klass
73+
conditions_register[condition_class.action] = condition_class
74+
return condition_class
7575

7676

7777
class ConditionTest(object):

formidable/forms/field_builder.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -54,9 +54,9 @@ def get_field_kwargs(self):
5454
return kwargs
5555

5656
def get_widget(self):
57-
klass = self.get_widget_class()
58-
if klass:
59-
return klass(**self.get_widget_kwargs())
57+
widget_class = self.get_widget_class()
58+
if widget_class:
59+
return widget_class(**self.get_widget_kwargs())
6060
return None
6161

6262
def get_widget_class(self):

formidable/register.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,8 @@ class ValidationSerializerRegister(Register):
2727

2828
def load_serializer(register):
2929

30-
def _wrapper(klass):
31-
register[klass.type_id] = klass
32-
return klass
30+
def _wrapper(base_class):
31+
register[base_class.type_id] = base_class
32+
return base_class
3333

3434
return _wrapper

formidable/serializers/fields.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ class FieldListSerializer(NestedListSerializer):
3333

3434
def __init__(self, *args, **kwargs):
3535
kwargs['child'] = LazyChildProxy(field_register)
36-
return super(FieldListSerializer, self).__init__(*args, **kwargs)
36+
super(FieldListSerializer, self).__init__(*args, **kwargs)
3737

3838
def validate(self, validated_data):
3939
"""
@@ -295,7 +295,7 @@ class HelpTextFieldSerializer(FieldSerializer):
295295

296296
class Meta(FieldSerializer.Meta):
297297
# Remove "label" attribute
298-
fields = list(set(BASE_FIELDS) - set(['label']))
298+
fields = list(set(BASE_FIELDS) - {'label'})
299299

300300

301301
@load_serializer(field_register)
@@ -305,7 +305,7 @@ class TitleFieldSerializer(FieldSerializer):
305305

306306
class Meta(FieldSerializer.Meta):
307307
# Remove "description" attribute
308-
fields = list(set(BASE_FIELDS) - set(['description']))
308+
fields = list(set(BASE_FIELDS) - {'description'})
309309

310310

311311
@load_serializer(field_register)
@@ -315,4 +315,4 @@ class SeparatorFieldSerializer(FieldSerializer):
315315

316316
class Meta(FieldSerializer.Meta):
317317
# Remove "description" and "label" attributes
318-
fields = list(set(BASE_FIELDS) - set(['label', 'description']))
318+
fields = list(set(BASE_FIELDS) - {'label', 'description'})

formidable/serializers/list.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,8 @@ def create(self, parent, validated_data):
4545
self.child.create(data)
4646

4747
def _extract_id(self, qs, validated_data):
48-
validated_ids = set([data[self.field_id] for data in validated_data])
49-
db_ids = set([values[0] for values in qs.values_list(self.field_id)])
48+
validated_ids = {data[self.field_id] for data in validated_data}
49+
db_ids = {values[0] for values in qs.values_list(self.field_id)}
5050
updated_ids = validated_ids & db_ids
5151
created_ids = validated_ids - db_ids
5252
deleted_ids = db_ids - validated_ids
@@ -59,7 +59,7 @@ def validate(self, data):
5959
data = super(NestedListSerializer, self).validate(data)
6060

6161
if self.field_id:
62-
if len(data) != len(set(f[self.field_id] for f in data)):
62+
if len(data) != len({f[self.field_id] for f in data}):
6363
msg = 'The fields {field_id} must make a unique set.'.format(
6464
field_id=self.field_id
6565
)

formidable/serializers/validation.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ class ListValidationSerializer(serializers.ListSerializer):
1717

1818
def __init__(self, *args, **kwargs):
1919
kwargs['child'] = LazyChildProxy(validation_register)
20-
return super(ListValidationSerializer, self).__init__(*args, **kwargs)
20+
super(ListValidationSerializer, self).__init__(*args, **kwargs)
2121

2222
def create(self, field, validated_data):
2323
for data in validated_data:

0 commit comments

Comments
 (0)