|
|
# Copyright 2017 ACSONE SA/NV # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import fields from odoo.tests.common import TransactionCase
class TestParser(TransactionCase):
def test_getting_parser(self): expected_parser = [
'name', 'active', 'credit_limit', 'color', ('category_id', ['name']), ('country_id', ['name', 'code']), ('child_ids', [ 'name', 'id', 'email', ('country_id', ['name', 'code']), ('child_ids', ['name']), ]), 'lang', 'comment' ]
exporter = self.env.ref('base_jsonify.ir_exp_partner') parser = exporter.get_json_parser() self.assertListEqual(parser, expected_parser)
# modify an ir.exports_line to put an alias for a field self.env.ref('base_jsonify.category_id_name').write({ 'alias': 'category_id:category/name' }) expected_parser[4] = ('category_id:category', ['name']) parser = exporter.get_json_parser() self.assertEqual(parser, expected_parser)
def test_json_export(self): parser = [ 'lang', 'comment', 'credit_limit', 'name', 'color', ('child_ids:children', [ ('child_ids:children', ['name']), 'email', ('country_id:country', ['code', 'name']), 'name', 'id', ]), ('country_id:country', ['code', 'name']), 'active', ('category_id', ['name']), 'create_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.today() }) expected_json = { 'lang': 'en_US', 'comment': None, 'credit_limit': 0.0, 'name': 'Akretion', 'color': 0, 'country': { 'code': 'FR', 'name': 'France' }, 'active': True, 'category_id': [ {'name': 'Inovator'} ], 'children': [{ 'id': partner.child_ids.id, 'country': { 'code': 'FR', 'name': 'France' }, 'children': [], 'name': 'Sebatien Beau', 'email': None }], 'create_date': fields.Datetime.to_string(partner.create_date), 'date': fields.Date.to_string(partner.date) } json_partner = partner.jsonify(parser)
self.assertDictEqual(json_partner[0], expected_json)
json_partner = partner.jsonify(parser)
self.assertDictEqual(json_partner[0], expected_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 # This value is not the expected one into the json partner.write({'child_ids': [(6, 0, [])], 'active': False, 'lang': False}) json_partner = partner.jsonify(parser) expected_json['active'] = False expected_json['lang'] = None expected_json['children'] = [] self.assertDictEqual(json_partner[0], expected_json)
|