test_hydrators.py 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. from unittest.mock import Mock
  2. import pytest
  3. from ..hydrators import dehydrate_value, hydrate_value
  4. def test_string_value_can_be_dehydrated_and_hydrated_back():
  5. assert hydrate_value("string", dehydrate_value("string", "test")) == "test"
  6. def test_int_value_is_dehydrated_to_string():
  7. assert dehydrate_value("string", 123) == "123"
  8. def test_bool_false_value_can_be_dehydrated_and_hydrated_back():
  9. assert hydrate_value("bool", dehydrate_value("bool", False)) is False
  10. def test_bool_true_value_can_be_dehydrated_and_hydrated_back():
  11. assert hydrate_value("bool", dehydrate_value("bool", True)) is True
  12. def test_bool_none_value_can_be_dehydrated_and_hydrated_back_to_false():
  13. assert hydrate_value("bool", dehydrate_value("bool", None)) is False
  14. def test_int_value_can_be_dehydrated_and_hydrated_back():
  15. assert hydrate_value("int", dehydrate_value("int", 123)) == 123
  16. def test_empty_int_value_can_be_dehydrated_and_hydrated_back():
  17. assert hydrate_value("int", dehydrate_value("int", 0)) == 0
  18. def test_none_int_value_is_dehydrated_to_zero_string():
  19. assert dehydrate_value("int", None) == "0"
  20. def test_none_int_value_is_hydrated_to_zero():
  21. assert hydrate_value("int", None) == 0
  22. def test_empty_int_value_is_hydrated_to_zero():
  23. assert hydrate_value("int", "") == 0
  24. def test_list_value_can_be_dehydrated_and_hydrated_back():
  25. assert hydrate_value("list", dehydrate_value("list", ["a", "b"])) == ["a", "b"]
  26. def test_single_item_list_value_can_be_dehydrated_and_hydrated_back():
  27. assert hydrate_value("list", dehydrate_value("list", ["a"])) == ["a"]
  28. def test_empty_list_value_can_be_dehydrated_and_hydrated_back():
  29. assert hydrate_value("list", dehydrate_value("list", [])) == []
  30. def test_none_list_value_can_be_dehydrated_and_hydrated_to_empty_list():
  31. assert hydrate_value("list", dehydrate_value("list", None)) == []
  32. def test_empty_list_value_is_hydrated_to_empty_list():
  33. assert hydrate_value("list", "") == []
  34. def test_none_list_value_is_hydrated_to_empty_list():
  35. assert hydrate_value("list", None) == []
  36. def test_none_list_value_is_dehydrated_to_empty_string():
  37. assert dehydrate_value("list", None) == ""
  38. def test_image_value_hydration_is_noop():
  39. image = Mock()
  40. assert hydrate_value("image", image) is image
  41. def test_image_value_dehydration_is_noop():
  42. image = Mock()
  43. assert dehydrate_value("image", image) is image
  44. def test_value_error_is_raised_on_unsupported_type_dehydration():
  45. with pytest.raises(ValueError):
  46. dehydrate_value("unsupported", None)
  47. def test_value_error_is_raised_on_unsupported_type_hydration():
  48. with pytest.raises(ValueError):
  49. hydrate_value("unsupported", None)