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

1"""Tests du sous-client units (synchrone et asynchrone).""" 

2 

3from __future__ import annotations 

4 

5from unittest.mock import AsyncMock, MagicMock 

6 

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 

12 

13 

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]}) 

21 

22 result = sync_client.units.list_units() 

23 

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] 

28 

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] 

35 

36 result = sync_client.units.add(unit) 

37 

38 assert result.id == 10 

39 assert mock_http.request.call_args.args[0] == "POST" 

40 

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) 

46 

47 result = sync_client.units.get(3) 

48 

49 assert result.id == 3 

50 assert result.name == "Heure" 

51 assert "/v1/units/3" in mock_http.request.call_args.args[1] 

52 

53 

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]}) 

61 

62 result = await async_client.units.list_units() 

63 

64 assert result.elements is not None 

65 assert len(result.elements) == 1 

66 assert result.elements[0].name == "Heure" 

67 

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) 

73 

74 result = await async_client.units.get(3) 

75 

76 assert result.id == 3