Files
suite/hr_payroll_hibou/tests/test_update.py

94 lines
3.8 KiB
Python

import datetime
from odoo import fields
from odoo.exceptions import ValidationError
from odoo.tests import common
class TestUpdate(common.TransactionCase):
def setUp(self):
super().setUp()
# setup the database to run in general
today = datetime.date.today()
tomorrow = today + datetime.timedelta(days=1)
self.param_model = self.env['ir.config_parameter'].sudo()
self.param_model.set_param('database.hibou_professional_expiration_date', fields.Date.to_string(tomorrow))
self.param_model.set_param('database.hibou_professional_code', 'TESTCODE')
def test_01_database_state(self):
today = datetime.date.today()
tomorrow = today + datetime.timedelta(days=1)
yesterday = today - datetime.timedelta(days=1)
self.param_model.set_param('database.hibou_professional_expiration_date', fields.Date.to_string(yesterday))
update = self.env['hr.payroll.publisher.update']\
.with_context(test_payroll_update_result='{"payroll_parameter_values":[]}')\
.create({
'request_modules': 'test',
})
self.assertEqual(update.state, 'draft')
update.button_send()
self.assertEqual(update.state, 'error')
self.param_model.set_param('database.hibou_professional_expiration_date', fields.Date.to_string(tomorrow))
update.button_send()
self.assertEqual(update.state, 'done')
self.assertEqual(update.parameter_codes_retrieved, '')
# Reset to a degree.
update = update.with_context(test_payroll_update_result='{"payroll_parameter_values":[["missing_code", "2021-01-01", "5.0"]]}')
update.write({
'state': 'draft',
'result': '',
})
update.button_send()
self.assertEqual(update.state, 'done')
self.assertEqual(update.parameter_codes_retrieved, 'missing_code (MISSING)')
# Actually add to a rule.
test_parameter = self.env['hr.rule.parameter'].create({
'code': 'test_parameter_1',
'name': 'Test Parameter 1',
})
update = update.with_context(test_payroll_update_result='{"payroll_parameter_values":[["test_parameter_1", "2021-01-01", "5.0"]]}')
update.write({
'state': 'draft',
'result': '',
})
update.button_send()
self.assertEqual(update.state, 'done')
self.assertEqual(update.parameter_codes_retrieved, 'test_parameter_1')
self.assertTrue(test_parameter.parameter_version_ids)
self.assertEqual(test_parameter.parameter_version_ids.parameter_value, '5.0')
self.assertEqual(str(test_parameter.parameter_version_ids.date_from), '2021-01-01')
test_parameter.parameter_version_ids.write({
'parameter_value': '',
})
self.assertEqual(test_parameter.parameter_version_ids.parameter_value, '')
update.write({
'state': 'draft',
'result': '',
})
update.button_send()
# doesn't make a new one, updates existing...
self.assertEqual(test_parameter.parameter_version_ids.parameter_value, '5.0')
# Test that we can lock the parameter
test_parameter.parameter_version_ids.write({
'parameter_value': 'locked',
})
test_parameter.write({
'update_locked': True,
})
self.assertEqual(test_parameter.parameter_version_ids.parameter_value, 'locked')
update.write({
'state': 'draft',
'result': '',
})
update.button_send()
# doesn't make a new one, updates existing...
self.assertEqual(test_parameter.parameter_version_ids.parameter_value, 'locked')
self.assertEqual(update.parameter_codes_retrieved, 'test_parameter_1 (LOCKED)')