def test_without_request(self, monkeypatch): async_result = pretend.stub() super_class = pretend.stub( apply_async=pretend.call_recorder(lambda *a, **kw: async_result), ) real_super = __builtins__["super"] inner_super = pretend.call_recorder(lambda *a, **kw: super_class) def fake_super(*args, **kwargs): if not args and not kwargs: return inner_super(*args, **kwargs) else: return real_super(*args, **kwargs) monkeypatch.setitem(__builtins__, "super", fake_super) get_current_request = pretend.call_recorder(lambda: None) monkeypatch.setattr(celery, "get_current_request", get_current_request) task = celery.WarehouseTask() task.app = Celery() assert task.apply_async() is async_result assert super_class.apply_async.calls == [pretend.call()] assert get_current_request.calls == [pretend.call()] assert inner_super.calls == [pretend.call()]
def test_call(self, monkeypatch): request = pretend.stub() registry = pretend.stub() result = pretend.stub() prepared = { "registry": registry, "request": request, "closer": pretend.call_recorder(lambda: None) } prepare = pretend.call_recorder(lambda *a, **kw: prepared) monkeypatch.setattr(scripting, "prepare", prepare) @pretend.call_recorder def runner(irequest): assert irequest is request return result task = celery.WarehouseTask() task.app = Celery() task.app.pyramid_config = pretend.stub(registry=registry) task.run = runner assert task() is result assert prepare.calls == [pretend.call(registry=registry)] assert prepared["closer"].calls == [pretend.call()] assert runner.calls == [pretend.call(request)]
def test_after_commit_hook(self, monkeypatch, success): args = [pretend.stub(), pretend.stub()] kwargs = {"foo": pretend.stub(), "bar": pretend.stub()} super_class = pretend.stub( apply_async=pretend.call_recorder(lambda *a, **kw: None), ) real_super = __builtins__["super"] inner_super = pretend.call_recorder(lambda *a, **kw: super_class) def fake_super(*args, **kwargs): if not args and not kwargs: return inner_super(*args, **kwargs) else: return real_super(*args, **kwargs) monkeypatch.setitem(__builtins__, "super", fake_super) task = celery.WarehouseTask() task.app = Celery() task._after_commit_hook(success, *args, **kwargs) if success: assert inner_super.calls == [pretend.call()] else: assert inner_super.calls == []
def test_request_after_commit(self, monkeypatch): manager = pretend.stub( addAfterCommitHook=pretend.call_recorder(lambda *a, **kw: None), ) request = pretend.stub( tm=pretend.stub(get=pretend.call_recorder(lambda: manager)), ) get_current_request = pretend.call_recorder(lambda: request) monkeypatch.setattr(celery, "get_current_request", get_current_request) task = celery.WarehouseTask() task.app = Celery() args = (pretend.stub(), pretend.stub()) kwargs = {"foo": pretend.stub()} assert task.apply_async(*args, **kwargs) is None assert get_current_request.calls == [pretend.call()] assert request.tm.get.calls == [pretend.call()] assert manager.addAfterCommitHook.calls == [ pretend.call(task._after_commit_hook, args=args, kws=kwargs), ]
def test_call(self, monkeypatch, uses_request): request = pretend.stub() registry = pretend.stub() result = pretend.stub() prepared = { "registry": registry, "request": request, "closer": pretend.call_recorder(lambda: None) } prepare = pretend.call_recorder(lambda *a, **kw: prepared) monkeypatch.setattr(scripting, "prepare", prepare) tm_tween_factory = pretend.call_recorder(lambda h, r: h) monkeypatch.setattr(celery, "tm_tween_factory", tm_tween_factory) if uses_request: @pretend.call_recorder def runner(irequest): assert irequest is request return result else: @pretend.call_recorder def runner(): return result task = celery.WarehouseTask() task.app = Celery() task.app.pyramid_config = pretend.stub(registry=registry) task.pyramid = uses_request task.run = runner assert task() is result assert prepare.calls == [pretend.call(registry=registry)] assert tm_tween_factory.calls == [pretend.call(mock.ANY, registry)] assert prepared["closer"].calls == [pretend.call()] if uses_request: assert runner.calls == [pretend.call(request)] else: assert runner.calls == [pretend.call()]