80 lines
2.9 KiB
Python
80 lines
2.9 KiB
Python
# -*- coding: utf-8 -*-
|
|
# copyright 2016 Camptocamp
|
|
# license agpl-3.0 or later (http://www.gnu.org/licenses/agpl.html)
|
|
|
|
from datetime import datetime, date
|
|
import json
|
|
|
|
from odoo.tests import common
|
|
from odoo.addons.queue_job.fields import JobEncoder, JobDecoder
|
|
|
|
|
|
class TestJson(common.TransactionCase):
|
|
|
|
def test_encoder_recordset(self):
|
|
demo_user = self.env.ref('base.user_demo')
|
|
partner = self.env(user=demo_user).ref('base.main_partner')
|
|
value = ['a', 1, partner]
|
|
value_json = json.dumps(value, cls=JobEncoder)
|
|
expected = ["a", 1, {
|
|
"uid": demo_user.id,
|
|
"_type": "odoo_recordset",
|
|
"model": "res.partner",
|
|
"ids": [partner.id],
|
|
}]
|
|
self.assertEqual(json.loads(value_json), expected)
|
|
|
|
def test_decoder_recordset(self):
|
|
demo_user = self.env.ref('base.user_demo')
|
|
partner = self.env(user=demo_user).ref('base.main_partner')
|
|
value_json = (
|
|
'["a", 1, '
|
|
'{"_type": "odoo_recordset",'
|
|
'"model": "res.partner",'
|
|
'"ids": [%s],"uid": %s}]' % (partner.id, demo_user.id)
|
|
)
|
|
expected = ['a', 1, partner]
|
|
value = json.loads(value_json, cls=JobDecoder, env=self.env)
|
|
self.assertEqual(value, expected)
|
|
self.assertEqual(demo_user, expected[2].env.user)
|
|
|
|
def test_decoder_recordset_without_user(self):
|
|
value_json = ('["a", 1, {"_type": "odoo_recordset",'
|
|
'"model": "res.users", "ids": [1]}]')
|
|
expected = ['a', 1, self.env.ref('base.user_root')]
|
|
value = json.loads(value_json, cls=JobDecoder, env=self.env)
|
|
self.assertEqual(value, expected)
|
|
|
|
def test_encoder_datetime(self):
|
|
value = ['a', 1, datetime(2017, 4, 19, 8, 48, 50, 1)]
|
|
value_json = json.dumps(value, cls=JobEncoder)
|
|
expected = [
|
|
"a", 1,
|
|
{"_type": "datetime_isoformat",
|
|
"value": "2017-04-19T08:48:50.000001"}
|
|
]
|
|
self.assertEqual(json.loads(value_json), expected)
|
|
|
|
def test_decoder_datetime(self):
|
|
value_json = ('["a", 1, {"_type": "datetime_isoformat",'
|
|
'"value": "2017-04-19T08:48:50.000001"}]')
|
|
expected = ['a', 1, datetime(2017, 4, 19, 8, 48, 50, 1)]
|
|
value = json.loads(value_json, cls=JobDecoder, env=self.env)
|
|
self.assertEqual(value, expected)
|
|
|
|
def test_encoder_date(self):
|
|
value = ['a', 1, date(2017, 4, 19)]
|
|
value_json = json.dumps(value, cls=JobEncoder)
|
|
expected = [
|
|
"a", 1,
|
|
{"_type": "date_isoformat", "value": "2017-04-19"}
|
|
]
|
|
self.assertEqual(json.loads(value_json), expected)
|
|
|
|
def test_decoder_date(self):
|
|
value_json = ('["a", 1, {"_type": "date_isoformat",'
|
|
'"value": "2017-04-19"}]')
|
|
expected = ['a', 1, date(2017, 4, 19)]
|
|
value = json.loads(value_json, cls=JobDecoder, env=self.env)
|
|
self.assertEqual(value, expected)
|