Odoo18-Base/addons/l10n_ph/tests/common.py
2025-01-06 10:57:38 +07:00

84 lines
3.1 KiB
Python

# Part of Odoo. See LICENSE file for full copyright and licensing details.
import io
import unittest
try:
from openpyxl import load_workbook
except ImportError:
load_workbook = None
from odoo.addons.account.tests.common import AccountTestInvoicingCommon
class TestPhCommon(AccountTestInvoicingCommon):
@classmethod
@AccountTestInvoicingCommon.setup_country('ph')
def setUpClass(cls):
super().setUpClass()
cls.company_data['company'].write({
'name': 'Test Company',
'street': '8 Super Street',
'city': 'Super City',
'zip': '8888',
'country_id': cls.env.ref('base.ph').id,
'vat': '123-456-789-123',
})
cls.partner_a.write({
'name': 'Test Partner',
'street': '9 Super Street',
'city': 'Super City',
'zip': '8888',
'country_id': cls.env.ref('base.ph').id,
'vat': '789-456-123-789',
})
cls.partner_b.write({
'name': 'Test Partner Company',
'street': '10 Super Street',
'city': 'Super City',
'zip': '8888',
'country_id': cls.env.ref('base.ph').id,
'is_company': True,
'vat': '789-456-123-456',
})
cls.partner_c = cls.env['res.partner'].create({
'name': 'Test Partner Company Member',
'first_name': 'John',
'middle_name': 'Doe',
'last_name': 'Smith',
'property_payment_term_id': cls.pay_terms_b.id,
'property_supplier_payment_term_id': cls.pay_terms_b.id,
'property_account_position_id': cls.fiscal_pos_a.id,
'property_account_receivable_id': cls.company_data['default_account_receivable'].copy().id,
'property_account_payable_id': cls.company_data['default_account_payable'].copy().id,
'street': '11 Super Street',
'city': 'Super City',
'zip': '8888',
'country_id': cls.env.ref('base.ph').id,
'vat': '789-456-123-123',
'company_id': False,
'parent_id': cls.partner_b.id,
})
def _test_xlsx_file(self, file_content, expected_values):
""" Takes in the binary content of a xlsx file and a dict of expected values.
It will then parse the file in order to compare the values with the expected ones.
The expected values dict format is:
'row_number': ['cell_1_val', 'cell_2_val', ...]
:param file_content: The binary content of the xlsx file
:param expected_values: The dict of expected values
"""
if load_workbook is None:
raise unittest.SkipTest("openpyxl not available")
report_file = io.BytesIO(file_content)
xlsx = load_workbook(filename=report_file, data_only=True)
sheet = xlsx.worksheets[0]
sheet_values = list(sheet.values)
for row, values in expected_values.items():
row_values = [v if v is not None else '' for v in sheet_values[row]]
for row_value, expected_value in zip(row_values, values):
self.assertEqual(row_value, expected_value)