From 968a35ef8c45c4bf327f3c1de36f312d399ce75d Mon Sep 17 00:00:00 2001 From: Dima Tisnek Date: Thu, 3 Oct 2024 17:14:08 +0900 Subject: [PATCH] chore: mock out everything needed for old idle loop --- juju/unit.py | 4 +++ tests/unit/test_wait_for_idle.py | 57 ++++++++++++++++++++++++++++++-- 2 files changed, 58 insertions(+), 3 deletions(-) diff --git a/juju/unit.py b/juju/unit.py index 6c8b03d82..8a7f953ff 100644 --- a/juju/unit.py +++ b/juju/unit.py @@ -15,6 +15,10 @@ class Unit(model.ModelEntity): + @property + def name(self) -> str: + return self.entity_id + @property def agent_status(self): """Returns the current agent status string. diff --git a/tests/unit/test_wait_for_idle.py b/tests/unit/test_wait_for_idle.py index 4ec750ec5..a43c722c9 100644 --- a/tests/unit/test_wait_for_idle.py +++ b/tests/unit/test_wait_for_idle.py @@ -81,9 +81,35 @@ def status_message(self) -> str: @property def units(self) -> List[Unit]: - 1/0 return self._units + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self._units = [] + + +class UnitFake(Unit): + _agent_status: str = "" + _agent_status_message: str = "" + _workload_status: str = "" + _workload_status_message: str = "" + + @property + def agent_status(self) -> str: + return self._agent_status + + @property + def agent_status_message(self) -> str: + return self._agent_status_message + + @property + def workload_status(self) -> str: + return self._workload_status + + @property + def workload_status_message(self) -> str: + return self._workload_status_message + @pytest.fixture def kwargs() -> Dict[str, Any]: @@ -103,8 +129,33 @@ def kwargs() -> Dict[str, Any]: async def test_something(full_status_response, kwargs: Dict[str, Any]): m = ModelFake() m._response = full_status_response - m._applications["hexanator"] = ApplicationFake("hexanator", m) - m._applications["grafana-agent-k8s"] = ApplicationFake("grafana-agent-k8s", m) + + # FIXME fill these in from response JSON, assert equivalence + app = m._applications["hexanator"] = ApplicationFake("hexanator", m) + app._units.append(u := UnitFake("hexanator/0", m)) + u._agent_status = "FIXME" + u._agent_status_message = "FIXME" + u._workload_status = "FIXME" + u._workload_status_message = "FIXME" + + app = m._applications["grafana-agent-k8s"] = ApplicationFake("grafana-agent-k8s", m) + app._units.append(u := UnitFake("grafana-agent-k8s/0", m)) + u._agent_status = "FIXME" + u._agent_status_message = "FIXME" + u._workload_status = "FIXME" + u._workload_status_message = "FIXME" + + app = m._applications["mysql-test-app"] = ApplicationFake("mysql-test-app", m) + app._units.append(u := UnitFake("mysql-test-app/0", m)) + u._agent_status = "FIXME" + u._agent_status_message = "FIXME" + u._workload_status = "FIXME" + u._workload_status_message = "FIXME" + app._units.append(u := UnitFake("mysql-test-app/1", m)) + u._agent_status = "FIXME" + u._agent_status_message = "FIXME" + u._workload_status = "FIXME" + u._workload_status_message = "FIXME" try: idle = await m._check_idle(**kwargs)