mirror of
https://github.com/bringout/oca-technical.git
synced 2026-04-18 12:32:01 +02:00
60 lines
2.5 KiB
Python
60 lines
2.5 KiB
Python
# Copyright 2019 - Eficent http://www.eficent.com/
|
|
# Copyright 2019 Serpent Consulting Services Pvt. Ltd.
|
|
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
|
|
|
|
from odoo.exceptions import UserError
|
|
|
|
from odoo.addons.payroll.tests.test_hr_payroll_cancel import TestHrPayrollCancel
|
|
|
|
|
|
class TestHrPayslipChangeState(TestHrPayrollCancel):
|
|
def setUp(self):
|
|
super(TestHrPayslipChangeState, self).setUp()
|
|
self.tested_model = self.env["hr.payslip.change.state"]
|
|
|
|
def test_change_state(self):
|
|
hr_payslip = self._create_payslip()
|
|
tested_model = self.tested_model
|
|
context = {"active_ids": [hr_payslip.id]}
|
|
action = tested_model.with_context(context).create({"state": "verify"})
|
|
# By default, a payslip is on draft state
|
|
action.change_state_confirm()
|
|
# trying to set it to wrong states
|
|
with self.assertRaises(UserError):
|
|
action.write({"state": "draft"})
|
|
action.change_state_confirm()
|
|
# Now the payslip should be computed but in verify state
|
|
self.assertEqual(hr_payslip.state, "verify")
|
|
self.assertNotEqual(hr_payslip.number, None)
|
|
action.write({"state": "done"})
|
|
action.change_state_confirm()
|
|
# Now the payslip should be confirmed
|
|
self.assertEqual(hr_payslip.state, "done")
|
|
# trying to set it to wrong states
|
|
with self.assertRaises(UserError):
|
|
action.write({"state": "draft"})
|
|
action.change_state_confirm()
|
|
with self.assertRaises(UserError):
|
|
action.write({"state": "verify"})
|
|
action.change_state_confirm()
|
|
with self.assertRaises(UserError):
|
|
action.write({"state": "done"})
|
|
action.change_state_confirm()
|
|
action.write({"state": "cancel"})
|
|
action.change_state_confirm()
|
|
# Now the payslip should be canceled
|
|
self.assertEqual(hr_payslip.state, "cancel")
|
|
# trying to set it to wrong states
|
|
with self.assertRaises(UserError):
|
|
action.write({"state": "done"})
|
|
action.change_state_confirm()
|
|
with self.assertRaises(UserError):
|
|
action.write({"state": "verify"})
|
|
action.change_state_confirm()
|
|
with self.assertRaises(UserError):
|
|
action.write({"state": "cancel"})
|
|
action.change_state_confirm()
|
|
action.write({"state": "draft"})
|
|
action.change_state_confirm()
|
|
# again, it should be draft. Also checking if wrong changes happened
|
|
self.assertEqual(hr_payslip.state, "draft")
|