mirror of
https://github.com/SeedSigner/seedsigner.git
synced 2026-09-14 04:45:08 +00:00
Adding gui modules back to coverage; basic l10n tests
This commit is contained in:
@@ -48,7 +48,6 @@ omit = [
|
||||
"*/__init__.py",
|
||||
"*/tests/*",
|
||||
"*/pyzbar/*",
|
||||
"*/gui/*"
|
||||
]
|
||||
skip_covered = true
|
||||
skip_empty = true
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
from gettext import gettext as _
|
||||
|
||||
# Must import test base before the Controller
|
||||
from base import FlowTest, FlowStep
|
||||
|
||||
from seedsigner.gui.screens.screen import RET_CODE__BACK_BUTTON, ButtonOption
|
||||
from seedsigner.models.settings_definition import SettingsConstants, SettingsDefinition
|
||||
from seedsigner.views import settings_views
|
||||
from seedsigner.views.view import MainMenuView
|
||||
|
||||
|
||||
|
||||
class TestL10nFlows(FlowTest):
|
||||
def test_change_locale(self):
|
||||
settings_entry = SettingsDefinition.get_settings_entry(SettingsConstants.SETTING__LOCALE)
|
||||
spanish_display_name = [locale_tuple[1] for locale_tuple in SettingsConstants.ALL_LOCALES if locale_tuple[0] == SettingsConstants.LOCALE__SPANISH][0]
|
||||
|
||||
# Initially we get English
|
||||
assert _(MainMenuView.SCAN.button_label) == "Scan"
|
||||
|
||||
self.run_sequence([
|
||||
FlowStep(MainMenuView, button_data_selection=MainMenuView.SETTINGS),
|
||||
FlowStep(settings_views.SettingsMenuView, button_data_selection=ButtonOption(settings_entry.display_name)),
|
||||
FlowStep(settings_views.SettingsEntryUpdateSelectionView, button_data_selection=ButtonOption(spanish_display_name)),
|
||||
])
|
||||
|
||||
# Now we don't get English
|
||||
assert _(MainMenuView.SCAN.button_label) != "Scan"
|
||||
@@ -0,0 +1,104 @@
|
||||
from gettext import gettext as _
|
||||
|
||||
from base import BaseTest
|
||||
from seedsigner.gui.screens.screen import ButtonOption
|
||||
from seedsigner.helpers.l10n import mark_for_translation as _mft
|
||||
from seedsigner.models.settings import Settings
|
||||
from seedsigner.models.settings_definition import SettingsConstants
|
||||
from seedsigner.views.view import MainMenuView
|
||||
|
||||
|
||||
|
||||
class TestGettext(BaseTest):
|
||||
def test_english_as_default(self):
|
||||
# Key is available in other languages, but we get English back
|
||||
assert _("Home") == "Home"
|
||||
|
||||
def test_missing_key_returns_english_key(self):
|
||||
test_str = "This is not in our translation library"
|
||||
assert _(test_str) == test_str
|
||||
|
||||
|
||||
def test_basic_spanish(self):
|
||||
settings = Settings.get_instance()
|
||||
settings.set_value(SettingsConstants.SETTING__LOCALE, SettingsConstants.LOCALE__SPANISH)
|
||||
assert _("Home") != "Home"
|
||||
|
||||
|
||||
def test_locale_changes(self):
|
||||
settings = Settings.get_instance()
|
||||
|
||||
settings.set_value(SettingsConstants.SETTING__LOCALE, SettingsConstants.LOCALE__SPANISH)
|
||||
spanish_str = _("Home")
|
||||
|
||||
settings.set_value(SettingsConstants.SETTING__LOCALE, SettingsConstants.LOCALE__ENGLISH)
|
||||
assert spanish_str != _("Home")
|
||||
assert _("Home") == "Home"
|
||||
|
||||
|
||||
|
||||
class TestButtonOption(BaseTest):
|
||||
def test_english_key_not_translated(self):
|
||||
""" ButtonOption should always return its English key, regardless of current locale setting. """
|
||||
button_option = ButtonOption("Home")
|
||||
settings = Settings.get_instance()
|
||||
settings.set_value(SettingsConstants.SETTING__LOCALE, SettingsConstants.LOCALE__SPANISH)
|
||||
|
||||
assert button_option.button_label == "Home"
|
||||
|
||||
brand_new_button_option = ButtonOption("Tools")
|
||||
assert brand_new_button_option.button_label == "Tools"
|
||||
|
||||
|
||||
def test_class_level_button_option_english_key_not_translated(self):
|
||||
settings = Settings.get_instance()
|
||||
settings.set_value(SettingsConstants.SETTING__LOCALE, SettingsConstants.LOCALE__SPANISH)
|
||||
|
||||
class FooClass:
|
||||
HOME = ButtonOption("Home")
|
||||
|
||||
assert FooClass.HOME.button_label == "Home"
|
||||
|
||||
|
||||
def test_gettext_translates_class_level_button_option(self):
|
||||
settings = Settings.get_instance()
|
||||
settings.set_value(SettingsConstants.SETTING__LOCALE, SettingsConstants.LOCALE__SPANISH)
|
||||
|
||||
class BarClass:
|
||||
HOME = ButtonOption("Home")
|
||||
|
||||
assert _(BarClass.HOME.button_label) != "Home"
|
||||
|
||||
|
||||
|
||||
class TestMarkForTranslation(BaseTest):
|
||||
def test_english_key_not_translated(self):
|
||||
""" _mft() should always return its English key, regardless of current locale setting. """
|
||||
mft_attr = _mft("Home")
|
||||
settings = Settings.get_instance()
|
||||
settings.set_value(SettingsConstants.SETTING__LOCALE, SettingsConstants.LOCALE__SPANISH)
|
||||
|
||||
assert mft_attr == "Home"
|
||||
|
||||
brand_new_mft_attr = _mft("Tools")
|
||||
assert brand_new_mft_attr == "Tools"
|
||||
|
||||
|
||||
def test_class_level_mft_attr_english_key_not_translated(self):
|
||||
settings = Settings.get_instance()
|
||||
settings.set_value(SettingsConstants.SETTING__LOCALE, SettingsConstants.LOCALE__SPANISH)
|
||||
|
||||
class FooClass:
|
||||
home = _mft("Home")
|
||||
|
||||
assert FooClass.home == "Home"
|
||||
|
||||
|
||||
def test_gettext_translates_class_level_mft_attr(self):
|
||||
settings = Settings.get_instance()
|
||||
settings.set_value(SettingsConstants.SETTING__LOCALE, SettingsConstants.LOCALE__SPANISH)
|
||||
|
||||
class BarClass:
|
||||
home = _mft("Home")
|
||||
|
||||
assert _(BarClass.home) != "Home"
|
||||
Reference in New Issue
Block a user