diff options
| author | Danilo M. <danix@danix.xyz> | 2026-07-03 17:46:25 +0200 |
|---|---|---|
| committer | Danilo M. <danix@danix.xyz> | 2026-07-03 17:46:25 +0200 |
| commit | e0843da28eaa5828665a700b8a06f7fe1e27d2b8 (patch) | |
| tree | 4c462d157c0d2885574d2871594788951ca30f56 /tests/unit | |
| parent | 5d4d393a0de8a6c429a34dc1a51cde4e703cc033 (diff) | |
| download | firefly-cli-e0843da28eaa5828665a700b8a06f7fe1e27d2b8.tar.gz firefly-cli-e0843da28eaa5828665a700b8a06f7fe1e27d2b8.zip | |
feat(budget): delete, enable, disable
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Diffstat (limited to 'tests/unit')
| -rw-r--r-- | tests/unit/test_commands_budget.py | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/tests/unit/test_commands_budget.py b/tests/unit/test_commands_budget.py index 26e9dae..0b1d89c 100644 --- a/tests/unit/test_commands_budget.py +++ b/tests/unit/test_commands_budget.py @@ -3,6 +3,7 @@ import unittest from unittest.mock import MagicMock from types import SimpleNamespace import firefly_cli.commands.budget as budget +from firefly_cli.errors import FireflyError def _ctx(client=None, resolver=None): @@ -82,5 +83,41 @@ class TestBudgetSpent(unittest.TestCase): self.assertEqual(captured["rows"][0]["spent"], "-15.00") +class TestBudgetLifecycle(unittest.TestCase): + def _resolver(self): + r = MagicMock() + r.budget.return_value = {"id": "5", "name": "Rent"} + return r + + def test_delete_requires_yes(self): + args = SimpleNamespace(ref="Rent", yes=False) + with self.assertRaises(FireflyError): + budget.cmd_delete(args, _ctx(resolver=self._resolver())) + + def test_delete_with_yes_calls_delete(self): + client = MagicMock() + args = SimpleNamespace(ref="Rent", yes=True) + rc = budget.cmd_delete(args, _ctx(client=client, resolver=self._resolver())) + self.assertEqual(rc, 0) + client.request.assert_called_with("DELETE", "/api/v1/budgets/5") + + def test_enable_sets_active_true(self): + client = MagicMock() + client.request.return_value = {"data": {"id": "5", "attributes": {}}} + args = SimpleNamespace(ref="Rent") + budget.cmd_enable(args, _ctx(client=client, resolver=self._resolver())) + method, path = client.request.call_args[0][:2] + body = client.request.call_args[1]["body"] + self.assertEqual((method, path), ("PUT", "/api/v1/budgets/5")) + self.assertTrue(body["active"]) + + def test_disable_sets_active_false(self): + client = MagicMock() + client.request.return_value = {"data": {"id": "5", "attributes": {}}} + args = SimpleNamespace(ref="Rent") + budget.cmd_disable(args, _ctx(client=client, resolver=self._resolver())) + self.assertFalse(client.request.call_args[1]["body"]["active"]) + + if __name__ == "__main__": unittest.main() |
