/
test_custom.py
85 lines (65 loc) · 3.11 KB
/
test_custom.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
from __future__ import absolute_import, print_function, unicode_literals
import unittest
from collections import OrderedDict
from decimal import Decimal
import mock
import pytz
from drf_braces.fields.custom import (
NonValidatingChoiceField,
PositiveIntegerField,
RoundedDecimalField,
UTCDateTimeField,
UnvalidatedField,
)
class TestUnvalidatedField(unittest.TestCase):
def test_run_validators(self):
validator = mock.MagicMock()
field = UnvalidatedField(validators=[validator])
actual = field.run_validators(mock.sentinel.value)
self.assertIsNone(actual)
self.assertFalse(validator.called)
class TestPositiveIntegerField(unittest.TestCase):
def test_init_default(self):
field = PositiveIntegerField()
self.assertEqual(field.min_value, 0)
def test_init_passed(self):
field = PositiveIntegerField(min_value=mock.sentinel.min_value)
self.assertEqual(field.min_value, mock.sentinel.min_value)
class TestUTCDateTimeField(unittest.TestCase):
def test_init(self):
field = UTCDateTimeField()
self.assertEqual(
getattr(field, 'timezone', getattr(field, 'default_timezone', None)),
pytz.UTC
)
class TestNonValidatingChoiceField(unittest.TestCase):
def test_init(self):
field = NonValidatingChoiceField()
self.assertEqual(field.choices, OrderedDict())
def test_to_internal_value(self):
field = NonValidatingChoiceField(choices=['bar'])
self.assertEqual(field.to_internal_value('bar'), 'bar')
self.assertEqual(field.to_internal_value('haha'), 'haha')
class TestRoundedDecimalField(unittest.TestCase):
def test_init(self):
field = RoundedDecimalField()
self.assertIsNotNone(field.max_digits)
self.assertEqual(field.decimal_places, 2)
def test_to_internal_value(self):
field = RoundedDecimalField()
self.assertEqual(field.to_internal_value(5), Decimal('5'))
self.assertEqual(field.to_internal_value(5.2), Decimal('5.2'))
self.assertEqual(field.to_internal_value(5.23), Decimal('5.23'))
self.assertEqual(field.to_internal_value(5.2345), Decimal('5.23'))
self.assertEqual(field.to_internal_value(5.2356), Decimal('5.24'))
self.assertEqual(field.to_internal_value('5'), Decimal('5'))
self.assertEqual(field.to_internal_value('5.2'), Decimal('5.2'))
self.assertEqual(field.to_internal_value('5.23'), Decimal('5.23'))
self.assertEqual(field.to_internal_value('5.2345'), Decimal('5.23'))
self.assertEqual(field.to_internal_value('5.2356'), Decimal('5.24'))
self.assertEqual(field.to_internal_value(Decimal('5')), Decimal('5'))
self.assertEqual(field.to_internal_value(Decimal('5.2')), Decimal('5.2'))
self.assertEqual(field.to_internal_value(Decimal('5.23')), Decimal('5.23'))
self.assertEqual(field.to_internal_value(Decimal('5.2345')), Decimal('5.23'))
self.assertEqual(field.to_internal_value(Decimal('5.2356')), Decimal('5.24'))
self.assertEqual(field.to_internal_value(Decimal('4.2399')), Decimal('4.24'))