test_publish_videos_from_discovery.py 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. from __future__ import annotations
  2. from unittest.mock import MagicMock, patch
  3. from supply_infra.scheduler.jobs.publish_videos_from_discovery import (
  4. publish_videos_from_discovery,
  5. )
  6. from supply_infra.services.video_discovery_service import PublishableCandidate
  7. @patch("supply_infra.scheduler.jobs.publish_videos_from_discovery.AigcClient")
  8. @patch(
  9. "supply_infra.scheduler.jobs.publish_videos_from_discovery.get_video_discovery_service"
  10. )
  11. @patch(
  12. "supply_infra.scheduler.jobs.publish_videos_from_discovery.list_unique_plan_pairs"
  13. )
  14. def test_publish_marks_candidates_when_bind_fails(
  15. mock_plan_pairs,
  16. mock_get_service,
  17. mock_client_cls,
  18. ) -> None:
  19. mock_plan_pairs.return_value = [
  20. type(
  21. "Plan",
  22. (),
  23. {
  24. "label": "plan-a",
  25. "produce_plan_id": "produce-1",
  26. "publish_plan_id": "publish-1",
  27. },
  28. )()
  29. ]
  30. mock_get_service.return_value = MagicMock(
  31. list_publishable_candidates=MagicMock(
  32. return_value=[PublishableCandidate(id=1, aweme_id="71234567890123450")]
  33. ),
  34. mark_candidates_aigc_plans=MagicMock(return_value=1),
  35. )
  36. mock_client_cls.return_value = MagicMock(
  37. create_video_crawler_plan=MagicMock(
  38. return_value={
  39. "success": True,
  40. "crawler_plan_id": "crawler-1",
  41. "crawler_plan_name": "test-plan",
  42. }
  43. ),
  44. bind_crawler_to_produce_plan=MagicMock(
  45. return_value={"success": False, "error": "bind failed"}
  46. ),
  47. )
  48. result = publish_videos_from_discovery(biz_dt="20260728")
  49. assert result["failed_batch_count"] == 1
  50. mock_get_service.return_value.mark_candidates_aigc_plans.assert_called_once()
  51. call_kwargs = (
  52. mock_get_service.return_value.mark_candidates_aigc_plans.call_args.kwargs
  53. )
  54. assert call_kwargs["crawler_plan_id"] == "crawler-1"
  55. assert call_kwargs["plan_label"].startswith("BIND_FAILED:")