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