"""Regression test: ensure worker.generate_video Celery task is bound to the real generate_video function, not a helper introduced above it. Context (P0 incident 2026-08-23): a refactor inserted helper function _sync_task_config_to_plan directly under the @celery_app.task decorator, so Celery registered the helper as "worker.generate_video". Calling the task with a single task_id raised TypeError and every generation job failed immediately. This test pins the decorator target. """ from __future__ import annotations import inspect def test_generate_video_task_registered_under_expected_name(): from worker_app.tasks.generation import generate_video # Celery task object exposes its registered name assert generate_video.name == "worker.generate_video" def test_generate_video_task_signature_has_task_id(): from worker_app.tasks.generation import generate_video # For bind=True tasks Celery binds self at call time, so run() signature # starts directly with task_id (verified on Celery 5.x). sig = inspect.signature(generate_video.run) params = list(sig.parameters) assert params[0] == "task_id", f"expected task_id as first param, got {params}" def test_sync_task_config_to_plan_is_plain_function(): """Helper must NOT be registered as a Celery task.""" from worker_app.tasks.generation import _sync_task_config_to_plan assert not hasattr( _sync_task_config_to_plan, "run" ), "_sync_task_config_to_plan must be a plain function, not a Celery task"