Coverage for tests/test_units.py: 100%
36 statements
« prev ^ index » next coverage.py v7.14.1, created at 2026-06-05 11:17 +0200
« prev ^ index » next coverage.py v7.14.1, created at 2026-06-05 11:17 +0200
1"""Tests du sous-client units (synchrone et asynchrone)."""
3from __future__ import annotations
5from unittest.mock import AsyncMock, MagicMock
7from henrri_connect.connect import (
8 AsyncHenrriClient, SyncHenrriClient, # type: ignore[import]
9)
10from henrri_connect.models import Unit
11from tests.conftest import UNIT_JSON, make_response
14class TestSyncUnits:
15 """Tests du sous-client units (synchrone)."""
16 def test_list_retourne_unites(
17 self, sync_client: SyncHenrriClient, mock_http: MagicMock
18 ) -> None:
19 """Test de la méthode list_units()."""
20 mock_http.request.return_value = make_response({"elements": [UNIT_JSON]})
22 result = sync_client.units.list_units()
24 assert result.elements is not None
25 assert len(result.elements) == 1
26 assert result.elements[0].name == "Heure"
27 assert "/v1/units" in mock_http.request.call_args.args[1]
29 def test_add_cree_unite(
30 self, sync_client: SyncHenrriClient, mock_http: MagicMock
31 ) -> None:
32 """Test de la méthode add_unit()."""
33 mock_http.request.return_value = make_response({**UNIT_JSON, "id": 10})
34 unit = Unit(name="Jour", unit_kind="Specific") # type: ignore[call-arg]
36 result = sync_client.units.add(unit)
38 assert result.id == 10
39 assert mock_http.request.call_args.args[0] == "POST"
41 def test_get_retourne_unite(
42 self, sync_client: SyncHenrriClient, mock_http: MagicMock
43 ) -> None:
44 """Test de la méthode get_unit()."""
45 mock_http.request.return_value = make_response(UNIT_JSON)
47 result = sync_client.units.get(3)
49 assert result.id == 3
50 assert result.name == "Heure"
51 assert "/v1/units/3" in mock_http.request.call_args.args[1]
54class TestAsyncUnits:
55 """Tests du sous-client units (asynchrone)."""
56 async def test_list_retourne_unites(
57 self, async_client: AsyncHenrriClient, mock_async_http: AsyncMock
58 ) -> None:
59 """Test de la méthode list_units()."""
60 mock_async_http.request.return_value = make_response({"elements": [UNIT_JSON]})
62 result = await async_client.units.list_units()
64 assert result.elements is not None
65 assert len(result.elements) == 1
66 assert result.elements[0].name == "Heure"
68 async def test_get_retourne_unite(
69 self, async_client: AsyncHenrriClient, mock_async_http: AsyncMock
70 ) -> None:
71 """Test de la méthode get_unit()."""
72 mock_async_http.request.return_value = make_response(UNIT_JSON)
74 result = await async_client.units.get(3)
76 assert result.id == 3