1# -*- coding: utf-8 -*- 2# Part of Odoo. See LICENSE file for full copyright and licensing details. 3 4from unittest.mock import patch 5 6from odoo import fields 7from odoo.tests.common import TransactionCase 8 9 10class TestIrCron(TransactionCase): 11 12 def setUp(self): 13 super(TestIrCron, self).setUp() 14 15 self.cron = self.env['ir.cron'].create({ 16 'name': 'TestCron', 17 'model_id': self.env.ref('base.model_res_partner').id, 18 'state': 'code', 19 'code': 'model.search([("name", "=", "TestCronRecord")]).write({"name": "You have been CRONWNED"})', 20 'interval_number': 1, 21 'interval_type': 'days', 22 'numbercall': -1, 23 'doall': False, 24 }) 25 self.test_partner = self.env['res.partner'].create({ 26 'name': 'TestCronRecord' 27 }) 28 self.test_partner2 = self.env['res.partner'].create({ 29 'name': 'NotTestCronRecord' 30 }) 31 32 def test_cron_direct_trigger(self): 33 self.assertFalse(self.cron.lastcall) 34 self.assertEqual(self.test_partner.name, 'TestCronRecord') 35 self.assertEqual(self.test_partner2.name, 'NotTestCronRecord') 36 37 def patched_now(*args, **kwargs): 38 return '2020-10-22 08:00:00' 39 40 with patch('odoo.fields.Datetime.now', patched_now): 41 self.cron.method_direct_trigger() 42 43 self.assertEqual(fields.Datetime.to_string(self.cron.lastcall), '2020-10-22 08:00:00') 44 self.assertEqual(self.test_partner.name, 'You have been CRONWNED') 45 self.assertEqual(self.test_partner2.name, 'NotTestCronRecord') 46