40 lines
1.2 KiB
Python
40 lines
1.2 KiB
Python
|
# -*- coding: utf-8 -*-
|
||
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||
|
|
||
|
from odoo.tests.common import TransactionCase
|
||
|
from odoo.tools import get_cache_key_counter
|
||
|
|
||
|
|
||
|
class TestOrmcache(TransactionCase):
|
||
|
def test_ormcache(self):
|
||
|
""" Test the effectiveness of the ormcache() decorator. """
|
||
|
IMD = self.env['ir.model.data']
|
||
|
XMLID = 'base.group_no_one'
|
||
|
|
||
|
# retrieve the cache, its key and stat counter
|
||
|
cache, key, counter = get_cache_key_counter(IMD._xmlid_lookup, XMLID)
|
||
|
hit = counter.hit
|
||
|
miss = counter.miss
|
||
|
|
||
|
# clear the caches of ir.model.data, retrieve its key and
|
||
|
IMD.clear_caches()
|
||
|
self.assertNotIn(key, cache)
|
||
|
|
||
|
# lookup some reference
|
||
|
self.env.ref(XMLID)
|
||
|
self.assertEqual(counter.hit, hit)
|
||
|
self.assertEqual(counter.miss, miss + 1)
|
||
|
self.assertIn(key, cache)
|
||
|
|
||
|
# lookup again
|
||
|
self.env.ref(XMLID)
|
||
|
self.assertEqual(counter.hit, hit + 1)
|
||
|
self.assertEqual(counter.miss, miss + 1)
|
||
|
self.assertIn(key, cache)
|
||
|
|
||
|
# lookup again
|
||
|
self.env.ref(XMLID)
|
||
|
self.assertEqual(counter.hit, hit + 2)
|
||
|
self.assertEqual(counter.miss, miss + 1)
|
||
|
self.assertIn(key, cache)
|