[FIX] website_sale_aplicoop: activate the languages the tests use

The request env of the tests is in es_ES (and eu, ca, gl, pt, fr, it in the
multilang ones), but a fresh database such as the CI's only has en_US active
and env.lang raises "Invalid language code". The tests now activate them,
so the multilang cases run instead of being skipped.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
GitHub Copilot 2026-10-04 15:04:50 +02:00
parent fbd43bb459
commit 1960f40301
Signed by: snt
GPG key ID: A9FD34930EADBE71

View file

@ -23,7 +23,6 @@ from datetime import timedelta
from types import SimpleNamespace
from unittest.mock import patch
from odoo.exceptions import UserError
from odoo.tests.common import TransactionCase
from odoo.addons.website_sale_aplicoop.controllers.website_sale import (
@ -34,6 +33,16 @@ REQUEST_PATCH_TARGET = (
"odoo.addons.website_sale_aplicoop.controllers.website_sale.request"
)
# Languages the tests put in the request env. A fresh database (the CI's) only
# has en_US active, and `env.lang` raises "Invalid language code" for the rest.
TEST_LANGS = ("es_ES", "eu_ES", "ca_ES", "gl_ES", "pt_PT", "fr_FR", "it_IT")
def _activate_test_langs(env):
"""Activate TEST_LANGS: no translations are loaded, only the codes."""
for lang in TEST_LANGS:
env["res.lang"]._activate_lang(lang)
def _env_with_lang(env, lang):
"""Return a cloned environment with language context set."""
@ -59,9 +68,8 @@ def _build_request_mock(env, payload=None, website=None):
"""
if website is None:
# `pricelist_id` is what the pricing helpers read now that Eskaera
# prices with the standard website pricelist. Ordered by id on
# purpose: the multilang cases build an env whose language is not
# installed, and the default order is by the translated `name`.
# prices with the standard website pricelist. Ordered by id so the
# pick does not depend on the translated `name` of each language.
website = SimpleNamespace(
pricelist_id=env["product.pricelist"]
.sudo()
@ -364,6 +372,7 @@ class TestProcessCartItems(TransactionCase):
def setUp(self):
super().setUp()
_activate_test_langs(self.env)
self.controller = AplicoopWebsiteSale()
# Create test products
@ -525,6 +534,7 @@ class TestBuildConfirmationMessage(TransactionCase):
def setUp(self):
super().setUp()
_activate_test_langs(self.env)
self.controller = AplicoopWebsiteSale()
self.user = self.env.ref("base.user_admin")
self.partner = self.env.ref("base.partner_admin")
@ -562,16 +572,11 @@ class TestBuildConfirmationMessage(TransactionCase):
):
request_mock = _build_request_mock(_env_with_lang(self.env, lang))
with patch(REQUEST_PATCH_TARGET, request_mock):
try:
return self.controller._build_confirmation_message(
sale_order or self.sale_order,
group_order or self.group_order,
is_delivery=is_delivery,
)
except UserError as err:
if "Invalid language code" in str(err):
self.skipTest(str(err))
raise
return self.controller._build_confirmation_message(
sale_order or self.sale_order,
group_order or self.group_order,
is_delivery=is_delivery,
)
def test_build_confirmation_message_pickup(self):
"""Test confirmation message for pickup (not delivery)."""
@ -669,6 +674,7 @@ class TestConfirmEskaera_Integration(TransactionCase):
def setUp(self):
super().setUp()
_activate_test_langs(self.env)
self.controller = AplicoopWebsiteSale()
self.consumer_group = self.env["res.partner"].create(
{