base_jsonify: tests use SavepointCase

pull/1829/head
Simone Orsi 2020-05-08 14:00:26 +02:00
parent 45f7f77f5a
commit 63f59c0523
1 changed files with 36 additions and 50 deletions

View File

@ -2,14 +2,40 @@
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import fields from odoo import fields
from odoo.tests.common import TransactionCase from odoo.tests.common import SavepointCase
def jsonify_custom(self, field_name): def jsonify_custom(self, field_name):
return "yeah!" return "yeah!"
class TestParser(TransactionCase): class TestParser(SavepointCase):
@classmethod
def setUpClass(cls):
super().setUpClass()
# disable tracking test suite wise
cls.env = cls.env(context=dict(cls.env.context, tracking_disable=True))
cls.env.user.tz = "Europe/Brussels"
cls.partner = cls.env["res.partner"].create(
{
"name": "Akretion",
"country_id": cls.env.ref("base.fr").id,
"lang": "en_US", # default
"category_id": [(0, 0, {"name": "Inovator"})],
"child_ids": [
(
0,
0,
{
"name": "Sebatien Beau",
"country_id": cls.env.ref("base.fr").id,
},
)
],
"date": fields.Date.from_string("2019-10-31"),
}
)
def test_getting_parser(self): def test_getting_parser(self):
expected_parser = [ expected_parser = [
"name", "name",
@ -46,7 +72,6 @@ class TestParser(TransactionCase):
def test_json_export(self): def test_json_export(self):
# Enforces TZ to validate the serialization result of a Datetime # Enforces TZ to validate the serialization result of a Datetime
self.env.user.tz = "Europe/Brussels"
parser = [ parser = [
"lang", "lang",
"comment", "comment",
@ -69,29 +94,10 @@ class TestParser(TransactionCase):
"create_date", "create_date",
"date", "date",
] ]
partner = self.env["res.partner"].create(
{
"name": "Akretion",
"country_id": self.env.ref("base.fr").id,
"lang": "en_US", # default
"category_id": [(0, 0, {"name": "Inovator"})],
"child_ids": [
(
0,
0,
{
"name": "Sebatien Beau",
"country_id": self.env.ref("base.fr").id,
},
)
],
"date": fields.Date.from_string("2019-10-31"),
}
)
# put our own create date to ease tests # put our own create date to ease tests
self.env.cr.execute( self.env.cr.execute(
"update res_partner set create_date=%s where id=%s", "update res_partner set create_date=%s where id=%s",
("2019-10-31 14:39:49", partner.id), ("2019-10-31 14:39:49", self.partner.id),
) )
expected_json = { expected_json = {
"lang": "en_US", "lang": "en_US",
@ -104,7 +110,7 @@ class TestParser(TransactionCase):
"category_id": [{"name": "Inovator"}], "category_id": [{"name": "Inovator"}],
"children": [ "children": [
{ {
"id": partner.child_ids.id, "id": self.partner.child_ids.id,
"country": {"code": "FR", "name": "France"}, "country": {"code": "FR", "name": "France"},
"children": [], "children": [],
"name": "Sebatien Beau", "name": "Sebatien Beau",
@ -114,42 +120,22 @@ class TestParser(TransactionCase):
"create_date": "2019-10-31T15:39:49+01:00", "create_date": "2019-10-31T15:39:49+01:00",
"date": "2019-10-31", "date": "2019-10-31",
} }
json_partner = partner.jsonify(parser) json_partner = self.partner.jsonify(parser)
self.assertDictEqual(json_partner[0], expected_json) self.assertDictEqual(json_partner[0], expected_json)
# Check that only boolean fields have boolean values into json # Check that only boolean fields have boolean values into json
# By default if a field is not set into Odoo, the value is always False # By default if a field is not set into Odoo, the value is always False
# This value is not the expected one into the json # This value is not the expected one into the json
partner.write({"child_ids": [(6, 0, [])], "active": False, "lang": False}) self.partner.write({"child_ids": [(6, 0, [])], "active": False, "lang": False})
json_partner = partner.jsonify(parser) json_partner = self.partner.jsonify(parser)
expected_json["active"] = False expected_json["active"] = False
expected_json["lang"] = None expected_json["lang"] = None
expected_json["children"] = [] expected_json["children"] = []
self.assertDictEqual(json_partner[0], expected_json) self.assertDictEqual(json_partner[0], expected_json)
def test_json_export_callable_parser(self): def test_json_export_callable_parser(self):
# Enforces TZ to validate the serialization result of a Datetime self.partner.__class__.jsonify_custom = jsonify_custom
partner = self.env["res.partner"].create(
{
"name": "Akretion",
"country_id": self.env.ref("base.fr").id,
"lang": "en_US", # default
"category_id": [(0, 0, {"name": "Inovator"})],
"child_ids": [
(
0,
0,
{
"name": "Sebatien Beau",
"country_id": self.env.ref("base.fr").id,
},
)
],
"date": fields.Date.from_string("2019-10-31"),
}
)
partner.__class__.jsonify_custom = jsonify_custom
parser = [ parser = [
# callable subparser # callable subparser
("name", lambda rec, fname: rec[fname] + " rocks!"), ("name", lambda rec, fname: rec[fname] + " rocks!"),
@ -159,6 +145,6 @@ class TestParser(TransactionCase):
"name": "Akretion rocks!", "name": "Akretion rocks!",
"custom": "yeah!", "custom": "yeah!",
} }
json_partner = partner.jsonify(parser) json_partner = self.partner.jsonify(parser)
self.assertDictEqual(json_partner[0], expected_json) self.assertDictEqual(json_partner[0], expected_json)
del partner.__class__.jsonify_custom del self.partner.__class__.jsonify_custom