Skyvern/tests/unit/worker_activity_import_helpers.py
Aaron Perez cfe01b0abe
Some checks failed
Build Skyvern SDK and publish to PyPI / run-ci (push) Blocked by required conditions
Build Skyvern SDK and publish to PyPI / build-sdk (push) Blocked by required conditions
Run tests and pre-commit / Run tests and pre-commit hooks (push) Failing after 6s
Auto Create GitHub Release on Version Change / check-version-change (push) Successful in 1m45s
Run tests and pre-commit / Frontend Lint and Build (push) Successful in 3m48s
Publish Fern Docs / run (push) Failing after 2m43s
Auto Create GitHub Release on Version Change / create-release (push) Has been skipped
Build Skyvern SDK and publish to PyPI / check-version-change (push) Successful in 3m14s
feat: add frontend schedule panel to workflow editor (#SKY-8184) (#5146)
2026-03-19 01:07:30 -07:00

86 lines
3.5 KiB
Python

import importlib
import sys
from types import ModuleType, SimpleNamespace
import pytest
def _install_temporal_activity_stubs(monkeypatch: pytest.MonkeyPatch) -> None:
temporalio_package = ModuleType("temporalio")
temporalio_package.__path__ = []
temporalio_activity = ModuleType("temporalio.activity")
temporalio_activity.defn = lambda fn: fn
temporalio_package.activity = temporalio_activity
monkeypatch.setitem(sys.modules, "temporalio", temporalio_package)
monkeypatch.setitem(sys.modules, "temporalio.activity", temporalio_activity)
def import_cron_worker_activities(monkeypatch: pytest.MonkeyPatch):
cloud_package = ModuleType("cloud")
cloud_package.__path__ = []
cloud_clients = ModuleType("cloud.clients")
cloud_yescaptcha = ModuleType("cloud.clients.yescaptcha")
cloud_yescaptcha_client = ModuleType("cloud.clients.yescaptcha.client")
cloud_config = ModuleType("cloud.config")
cloud_db = ModuleType("cloud.db")
cloud_agent_db = ModuleType("cloud.db.cloud_agent_db")
cloud_tasks = ModuleType("cloud.tasks")
class YescaptchaClient:
def __init__(self, client_key: str) -> None:
self.client_key = client_key
async def update_stuck_tasks_to_timed_out() -> None:
return None
async def update_stuck_workflow_runs_to_timed_out() -> None:
return None
cloud_yescaptcha_client.YescaptchaClient = YescaptchaClient
cloud_config.settings = SimpleNamespace(
ENABLE_YESCAPTCHA_BALANCE_ALERT=False,
YESCAPTCHA_API_KEY="",
)
cloud_agent_db.cloud_db = SimpleNamespace()
cloud_tasks.update_stuck_tasks_to_timed_out = update_stuck_tasks_to_timed_out
cloud_tasks.update_stuck_workflow_runs_to_timed_out = update_stuck_workflow_runs_to_timed_out
monkeypatch.setitem(sys.modules, "cloud", cloud_package)
monkeypatch.setitem(sys.modules, "cloud.clients", cloud_clients)
monkeypatch.setitem(sys.modules, "cloud.clients.yescaptcha", cloud_yescaptcha)
monkeypatch.setitem(sys.modules, "cloud.clients.yescaptcha.client", cloud_yescaptcha_client)
monkeypatch.setitem(sys.modules, "cloud.config", cloud_config)
monkeypatch.setitem(sys.modules, "cloud.db", cloud_db)
monkeypatch.setitem(sys.modules, "cloud.db.cloud_agent_db", cloud_agent_db)
monkeypatch.setitem(sys.modules, "cloud.tasks", cloud_tasks)
_install_temporal_activity_stubs(monkeypatch)
sys.modules.pop("workers.cron_worker.activities", None)
return importlib.import_module("workers.cron_worker.activities")
def import_temporal_v2_worker_activities(monkeypatch: pytest.MonkeyPatch):
cloud_package = ModuleType("cloud")
cloud_package.__path__ = []
cloud_services = ModuleType("cloud.services")
data_scrubber_module = ModuleType("cloud.services.data_scrubber_service")
worker_utils_module = ModuleType("workers.worker_utils")
class DataScrubber:
pass
async def activity_teardown() -> None:
return None
data_scrubber_module.DataScrubber = DataScrubber
worker_utils_module.activity_teardown = activity_teardown
monkeypatch.setitem(sys.modules, "cloud", cloud_package)
monkeypatch.setitem(sys.modules, "cloud.services", cloud_services)
monkeypatch.setitem(sys.modules, "cloud.services.data_scrubber_service", data_scrubber_module)
monkeypatch.setitem(sys.modules, "workers.worker_utils", worker_utils_module)
_install_temporal_activity_stubs(monkeypatch)
sys.modules.pop("workers.temporal_v2_worker.activities", None)
return importlib.import_module("workers.temporal_v2_worker.activities")