61 lines
2.1 KiB
Python
61 lines
2.1 KiB
Python
from odoo.tests.common import TransactionCase
|
|
from odoo.tests import tagged
|
|
|
|
|
|
@tagged('post_install', '-at_install')
|
|
class TestFusionFollowupTextCache(TransactionCase):
|
|
|
|
@classmethod
|
|
def setUpClass(cls):
|
|
super().setUpClass()
|
|
cls.partner = cls.env['res.partner'].create({'name': 'Cache Test Partner'})
|
|
cls.level = cls.env['fusion.followup.level'].create({
|
|
'name': 'Reminder', 'sequence': 401, 'delay_days': 7, 'tone': 'gentle',
|
|
})
|
|
cls.cache = cls.env['fusion.followup.text.cache']
|
|
|
|
def _kwargs(self, **overrides):
|
|
base = dict(
|
|
partner_id=self.partner.id, level_id=self.level.id,
|
|
overdue_amount=1234.56, longest_overdue_days=10,
|
|
invoice_count=3, tone='gentle',
|
|
)
|
|
base.update(overrides)
|
|
return base
|
|
|
|
def test_fingerprint_stable_and_unique(self):
|
|
fp1 = self.cache.compute_fingerprint(**self._kwargs())
|
|
fp2 = self.cache.compute_fingerprint(**self._kwargs())
|
|
fp3 = self.cache.compute_fingerprint(**self._kwargs(tone='firm'))
|
|
self.assertEqual(fp1, fp2)
|
|
self.assertNotEqual(fp1, fp3)
|
|
self.assertEqual(len(fp1), 64)
|
|
|
|
def test_lookup_returns_empty_when_missing(self):
|
|
result = self.cache.lookup(**self._kwargs())
|
|
self.assertFalse(result)
|
|
|
|
def test_lookup_finds_cached_entry(self):
|
|
kwargs = self._kwargs()
|
|
fp = self.cache.compute_fingerprint(**kwargs)
|
|
entry = self.cache.create({
|
|
'partner_id': self.partner.id,
|
|
'level_id': self.level.id,
|
|
'fingerprint': fp,
|
|
'subject': 'Hi',
|
|
'body': 'Please pay.',
|
|
'tone_used': 'gentle',
|
|
})
|
|
found = self.cache.lookup(**kwargs)
|
|
self.assertEqual(found.id, entry.id)
|
|
|
|
def test_action_increment_use(self):
|
|
entry = self.cache.create({
|
|
'partner_id': self.partner.id,
|
|
'fingerprint': 'abc123',
|
|
})
|
|
self.assertEqual(entry.use_count, 0)
|
|
entry.action_increment_use()
|
|
entry.action_increment_use()
|
|
self.assertEqual(entry.use_count, 2)
|