Files
odoo_source/addons/website/tests/test_iap.py
T
Louis Baudoux 7416acc111 [FIX] iap,website: avoid the creation of IAP accounts during testing
Previously, any call to `IapAccount.get` during testing would lead to
the creation of a new `iap.account` record as this was done in a
separate transaction which is commited.

As we don't want any database modification resulting from a test
execution, we will now check if we're in test mode or not.
During testing, a new account will be created in the current transaction
so that it can be properly rollbacked at the end of the tests.

This commit also modifies how the `iap_jsonrpc` function is disabled
during testing as the old implementation used some pretty obscure
manipulations of the `BaseCase` class.

The tests of the `website` module needed to be updated to take those
changes into account.

closes odoo/odoo#122663

Signed-off-by: Florian Daloze (fda) <fda@odoo.com>
2023-06-22 15:41:00 +02:00

35 lines
1.8 KiB
Python

# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
import threading
from unittest.mock import patch
import odoo.tests
@odoo.tests.tagged('website_nightly', '-standard')
class TestIap(odoo.tests.HttpCase):
def test_01_industries_lang(self):
"""Ensure that the industries are translated in all the languages
supported by the configurator."""
def _get_industries(lang):
# Calls to IAP are disabled during testing, we need to remove the testing flag to let it perform the calls
with patch.object(threading.current_thread(), 'testing', False):
industries = self.env['website']._website_api_rpc('/api/website/1/configurator/industries', {'lang': lang})['industries']
return {industry['id']: industry['label'] for industry in industries}
english_terms = _get_industries('en')
# Check that every languages are different from english.
for lang in ['ar', 'de', 'es', 'fr', 'hr', 'hu', 'id', 'it', 'mk', 'nl', 'pt', 'ru', 'zh']:
translated_terms = _get_industries(lang)
has_diff = False
self.assertEqual(len(english_terms), len(translated_terms), "Different number of industries between 'en' and %s" % lang)
for industry_id, english_label in english_terms.items():
translated_label = translated_terms.get(industry_id, False)
self.assertTrue(translated_label, "Industry %s is not in %s" % (english_label, lang))
if english_label != translated_label:
# One difference is enough to consider the translation
# as valid.
has_diff = True
break
self.assertTrue(has_diff, "No difference found between 'en' and %s" % lang)