# -*- coding: utf-8 -*- import datetime import uuid from decimal import Decimal from raven.utils.testutils import TestCase from raven.utils import json class JSONTest(TestCase): def test_uuid(self): res = uuid.uuid4() json.dumps(res) == '"%s"' % res.hex def test_datetime(self): res = datetime.datetime(day=1, month=1, year=2011, hour=1, minute=1, second=1) assert json.dumps(res) == '"2011-01-01T01:01:01Z"' def test_set(self): res = set(['foo', 'bar']) assert json.dumps(res) in ('["foo", "bar"]', '["bar", "foo"]') def test_frozenset(self): res = frozenset(['foo', 'bar']) assert json.dumps(res) in ('["foo", "bar"]', '["bar", "foo"]') def test_unknown_type(self): class Unknown(object): def __repr__(self): return 'Unknown object' obj = Unknown() assert json.dumps(obj) == '"Unknown object"' def test_unknown_type_with_repr_error(self): class Unknown(object): def __repr__(self): raise Exception obj = Unknown() s = json.dumps(obj) assert isinstance(s, str) assert 'Unknown object at 0x' in s def test_decimal(self): d = {'decimal': Decimal('123.45')} assert json.dumps(d) == '{"decimal": "Decimal(\'123.45\')"}'