test_hydrators.py 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  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_empty_string_value_is_hydrated_to_empty_string():
  9. assert hydrate_value("string", None) == ""
  10. def test_bool_false_value_can_be_dehydrated_and_hydrated_back():
  11. assert hydrate_value("bool", dehydrate_value("bool", False)) is False
  12. def test_bool_true_value_can_be_dehydrated_and_hydrated_back():
  13. assert hydrate_value("bool", dehydrate_value("bool", True)) is True
  14. def test_bool_none_value_can_be_dehydrated_and_hydrated_back_to_false():
  15. assert hydrate_value("bool", dehydrate_value("bool", None)) is False
  16. def test_int_value_can_be_dehydrated_and_hydrated_back():
  17. assert hydrate_value("int", dehydrate_value("int", 123)) == 123
  18. def test_empty_int_value_can_be_dehydrated_and_hydrated_back():
  19. assert hydrate_value("int", dehydrate_value("int", 0)) == 0
  20. def test_none_int_value_is_dehydrated_to_zero_string():
  21. assert dehydrate_value("int", None) == "0"
  22. def test_none_int_value_is_hydrated_to_zero():
  23. assert hydrate_value("int", None) == 0
  24. def test_empty_int_value_is_hydrated_to_zero():
  25. assert hydrate_value("int", "") == 0
  26. def test_list_value_can_be_dehydrated_and_hydrated_back():
  27. assert hydrate_value("list", dehydrate_value("list", ["a", "b"])) == ["a", "b"]
  28. def test_single_item_list_value_can_be_dehydrated_and_hydrated_back():
  29. assert hydrate_value("list", dehydrate_value("list", ["a"])) == ["a"]
  30. def test_empty_list_value_can_be_dehydrated_and_hydrated_back():
  31. assert hydrate_value("list", dehydrate_value("list", [])) == []
  32. def test_none_list_value_can_be_dehydrated_and_hydrated_to_empty_list():
  33. assert hydrate_value("list", dehydrate_value("list", None)) == []
  34. def test_empty_list_value_is_hydrated_to_empty_list():
  35. assert hydrate_value("list", "") == []
  36. def test_none_list_value_is_hydrated_to_empty_list():
  37. assert hydrate_value("list", None) == []
  38. def test_none_list_value_is_dehydrated_to_empty_string():
  39. assert dehydrate_value("list", None) == ""
  40. def test_image_value_hydration_is_noop():
  41. image = Mock()
  42. assert hydrate_value("image", image) is image
  43. def test_image_value_dehydration_is_noop():
  44. image = Mock()
  45. assert dehydrate_value("image", image) is image
  46. def test_value_error_is_raised_on_unsupported_type_dehydration():
  47. with pytest.raises(ValueError):
  48. dehydrate_value("unsupported", None)
  49. def test_value_error_is_raised_on_unsupported_type_hydration():
  50. with pytest.raises(ValueError):
  51. hydrate_value("unsupported", None)