Odoo18-Base/addons/account/tests/test_product.py

38 lines
1.6 KiB
Python
Raw Permalink Normal View History

2025-03-10 11:12:23 +07:00
from .common import AccountTestInvoicingCommon
from odoo.tests.common import Form, tagged, new_test_user
from odoo import Command
@tagged("post_install", "-at_install")
class AccountProductCase(AccountTestInvoicingCommon):
@classmethod
def setUpClass(cls, chart_template_ref=None):
super().setUpClass(chart_template_ref)
cls.internal_user = new_test_user(
cls.env, login="internal_user", groups="base.group_user"
)
def test_internal_user_can_read_product_with_tax_and_tags(self):
"""Internal users need read access to products, no matter their taxes."""
# Add a tag to product_a's default tax
self.company_data["company"].country_id = self.env.ref("base.us")
tax_line_tag = self.env["account.account.tag"].create(
{
"name": "Tax tag",
"applicability": "taxes",
"country_id": self.company_data["company"].country_id.id,
}
)
repartition_lines = (
self.product_a.taxes_id.invoice_repartition_line_ids
| self.product_a.taxes_id.refund_repartition_line_ids
).filtered_domain([("repartition_type", "=", "tax")])
repartition_lines.write({"tag_ids": [Command.link(tax_line_tag.id)]})
# Check that internal user can read product_a
with Form(
self.product_a.with_user(self.internal_user).with_context(lang="en_US")
) as form_a:
# The tax string itself is not very important here; we just check
# it has a value and we can read it, so there were no access errors
self.assertTrue(form_a.tax_string)