changes
This commit is contained in:
@@ -0,0 +1 @@
|
||||
from . import test_payslip_to_move
|
||||
@@ -0,0 +1,108 @@
|
||||
from odoo.tests import tagged
|
||||
from odoo.tests.common import TransactionCase
|
||||
|
||||
|
||||
@tagged('post_install', '-at_install')
|
||||
class TestFusionPayrollBridge(TransactionCase):
|
||||
"""Smoke tests for the Fusion payroll bridge.
|
||||
|
||||
Verifies that the field surface required to replace Enterprise's
|
||||
``hr_payroll_account`` is present after the module installs.
|
||||
Full payslip-to-move integration is exercised in a separate
|
||||
integration test that needs a seeded payroll structure.
|
||||
"""
|
||||
|
||||
def test_module_installed(self):
|
||||
module = self.env['ir.module.module'].sudo().search(
|
||||
[('name', '=', 'fusion_accounting_hr_payroll')], limit=1,
|
||||
)
|
||||
self.assertTrue(module, "Module record must exist")
|
||||
self.assertEqual(
|
||||
module.state, 'installed',
|
||||
"Module should be in 'installed' state for these tests to run",
|
||||
)
|
||||
|
||||
def test_salary_rule_has_account_fields(self):
|
||||
rule_model = self.env['hr.salary.rule']
|
||||
for fname in (
|
||||
'account_debit',
|
||||
'account_credit',
|
||||
'fusion_analytic_account_id',
|
||||
'not_computed_in_net',
|
||||
):
|
||||
self.assertIn(
|
||||
fname, rule_model._fields,
|
||||
f"hr.salary.rule must expose '{fname}'",
|
||||
)
|
||||
|
||||
def test_payslip_has_move_link(self):
|
||||
slip_model = self.env['hr.payslip']
|
||||
for fname in ('move_id', 'move_state', 'journal_id'):
|
||||
self.assertIn(
|
||||
fname, slip_model._fields,
|
||||
f"hr.payslip must expose '{fname}'",
|
||||
)
|
||||
self.assertTrue(
|
||||
hasattr(slip_model, '_fusion_create_account_move'),
|
||||
"hr.payslip must expose the _fusion_create_account_move bridge",
|
||||
)
|
||||
self.assertTrue(
|
||||
hasattr(slip_model, '_fusion_enterprise_bridge_active'),
|
||||
"hr.payslip must expose the Enterprise-bridge detector",
|
||||
)
|
||||
|
||||
def test_payslip_run_has_move_link(self):
|
||||
run_model = self.env['hr.payslip.run']
|
||||
for fname in ('move_id', 'move_state'):
|
||||
self.assertIn(
|
||||
fname, run_model._fields,
|
||||
f"hr.payslip.run must expose '{fname}'",
|
||||
)
|
||||
|
||||
def test_company_payroll_journal_field(self):
|
||||
co_model = self.env['res.company']
|
||||
for fname in ('fusion_payroll_journal_id', 'fusion_payroll_auto_post'):
|
||||
self.assertIn(
|
||||
fname, co_model._fields,
|
||||
f"res.company must expose '{fname}'",
|
||||
)
|
||||
|
||||
def test_account_move_back_links(self):
|
||||
move_model = self.env['account.move']
|
||||
for fname in ('payslip_ids', 'payslip_count'):
|
||||
self.assertIn(
|
||||
fname, move_model._fields,
|
||||
f"account.move must expose '{fname}'",
|
||||
)
|
||||
line_model = self.env['account.move.line']
|
||||
self.assertIn(
|
||||
'payslip_id', line_model._fields,
|
||||
"account.move.line must expose 'payslip_id'",
|
||||
)
|
||||
|
||||
def test_payslip_line_has_move_line_link(self):
|
||||
line_model = self.env['hr.payslip.line']
|
||||
self.assertIn(
|
||||
'move_line_id', line_model._fields,
|
||||
"hr.payslip.line must expose 'move_line_id'",
|
||||
)
|
||||
|
||||
def test_enterprise_bridge_detector_returns_bool(self):
|
||||
slip_model = self.env['hr.payslip']
|
||||
self.assertIsInstance(
|
||||
slip_model._fusion_enterprise_bridge_active(), bool,
|
||||
)
|
||||
|
||||
def test_account_journal_payroll_flag(self):
|
||||
journal_model = self.env['account.journal']
|
||||
self.assertIn(
|
||||
'is_payroll_journal', journal_model._fields,
|
||||
"account.journal must expose 'is_payroll_journal'",
|
||||
)
|
||||
|
||||
def test_payroll_structure_journal_field(self):
|
||||
struct_model = self.env['hr.payroll.structure']
|
||||
self.assertIn(
|
||||
'journal_id', struct_model._fields,
|
||||
"hr.payroll.structure must expose 'journal_id'",
|
||||
)
|
||||
Reference in New Issue
Block a user