[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 types import SimpleNamespace
from unittest.mock import patch from unittest.mock import patch
from odoo.exceptions import UserError
from odoo.tests.common import TransactionCase from odoo.tests.common import TransactionCase
from odoo.addons.website_sale_aplicoop.controllers.website_sale import ( 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" "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): def _env_with_lang(env, lang):
"""Return a cloned environment with language context set.""" """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: if website is None:
# `pricelist_id` is what the pricing helpers read now that Eskaera # `pricelist_id` is what the pricing helpers read now that Eskaera
# prices with the standard website pricelist. Ordered by id on # prices with the standard website pricelist. Ordered by id so the
# purpose: the multilang cases build an env whose language is not # pick does not depend on the translated `name` of each language.
# installed, and the default order is by the translated `name`.
website = SimpleNamespace( website = SimpleNamespace(
pricelist_id=env["product.pricelist"] pricelist_id=env["product.pricelist"]
.sudo() .sudo()
@ -364,6 +372,7 @@ class TestProcessCartItems(TransactionCase):
def setUp(self): def setUp(self):
super().setUp() super().setUp()
_activate_test_langs(self.env)
self.controller = AplicoopWebsiteSale() self.controller = AplicoopWebsiteSale()
# Create test products # Create test products
@ -525,6 +534,7 @@ class TestBuildConfirmationMessage(TransactionCase):
def setUp(self): def setUp(self):
super().setUp() super().setUp()
_activate_test_langs(self.env)
self.controller = AplicoopWebsiteSale() self.controller = AplicoopWebsiteSale()
self.user = self.env.ref("base.user_admin") self.user = self.env.ref("base.user_admin")
self.partner = self.env.ref("base.partner_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)) request_mock = _build_request_mock(_env_with_lang(self.env, lang))
with patch(REQUEST_PATCH_TARGET, request_mock): with patch(REQUEST_PATCH_TARGET, request_mock):
try: return self.controller._build_confirmation_message(
return self.controller._build_confirmation_message( sale_order or self.sale_order,
sale_order or self.sale_order, group_order or self.group_order,
group_order or self.group_order, is_delivery=is_delivery,
is_delivery=is_delivery, )
)
except UserError as err:
if "Invalid language code" in str(err):
self.skipTest(str(err))
raise
def test_build_confirmation_message_pickup(self): def test_build_confirmation_message_pickup(self):
"""Test confirmation message for pickup (not delivery).""" """Test confirmation message for pickup (not delivery)."""
@ -669,6 +674,7 @@ class TestConfirmEskaera_Integration(TransactionCase):
def setUp(self): def setUp(self):
super().setUp() super().setUp()
_activate_test_langs(self.env)
self.controller = AplicoopWebsiteSale() self.controller = AplicoopWebsiteSale()
self.consumer_group = self.env["res.partner"].create( self.consumer_group = self.env["res.partner"].create(
{ {