Skip to content

Instantly share code, notes, and snippets.

@nvbn
Last active April 29, 2016 23:06
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nvbn/9850072ab8195bcee0108e8e86ca6550 to your computer and use it in GitHub Desktop.
Save nvbn/9850072ab8195bcee0108e8e86ca6550 to your computer and use it in GitHub Desktop.
from google.appengine.api import datastore_types
from mock import patch
from freezegun import freeze_time as _freeze_time
from freezegun.api import FakeDatetime
class freeze_time(object):
def __init__(self, *args, **kwargs):
self._gae_patch = patch(
'google.appengine.ext.db.DateTimeProperty.data_type',
new=FakeDatetime)
self._freeze = _freeze_time(*args, **kwargs)
datastore_types._VALIDATE_PROPERTY_VALUES[FakeDatetime] = \
datastore_types.ValidatePropertyNothing
datastore_types._PACK_PROPERTY_VALUES[FakeDatetime] = \
datastore_types.PackDatetime
datastore_types._PROPERTY_MEANINGS[FakeDatetime] = \
datastore_types.entity_pb.Property.GD_WHEN
def start(self):
self._freeze.start()
self._gae_patch.start()
def stop(self):
self._freeze.stop()
self._gae_patch.stop()
def __enter__(self):
return self.start()
def __exit__(self, *args):
self.stop()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment