38 lines
1.8 KiB
Python
38 lines
1.8 KiB
Python
# -*- coding: utf-8 -*-
|
|
from odoo.tests import common
|
|
from unittest.mock import patch
|
|
|
|
|
|
@common.tagged('post_install', '-at_install')
|
|
class TestWebSearchRead(common.TransactionCase):
|
|
|
|
@classmethod
|
|
def setUpClass(cls):
|
|
super().setUpClass()
|
|
cls.ResCurrency = cls.env['res.currency'].with_context(active_test=False)
|
|
cls.max = cls.ResCurrency.search_count([])
|
|
|
|
def assert_web_search_read(self, expected_length, expected_records_length, expected_search_count_called=True,
|
|
**kwargs):
|
|
original_search_count = self.ResCurrency.search_count
|
|
search_count_called = [False]
|
|
|
|
def search_count(obj, *method_args, **method_kwargs):
|
|
search_count_called[0] = True
|
|
return original_search_count(*method_args, **method_kwargs)
|
|
|
|
with patch('odoo.addons.base.models.res_currency.Currency.search_count', new=search_count):
|
|
results = self.ResCurrency.web_search_read(domain=[], specification={'id':{}}, **kwargs)
|
|
|
|
self.assertEqual(results['length'], expected_length)
|
|
self.assertEqual(len(results['records']), expected_records_length)
|
|
self.assertEqual(search_count_called[0], expected_search_count_called)
|
|
|
|
def test_unity_web_search_read(self):
|
|
self.assert_web_search_read(self.max, self.max, expected_search_count_called=False)
|
|
self.assert_web_search_read(self.max, 2, limit=2)
|
|
self.assert_web_search_read(self.max, 2, limit=2, offset=10)
|
|
self.assert_web_search_read(2, 2, limit=2, count_limit=2, expected_search_count_called=False)
|
|
self.assert_web_search_read(20, 2, limit=2, offset=10, count_limit=20)
|
|
self.assert_web_search_read(12, 2, limit=2, offset=10, count_limit=12, expected_search_count_called=False)
|