test_manage.py 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. # -*- coding: utf-8 -*-
  2. # (c) Nelen & Schuurmans
  3. from unittest import mock
  4. import pytest
  5. from clean_python import Filter
  6. from clean_python import Manage
  7. from clean_python import RootEntity
  8. class User(RootEntity):
  9. name: str
  10. class ManageUser(Manage[User]):
  11. def __init__(self):
  12. self.repo = mock.AsyncMock()
  13. @pytest.fixture
  14. def manage_user():
  15. return ManageUser()
  16. async def test_retrieve(manage_user):
  17. result = await manage_user.retrieve(2)
  18. manage_user.repo.get.assert_awaited_with(2)
  19. assert result is manage_user.repo.get.return_value
  20. async def test_create(manage_user):
  21. result = await manage_user.create({"name": "piet"})
  22. manage_user.repo.add.assert_awaited_once_with({"name": "piet"})
  23. assert result is manage_user.repo.add.return_value
  24. async def test_update(manage_user):
  25. manage_user.repo.get.return_value = User.create(id=2, name="piet")
  26. result = await manage_user.update(2, {"name": "jan"})
  27. manage_user.repo.update.assert_awaited_once_with(2, {"name": "jan"})
  28. assert result is manage_user.repo.update.return_value
  29. async def test_destroy(manage_user):
  30. result = await manage_user.destroy(2)
  31. manage_user.repo.remove.assert_awaited_with(2)
  32. assert result is manage_user.repo.remove.return_value
  33. async def test_list(manage_user):
  34. result = await manage_user.list()
  35. manage_user.repo.all.assert_awaited_once()
  36. assert result is manage_user.repo.all.return_value
  37. async def test_by(manage_user):
  38. result = await manage_user.by("name", "piet")
  39. manage_user.repo.by.assert_awaited_with("name", "piet", params=None)
  40. assert result is manage_user.repo.by.return_value
  41. async def test_filter(manage_user):
  42. filters = [Filter(field="x", values=[1])]
  43. result = await manage_user.filter(filters)
  44. manage_user.repo.filter.assert_awaited_once_with(filters, params=None)
  45. assert result is manage_user.repo.filter.return_value
  46. async def test_count(manage_user):
  47. filters = [Filter(field="x", values=[1])]
  48. result = await manage_user.count(filters)
  49. manage_user.repo.count.assert_awaited_once_with(filters)
  50. assert result is manage_user.repo.count.return_value
  51. async def test_exists(manage_user):
  52. filters = [Filter(field="x", values=[1])]
  53. result = await manage_user.exists(filters)
  54. manage_user.repo.exists.assert_awaited_once_with(filters)
  55. assert result is manage_user.repo.exists.return_value