def test_to_task_with_payload(self): """Ensure to_task with a payload produces the right task object.""" import datetime import time from google.appengine.ext import testbed from furious.batcher import Message testbed = testbed.Testbed() testbed.activate() # This just drops the microseconds. It is a total mess, but is needed # to handle all the rounding crap. eta = datetime.datetime.now() + datetime.timedelta(minutes=43) eta_posix = time.mktime(eta.timetuple()) task_args = {'eta': eta_posix, 'payload': [1, 2, 3]} options = {'task_args': task_args} task = Message.from_dict(options).to_task() # App Engine sets these headers by default. full_headers = { 'Host': 'testbed.example.com', 'X-AppEngine-Current-Namespace': '' } self.assertEqual(eta_posix, task.eta_posix) self.assertEqual(full_headers, task.headers) self.assertEqual(task_args['payload'], json.loads(task.payload))
def test_reconstitution(self): """Ensure to_dict(job.from_dict()) returns the same thing.""" from furious.batcher import Message task_args = {'other': 'zzz', 'nested': 1} options = {'task_args': task_args} message = Message.from_dict(options) self.assertEqual(options, message.to_dict())
def test_from_dict(self): """Ensure from_dict returns the correct Message object.""" from furious.batcher import Message task_args = {'other': 'zzz', 'nested': 1} options = {'task_args': task_args} message = Message.from_dict(options) self.assertEqual(task_args, message.get_task_args())
def test_reconstitution(self, get_uuid): """Ensure to_dict(job.from_dict()) returns the same thing.""" from furious.batcher import Message _id = "id" get_uuid.return_value.hex = _id task_args = {'other': 'zzz', 'nested': 1} options = {'id': _id, 'task_args': task_args} message = Message.from_dict(options) self.assertEqual(options, message.to_dict())
def test_to_task_without_payload(self): """Ensure to_task without a payload produces the right task object.""" from google.appengine.ext import testbed from furious.batcher import Message testbed = testbed.Testbed() testbed.activate() options = {'task_args': {}} task = Message.from_dict(options).to_task() # App Engine sets these headers by default. full_headers = { 'Host': 'testbed.example.com', 'X-AppEngine-Current-Namespace': '' } self.assertEqual(full_headers, task.headers) self.assertIsNone(json.loads(task.payload))