12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- # Part of Odoo. See LICENSE file for full copyright and licensing details.
- from datetime import datetime, timedelta
- from odoo import fields
- from odoo.tests import common
- from odoo.addons.lunch.tests.common import TestsCommon
- class TestAlarm(TestsCommon):
- @common.users('cle-lunch-manager')
- def test_cron_sync_create(self):
- cron_ny = self.alert_ny.cron_id
- self.assertTrue(cron_ny.active)
- self.assertEqual(cron_ny.name, "Lunch: alert chat notification (New York UTC-5)")
- self.assertEqual(
- [line for line in cron_ny.code.splitlines() if not line.lstrip().startswith("#")],
- ["env['lunch.alert'].browse([%i])._notify_chat()" % self.alert_ny.id])
- self.assertEqual(cron_ny.nextcall, datetime(2021, 1, 29, 15, 0)) # New-york is UTC-5
- tokyo_cron = self.alert_tokyo.cron_id
- self.assertEqual(tokyo_cron.nextcall, datetime(2021, 1, 29, 23, 0)) # Tokyo is UTC+9 but the cron is posponed
- @common.users('cle-lunch-manager')
- def test_cron_sync_active(self):
- cron_ny = self.alert_ny.cron_id
- self.alert_ny.active = False
- self.assertFalse(cron_ny.active)
- self.alert_ny.active = True
- self.assertTrue(cron_ny.active)
- self.alert_ny.mode = 'alert'
- self.assertFalse(cron_ny.active)
- self.alert_ny.mode = 'chat'
- self.assertTrue(cron_ny.active)
- ctx_today = fields.Date.context_today(self.alert_ny, self.fakenow)
- self.alert_ny.until = ctx_today - timedelta(days=1)
- self.assertFalse(cron_ny.active)
- self.alert_ny.until = ctx_today + timedelta(days=2)
- self.assertTrue(cron_ny.active)
- self.alert_ny.until = False
- self.assertTrue(cron_ny.active)
- @common.users('cle-lunch-manager')
- def test_cron_sync_nextcall(self):
- cron_ny = self.alert_ny.cron_id
- old_nextcall = cron_ny.nextcall
- self.alert_ny.notification_time -= 5
- self.assertEqual(cron_ny.nextcall, old_nextcall - timedelta(hours=5) + timedelta(days=1))
- # Simulate cron execution
- cron_ny.sudo().lastcall = old_nextcall - timedelta(hours=5)
- cron_ny.sudo().nextcall += timedelta(days=1)
- self.alert_ny.notification_time += 7
- self.assertEqual(cron_ny.nextcall, old_nextcall + timedelta(days=1, hours=2))
- self.alert_ny.notification_time -= 1
- self.assertEqual(cron_ny.nextcall, old_nextcall + timedelta(days=1, hours=1))
|