from __future__ import absolute_import
from celery.contrib.methods import task_method, task
from celery.tests.case import AppCase, patch
class test_task_method(AppCase):
def test_task_method(self):
class X(object):
def __init__(self):
self.state = 0
@self.app.task(shared=False, filter=task_method)
def add(self, x):
self.state += x
x = X()
x.add(2)
self.assertEqual(x.state, 2)
x.add(4)
self.assertEqual(x.state, 6)
self.assertTrue(X.add)
self.assertIs(x.add.__self__, x)
def test_task(self):
with patch('celery.contrib.methods.current_app') as curapp:
fun = object()
task(fun, x=1)
curapp.task.assert_called_with(fun, x=1, filter=task_method)