Completed
Push — master ( c15941...e0da72 )
by Philip
01:29
created

TestJSONSerializer.test_serialize_aware_datetime()   A

Complexity

Conditions 1

Size

Total Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
c 1
b 0
f 0
dl 0
loc 8
rs 9.4285
1
import json
2
import unittest
3
import uuid
4
from datetime import date, datetime
5
6
import pytz
7
8
from foil.serializers import json_serializer
9
10
11
class TestJSONSerializer(unittest.TestCase):
12
13
    def test_serialize_uuid(self):
14
        uid = uuid.uuid4()
15
16
        expected = '"{}"'.format(uid)
17
        result = self._serialize(uid)
18
19
        self.assertEquals(expected, result)
20
21
    def test_serialize_date(self):
22
        d = date(2014, 7, 14)
23
24
        expected = '"{}"'.format(d.strftime('%Y-%m-%d'))
25
        result = self._serialize(d)
26
27
        self.assertEquals(expected, result)
28
29
    def test_serialize_datetime(self):
30
        dt = datetime(2015, 3, 13, 20, 33, 22, 567)
31
32
        expected = '"{}Z"'.format(dt.strftime('%Y-%m-%dT%H:%M:%S.%f'))
33
        result = self._serialize(dt)
34
35
        self.assertEquals(expected, result)
36
37
    def test_serialize_utc_datetime(self):
38
        dt = datetime(2015, 3, 13, 20, 33, 22, 567, tzinfo=pytz.UTC)
39
40
        expected = '"{}Z"'.format(dt.strftime('%Y-%m-%dT%H:%M:%S.%f'))
41
        result = self._serialize(dt)
42
43
        self.assertEqual(expected, result)
44
45
    def test_serialize_aware_datetime(self):
46
        eastern_zone = pytz.timezone('US/Eastern')
47
        dt = eastern_zone.localize(datetime(2015, 3, 13, 20, 33, 22, 567))
48
49
        expected = '"2015-03-13T20:33:22.000567-04:00"'
50
        result = self._serialize(dt)
51
52
        self.assertEqual(expected, result)
53
54
    def _serialize(self, obj):
55
        return json.dumps(obj, default=json_serializer)
56