summaryrefslogtreecommitdiff
path: root/addons/hr_contract/tests
diff options
context:
space:
mode:
authorJeremy Kersten <jke@odoo.com>2017-08-28 14:06:23 +0200
committerJeremy Kersten <jke@odoo.com>2017-08-28 15:40:41 +0200
commit5d3cbf4d7a2223afcfc8ed61457b8f6843e41c81 (patch)
treee1b74223cd9994a190ed4fbe085dcf28fc366b1f /addons/hr_contract/tests
parent4ac347735d4de252678b557afab7cac3c3eb75de (diff)
[FIX] hr_contract: fix auto pending/auto close
Before this commit, create a contract which expire in 2 months. The cron will check all contracts that have a date_end >= tomorrow. All contract with a end_date will be close. Now we check all contracts that have a end_date <= yesterday and close it
Diffstat (limited to 'addons/hr_contract/tests')
-rw-r--r--addons/hr_contract/tests/__init__.py4
-rw-r--r--addons/hr_contract/tests/test_auto_status.py54
2 files changed, 58 insertions, 0 deletions
diff --git a/addons/hr_contract/tests/__init__.py b/addons/hr_contract/tests/__init__.py
new file mode 100644
index 00000000000..6f1832811c2
--- /dev/null
+++ b/addons/hr_contract/tests/__init__.py
@@ -0,0 +1,4 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+from . import test_auto_status
diff --git a/addons/hr_contract/tests/test_auto_status.py b/addons/hr_contract/tests/test_auto_status.py
new file mode 100644
index 00000000000..010524924d3
--- /dev/null
+++ b/addons/hr_contract/tests/test_auto_status.py
@@ -0,0 +1,54 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+from datetime import datetime
+from odoo.tests.common import TransactionCase
+from dateutil.relativedelta import relativedelta
+
+
+class TestHrContracts(TransactionCase):
+
+ def setUp(self):
+ super(TestHrContracts, self).setUp()
+ self.contracts = self.env['hr.contract'].with_context(tracking_disable=True)
+ self.employee = self.env.ref('hr.employee_root')
+ self.test_contract = dict(name='Test', wage=1, employee_id=self.employee.id, state='open')
+
+ def apply_cron(self):
+ self.env.ref('hr_contract.ir_cron_data_contract_update_to_pending').method_direct_trigger()
+ self.env.ref('hr_contract.ir_cron_data_contract_update_to_close').method_direct_trigger()
+
+ def test_contract_enddate(self):
+ self.test_contract.update(dict(date_end=datetime.now() + relativedelta(days=100)))
+ self.contract = self.contracts.create(self.test_contract)
+ self.apply_cron()
+ self.assertEquals(self.contract.state, 'open')
+
+ self.test_contract.update(dict(date_end=datetime.now() + relativedelta(days=5)))
+ self.contract.write(self.test_contract)
+ self.apply_cron()
+ self.assertEquals(self.contract.state, 'pending')
+
+ self.test_contract.update({
+ 'date_start': datetime.now() + relativedelta(days=-50),
+ 'date_end': datetime.now() + relativedelta(days=-1),
+ 'state': 'pending',
+ })
+ self.contract.write(self.test_contract)
+ self.apply_cron()
+ self.assertEquals(self.contract.state, 'close')
+
+ def test_contract_pending_visa_expire(self):
+ self.employee.visa_expire = datetime.now() + relativedelta(days=30)
+ self.test_contract.update(dict(date_end=False))
+ self.contract = self.contracts.create(self.test_contract)
+ self.apply_cron()
+ self.assertEquals(self.contract.state, 'pending')
+
+ self.employee.visa_expire = datetime.now() + relativedelta(days=-5)
+ self.test_contract.update({
+ 'date_start': datetime.now() + relativedelta(days=-50),
+ 'state': 'pending',
+ })
+ self.contract.write(self.test_contract)
+ self.apply_cron()
+ self.assertEquals(self.contract.state, 'close')