cashbook/tests/currency.py

87 lines
2.7 KiB
Python
Raw Normal View History

2023-02-26 21:49:21 +00:00
# -*- coding: utf-8 -*-
# This file is part of the cashbook-module from m-ds for Tryton.
# The COPYRIGHT file at the top level of this repository contains the
# full copyright notices and license terms.
from trytond.tests.test_tryton import ModuleTestCase, with_transaction
from trytond.pool import Pool
2023-02-27 19:37:38 +00:00
from trytond.modules.cashbook.model import CACHEKEY_CURRENCY, ENABLE_CACHE
2023-02-26 21:49:21 +00:00
from datetime import date
from decimal import Decimal
import time
class CurrencyTestCase(ModuleTestCase):
'Test cache for currency'
module = 'cashbook'
@with_transaction()
def test_currency_update_cache(self):
""" add/update/del rate of currency, check cache
"""
pool = Pool()
MemCache = pool.get('cashbook.memcache')
Currency = pool.get('currency.currency')
CurrencyRate = pool.get('currency.currency.rate')
self.prep_config()
self.prep_company()
MemCache._cashbook_value_cache.clear_all()
currency, = Currency.search([('name', '=', 'usd')])
cache_key = CACHEKEY_CURRENCY % currency.id
# cache should be empty
self.assertEqual(MemCache.read_value(cache_key), None)
CurrencyRate.delete(currency.rates)
self.assertEqual(len(currency.rates), 0)
# add rate
Currency.write(*[
[currency],
{
'rates': [('create', [{
'date': date(2022, 5, 1),
'rate': Decimal('1.05'),
}])],
}])
self.assertEqual(len(currency.rates), 1)
# expected key
value = '%d-c%s' % (
currency.rates[0].id,
str(currency.rates[0].create_date.timestamp()))
2023-06-02 18:40:12 +00:00
if ENABLE_CACHE is True:
2023-02-27 19:37:38 +00:00
self.assertEqual(MemCache.read_value(cache_key), value)
2023-06-02 18:40:12 +00:00
else:
2023-02-27 19:37:38 +00:00
self.assertEqual(MemCache.read_value(cache_key), None)
2023-02-26 21:49:21 +00:00
time.sleep(1.0)
Currency.write(*[
[currency],
{
2023-06-02 18:40:12 +00:00
'rates': [
('write', [currency.rates[0].id], {
2023-02-26 21:49:21 +00:00
'rate': Decimal('1.06'),
})],
}])
self.assertEqual(len(currency.rates), 1)
value = '%d-w%s' % (
currency.rates[0].id,
str(currency.rates[0].write_date.timestamp()))
2023-06-02 18:40:12 +00:00
if ENABLE_CACHE is True:
2023-02-27 19:37:38 +00:00
self.assertEqual(MemCache.read_value(cache_key), value)
2023-06-02 18:40:12 +00:00
else:
2023-02-27 19:37:38 +00:00
self.assertEqual(MemCache.read_value(cache_key), None)
2023-02-26 21:49:21 +00:00
Currency.write(*[
[currency],
{
'rates': [('delete', [currency.rates[0].id])],
}])
self.assertEqual(MemCache.read_value(cache_key), None)
# end CurrencyTestCase