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.
 
 
 

135 lines
5.2 KiB

# Copyright 2016 Jairo Llopis <jairo.llopis@tecnativa.com>
# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl).
import logging
from odoo.tests.common import TransactionCase
_logger = logging.getLogger(__name__)
class ValueConversionCase(TransactionCase):
def setUp(self):
super(ValueConversionCase, self).setUp()
self.agrolait = self.env.ref("base.res_partner_2")
self.tpl = self.env.ref("base_custom_info.tpl_smart")
self.prop_str = self.env.ref("base_custom_info.prop_teacher")
self.prop_int = self.env.ref("base_custom_info.prop_haters")
self.prop_float = self.env.ref("base_custom_info.prop_avg_note")
self.prop_bool = self.env.ref("base_custom_info.prop_smartypants")
self.prop_id = self.env.ref("base_custom_info.prop_weaknesses")
def fill_value(self, prop, value, field="value"):
"""Create a custom info value."""
_logger.info(
"Creating. prop: %s; value: %s; field: %s", prop, value, field)
self.agrolait.custom_info_template_id = self.tpl
self.agrolait._onchange_custom_info_template_id()
if field == "value":
field = "value_%s" % prop.field_type
if prop.field_type == "id" and isinstance(value, str):
value = self.env["custom.info.option"].search([
('property_ids', '=', prop.id),
('name', '=', value)
], limit=1).id
self.assertTrue(value)
self.value = self.agrolait.get_custom_info_value(prop)
self.value[field] = value
def creation_found(self, value):
"""Ensure you can search what you just created."""
prop = self.value.property_id
_logger.info(
"Searching. prop: %s; value: %s", prop, value)
self.assertEqual(
self.value.search([
("property_id", "=", prop.id),
("value", "=", value)]),
self.value)
self.assertEqual(
self.value.search([
("property_id", "=", prop.id),
("value", "in", [value])]),
self.value)
self.assertIs(
self.value.search([
("property_id", "=", prop.id),
("value", "not in", [value])]).id,
False)
def test_to_str(self):
"""Conversion to text."""
self.fill_value(self.prop_str, "Mr. Einstein")
self.creation_found("Mr. Einstein")
self.assertEqual(self.value.value, self.value.value_str)
def test_from_str(self):
"""Conversion from text."""
self.fill_value(self.prop_str, "Mr. Einstein", "value_str")
self.creation_found("Mr. Einstein")
self.assertEqual(self.value.value, self.value.value_str)
def test_to_int(self):
"""Conversion to whole number."""
self.fill_value(self.prop_int, 5)
self.creation_found("5")
self.assertEqual(int(self.value.value), self.value.value_int)
def test_from_int(self):
"""Conversion from whole number."""
self.fill_value(self.prop_int, 5, "value_int")
self.creation_found("5")
self.assertEqual(int(self.value.value), self.value.value_int)
def test_to_float(self):
"""Conversion to decimal number."""
self.fill_value(self.prop_float, 9.5)
self.creation_found("9.5")
self.assertEqual(float(self.value.value), self.value.value_float)
def test_from_float(self):
"""Conversion from decimal number."""
self.fill_value(self.prop_float, 9.5, "value_float")
self.creation_found("9.5")
self.assertEqual(float(self.value.value), self.value.value_float)
def test_to_bool_true(self):
"""Conversion to yes."""
self.fill_value(self.prop_bool, True)
self.creation_found("True")
self.assertEqual(self.value.with_context(lang="en_US").value, "Yes")
self.assertIs(self.value.value_bool, True)
def test_from_bool_true(self):
"""Conversion from yes."""
self.fill_value(self.prop_bool, True, "value_bool")
self.creation_found("True")
self.assertEqual(self.value.with_context(lang="en_US").value, "Yes")
self.assertIs(self.value.value_bool, True)
def test_to_bool_false(self):
"""Conversion to no."""
self.fill_value(self.prop_bool, False)
self.assertEqual(self.value.with_context(lang="en_US").value, "No")
self.assertIs(self.value.value_bool, False)
def test_from_bool_false(self):
"""Conversion from no."""
self.fill_value(self.prop_bool, False, "value_bool")
self.assertEqual(self.value.with_context(lang="en_US").value, "No")
self.assertIs(self.value.value_bool, False)
def test_to_id(self):
"""Conversion to selection."""
self.fill_value(self.prop_id, "Needs videogames")
self.creation_found("Needs videogames")
self.assertEqual(self.value.value, self.value.value_id.name)
def test_from_id(self):
"""Conversion from selection."""
self.fill_value(
self.prop_id,
self.env.ref("base_custom_info.opt_videogames").id,
"value_id")
self.creation_found("Needs videogames")
self.assertEqual(self.value.value, self.value.value_id.name)