# [DEF:backend.tests.test_resource_service:Module] # @TIER: STANDARD # @PURPOSE: Contract-driven tests for ResourceService # @RELATION: TESTS -> backend.src.services.resource_service import pytest from unittest.mock import MagicMock, patch from src.services.resource_service import ResourceService @pytest.mark.asyncio async def test_get_dashboards_with_status(): # [DEF:test_get_dashboards_with_status:Function] # @TEST: ResourceService correctly enhances dashboard data # @PRE: SupersetClient returns raw dashboards # @POST: Returned dicts contain git_status and last_task with patch("src.services.resource_service.SupersetClient") as mock_client, \ patch("src.services.resource_service.GitService") as mock_git: service = ResourceService() # Mock Superset response mock_client.return_value.get_dashboards_summary.return_value = [ {"id": 1, "title": "Test Dashboard", "slug": "test"} ] # Mock Git status mock_git.return_value.get_repo.return_value = None # No repo # Mock tasks mock_task = MagicMock() mock_task.id = "task-123" mock_task.status = "RUNNING" mock_task.params = {"resource_id": "dashboard-1"} env = MagicMock() env.id = "prod" result = await service.get_dashboards_with_status(env, [mock_task]) assert len(result) == 1 assert result[0]["id"] == 1 assert "git_status" in result[0] assert result[0]["last_task"]["task_id"] == "task-123" assert result[0]["last_task"]["status"] == "RUNNING" # [/DEF:backend.tests.test_resource_service:Module]