def test_register_serializer(): # Making sure we have a clear registry before writing stuff to it ejson.cleanup_registry() dict(ejson.REGISTRY).should.be.equal({}) # Registering our first serializer for a custom object @ejson.register_serializer(Person) def serialize_person(instance): return { 'name': instance.name, 'age': instance.age, } ejson.REGISTRY.should.have.length_of(1) ejson.REGISTRY[Person].should.be.equal(serialize_person) # Testing the serializer registry with the python data type @ejson.register_serializer(datetime) def serialize_datetime(instance): return instance.isoformat() ejson.REGISTRY.should.have.length_of(2) ejson.REGISTRY[datetime].should.be.equal(serialize_datetime) # Now, testing the cleanup_registry function for real ejson.cleanup_registry() dict(ejson.REGISTRY).should.be.equal({})
def test_serialization_with_custom_object(): ejson.cleanup_registry() value = Person('Lincoln', 25) # Before registering ejson.dumps.when.called_with(value).should.throw( TypeError, 'Person("Lincoln", 25) is not JSON serializable') # After registering @ejson.register_serializer(Person) def serialize_person(instance): return {"name": instance.name, "age": instance.age} ejson.dumps(value).should.be.equals( '{"__class__": "tests.test_ejson.Person", "__value__": {"age": 25, "name": "Lincoln"}}')
def test_serialization_with_datetime(): ejson.cleanup_registry() value = {'dt': datetime(2012, 8, 22, 3, 44, 05)} # Before registering ejson.dumps.when.called_with(value).should.throw( TypeError, 'datetime.datetime(2012, 8, 22, 3, 44, 5) is not JSON serializable') # After registering @ejson.register_serializer(datetime) def serialize_datetime(instance): return instance.isoformat() ejson.dumps(value).should.be.equals( '{"dt": {"__class__": "datetime.datetime", "__value__": "2012-08-22T03:44:05"}}')