Files
enterprise-addons/l10n_au_hr_payroll_api/tests/test_onboarding.py
T

100 lines
4.1 KiB
Python

# Part of Odoo. See LICENSE file for full copyright and licensing details.
from datetime import date
from odoo.exceptions import UserError, ValidationError, RedirectWarning
from odoo.tests import tagged, Form
from odoo.addons.l10n_au_hr_payroll_account.tests.common import L10nPayrollAccountCommon
from .common import TestL10nAUPayrollAPICommon
@tagged("post_install_l10n", "post_install", "-at_install", "l10n_au_hr_payroll")
class TestPayrollOnboardingAPI(L10nPayrollAccountCommon, TestL10nAUPayrollAPICommon):
@classmethod
def setUpClass(cls):
super().setUpClass()
cls.env['ir.sequence'].create({
'name': 'STP Sequence',
'code': 'stp.transaction',
'prefix': 'PAYEVENT0004',
'padding': 10,
'number_next': 1,
})
cls.company.write({
"vat": "85658499097",
"email": "au_company@odoo.com",
"phone": "123456789",
"zip": "2000",
'l10n_au_branch_code': '100',
})
cls.env['ir.config_parameter'].sudo().set_param('l10n_au_payroll_iap.test_endpoint', 'http://127.0.0.1:8070')
cls.proxy_user = cls.env['account_edi_proxy_client.user']._register_proxy_user(cls.company, 'l10n_au_payroll', 'demo')
cls.proxy_user.edi_mode = 'test'
assert cls.company.l10n_au_payroll_mode == 'test'
def test_payroll_without_onboarding(self):
""" Test that the company can register payroll without going through onboarding """
with self.assertRaises(UserError):
payrun = self._prepare_payslip_run(self.employee_1 + self.employee_2)
self._register_company()
payrun = self._prepare_payslip_run(self.employee_1 + self.employee_2)
stp = self.env["l10n_au.stp"].search([("payslip_batch_id", "=", payrun.id)])
stp.submit_date = date.today()
with self.mock_stp_requests():
self._submit_stp(stp)
def test_payroll_onboarding_constrains(self):
# Check all constrains of the onboarding
with self.assertRaises(ValidationError):
self.env.ref("l10n_au_hr_payroll_api.l10n_au_payroll_odoo_disclaimer").unlink()
self.env.ref("l10n_au_hr_payroll_api.l10n_au_payroll_superchoice_dda").unlink()
def action_next(wizard):
action = wizard.save().action_next()
return Form.from_action(self.env, action)
# Payroll responsible
wizard = Form.from_action(self.env, self.company.action_view_payroll_onboarding())
registration = wizard._record.registration_id
self.assertEqual(registration.status, "pending")
wizard.payroll_responsible_id = self.employee_1
wizard = action_next(wizard)
# Authorisation confirmation
self.assertEqual(wizard.stage, "authorised")
with self.assertRaises(ValidationError):
wizard.authorised = "no"
action_next(wizard)
wizard.authorised = "yes"
wizard = action_next(wizard)
# Company details
self.assertEqual(wizard.stage, "company")
wizard = action_next(wizard)
# Bank details
self.assertEqual(wizard.stage, "bank")
with self.assertRaises(RedirectWarning):
self.company_bank_account.aba_bsb = False
wizard.journal_id = self.bank_journal
action_next(wizard)
wizard.journal_id = self.bank_journal
wizard = action_next(wizard)
# Sign documents
self.assertEqual(wizard.stage, "sign_docs")
with self.assertRaises(ValidationError, msg="You must accept the Odoo Terms & Conditions to proceed."):
wizard._record.action_next()
wizard.odoo_disclaimer_check = True
wizard.superchoice_dda_check = True
with self.mock_register_request():
wizard.save().action_next()
self.assertTrue(self.company.l10n_au_bms_id)
self.assertEqual(registration.status, "registered")
self.assertEqual(self.company.l10n_au_stp_responsible_id, self.employee_1)
self.assertEqual(self.company.l10n_au_hr_super_responsible_id, self.employee_1)