You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

131 lines
5.0 KiB

  1. # -*- coding: utf-8 -*-
  2. # Copyright 2016 Jairo Llopis <jairo.llopis@tecnativa.com>
  3. # License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl).
  4. import logging
  5. from openerp.tests.common import TransactionCase
  6. _logger = logging.getLogger(__name__)
  7. class ValueConversionCase(TransactionCase):
  8. def setUp(self):
  9. super(ValueConversionCase, self).setUp()
  10. self.agrolait = self.env.ref("base.res_partner_2")
  11. self.tpl = self.env.ref("base_custom_info.tpl_smart")
  12. self.prop_str = self.env.ref("base_custom_info.prop_teacher")
  13. self.prop_int = self.env.ref("base_custom_info.prop_haters")
  14. self.prop_float = self.env.ref("base_custom_info.prop_avg_note")
  15. self.prop_bool = self.env.ref("base_custom_info.prop_smartypants")
  16. self.prop_id = self.env.ref("base_custom_info.prop_weaknesses")
  17. def create_value(self, prop, value, field="value"):
  18. """Create a custom info value."""
  19. _logger.info(
  20. "Creating. prop: %s; value: %s; field: %s", prop, value, field)
  21. self.agrolait.custom_info_template_id = self.tpl
  22. if field == "value":
  23. value = str(value)
  24. self.value = self.env["custom.info.value"].create({
  25. "res_id": self.agrolait.id,
  26. "property_id": prop.id,
  27. field: value,
  28. })
  29. def creation_found(self, value):
  30. """Ensure you can search what you just created."""
  31. prop = self.value.property_id
  32. _logger.info(
  33. "Searching. prop: %s; value: %s", prop, value)
  34. self.assertEqual(
  35. self.value.search([
  36. ("property_id", "=", prop.id),
  37. ("value", "=", value)]),
  38. self.value)
  39. self.assertEqual(
  40. self.value.search([
  41. ("property_id", "=", prop.id),
  42. ("value", "in", [value])]),
  43. self.value)
  44. self.assertIs(
  45. self.value.search([
  46. ("property_id", "=", prop.id),
  47. ("value", "not in", [value])]).id,
  48. False)
  49. def test_to_str(self):
  50. """Conversion to text."""
  51. self.create_value(self.prop_str, "Mr. Einstein")
  52. self.creation_found("Mr. Einstein")
  53. self.assertEqual(self.value.value, self.value.value_str)
  54. def test_from_str(self):
  55. """Conversion from text."""
  56. self.create_value(self.prop_str, "Mr. Einstein", "value_str")
  57. self.creation_found("Mr. Einstein")
  58. self.assertEqual(self.value.value, self.value.value_str)
  59. def test_to_int(self):
  60. """Conversion to whole number."""
  61. self.create_value(self.prop_int, 5)
  62. self.creation_found("5")
  63. self.assertEqual(int(self.value.value), self.value.value_int)
  64. def test_from_int(self):
  65. """Conversion from whole number."""
  66. self.create_value(self.prop_int, 5, "value_int")
  67. self.creation_found("5")
  68. self.assertEqual(int(self.value.value), self.value.value_int)
  69. def test_to_float(self):
  70. """Conversion to decimal number."""
  71. self.create_value(self.prop_float, 10.5)
  72. self.creation_found("10.5")
  73. self.assertEqual(float(self.value.value), self.value.value_float)
  74. def test_from_float(self):
  75. """Conversion from decimal number."""
  76. self.create_value(self.prop_float, 10.5, "value_float")
  77. self.creation_found("10.5")
  78. self.assertEqual(float(self.value.value), self.value.value_float)
  79. def test_to_bool_true(self):
  80. """Conversion to yes."""
  81. self.create_value(self.prop_bool, "True")
  82. self.creation_found("True")
  83. self.assertEqual(self.value.with_context(lang="en_US").value, "Yes")
  84. self.assertIs(self.value.value_bool, True)
  85. def test_from_bool_true(self):
  86. """Conversion from yes."""
  87. self.create_value(self.prop_bool, "True", "value_bool")
  88. self.creation_found("True")
  89. self.assertEqual(self.value.with_context(lang="en_US").value, "Yes")
  90. self.assertIs(self.value.value_bool, True)
  91. def test_to_bool_false(self):
  92. """Conversion to no."""
  93. self.create_value(self.prop_bool, "False")
  94. self.assertEqual(self.value.with_context(lang="en_US").value, "No")
  95. self.assertIs(self.value.value_bool, False)
  96. def test_from_bool_false(self):
  97. """Conversion from no."""
  98. self.create_value(self.prop_bool, False, "value_bool")
  99. self.assertEqual(self.value.with_context(lang="en_US").value, "No")
  100. self.assertIs(self.value.value_bool, False)
  101. def test_to_id(self):
  102. """Conversion to selection."""
  103. self.create_value(self.prop_id, "Needs videogames")
  104. self.creation_found("Needs videogames")
  105. self.assertEqual(self.value.value, self.value.value_id.name)
  106. def test_from_id(self):
  107. """Conversion from selection."""
  108. self.create_value(
  109. self.prop_id,
  110. self.env.ref("base_custom_info.opt_videogames").id,
  111. "value_id")
  112. self.creation_found("Needs videogames")
  113. self.assertEqual(self.value.value, self.value.value_id.name)