def test_datetime_serialization(): utc_datetime = datetime.datetime.utcnow() s = json.dumps(datatypes.DateTime(utc_datetime), cls=datatypes.JSONEncoder) assert json.loads(s) == { '_type': 'datetime', 'utc_datetime': utc_datetime.strftime(datatypes.DateTime.FORMAT_STRING) }
def test_datetime_valid_data(): schema = { 'type': 'object', 'properties': { 'test': datatypes.DateTime.JSON_SCHEMA } } data = {'test': datatypes.DateTime(datetime.datetime.utcnow())} raw_data = json.loads(json.dumps(data, cls=datatypes.JSONEncoder)) jsonschema.validate(raw_data, schema)
def test_datetime_between_excluding(objects): utc_datetime = datetime.datetime.utcnow() object1 = objects.create_object(action_id=0, data={'dt': datatypes.DateTime(utc_datetime)}, schema={}, user_id=0) objects.create_object(action_id=0, data={'dt': datatypes.DateTime(utc_datetime - datetime.timedelta(days=1))}, schema={}, user_id=0) assert [] == objects.get_current_objects(lambda data: where_filters.datetime_between(data['dt'], datatypes.DateTime(utc_datetime - datetime.timedelta(days=1)), datatypes.DateTime(utc_datetime), including=False)) assert [object1] == objects.get_current_objects(lambda data: where_filters.datetime_between(data['dt'], datatypes.DateTime(utc_datetime - datetime.timedelta(days=1)), datatypes.DateTime(utc_datetime + datetime.timedelta(days=1)), including=False))
def test_datetime_greater_than_equals(objects): utc_datetime = datetime.datetime.utcnow() object1 = objects.create_object(action_id=0, data={'dt': datatypes.DateTime(utc_datetime)}, schema={}, user_id=0) assert [object1] == objects.get_current_objects(lambda data: where_filters.datetime_greater_than_equals(data['dt'], datatypes.DateTime(utc_datetime))) assert [object1] == objects.get_current_objects(lambda data: where_filters.datetime_greater_than_equals(data['dt'], datatypes.DateTime(utc_datetime - datetime.timedelta(seconds=1))))
def test_datetime_equals(): utc_datetime = datetime.datetime.utcnow() assert datatypes.DateTime(utc_datetime) == datatypes.DateTime(utc_datetime) assert datatypes.DateTime(utc_datetime) != datatypes.DateTime( utc_datetime + datetime.timedelta(days=1))
def test_datetime_deserialization(): utc_datetime = datetime.datetime.utcnow() s = json.dumps(datatypes.DateTime(utc_datetime), cls=datatypes.JSONEncoder) dt = json.loads(s, object_hook=datatypes.JSONEncoder.object_hook) # The datetime objects are stored with a precision of 1 second assert abs(dt.utc_datetime - utc_datetime) < datetime.timedelta(seconds=1)