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)
 |