fix: use str() instead of .value for realm i18n display (#98)
* fix: use str() instead of .value for realm i18n display Fix bug where user-facing messages displayed raw enum values like "FOUNDATION_ESTABLISHMENT" instead of translated names like "筑基". The Realm and Stage classes already have __str__ methods that return i18n translated text, but several places were incorrectly using .value which returns the raw enum string. Changed files: - src/classes/single_choice.py: item exchange messages - src/classes/kill_and_grab.py: loot messages - src/classes/fortune.py: fortune discovery messages - src/classes/avatar/inventory_mixin.py: purchase error messages Also added unit tests and integration tests to prevent regression. * test: add integration tests for all modified files Add tests covering: - kill_and_grab.py: context string realm display - fortune.py: weapon/auxiliary intro realm display - inventory_mixin.py: can_buy_item error message realm display
This commit is contained in:
@@ -8,6 +8,20 @@ def test_realm_comparison():
|
||||
assert Realm.Core_Formation < Realm.Nascent_Soul
|
||||
assert Realm.Nascent_Soul > Realm.Qi_Refinement
|
||||
|
||||
def test_realm_str_returns_translated_text_not_value():
|
||||
"""Test that str(Realm) returns i18n translated text, not the raw enum value."""
|
||||
# str() should NOT return the uppercase enum value.
|
||||
assert str(Realm.Qi_Refinement) != "QI_REFINEMENT"
|
||||
assert str(Realm.Foundation_Establishment) != "FOUNDATION_ESTABLISHMENT"
|
||||
assert str(Realm.Core_Formation) != "CORE_FORMATION"
|
||||
assert str(Realm.Nascent_Soul) != "NASCENT_SOUL"
|
||||
|
||||
# str() should return non-empty translated text.
|
||||
assert len(str(Realm.Qi_Refinement)) > 0
|
||||
assert len(str(Realm.Foundation_Establishment)) > 0
|
||||
assert len(str(Realm.Core_Formation)) > 0
|
||||
assert len(str(Realm.Nascent_Soul)) > 0
|
||||
|
||||
def test_realm_from_id():
|
||||
assert Realm.from_id(1) == Realm.Qi_Refinement
|
||||
assert Realm.from_id(4) == Realm.Nascent_Soul
|
||||
@@ -19,6 +33,18 @@ def test_stage_comparison():
|
||||
assert Stage.Early_Stage < Stage.Middle_Stage
|
||||
assert Stage.Middle_Stage < Stage.Late_Stage
|
||||
|
||||
def test_stage_str_returns_translated_text_not_value():
|
||||
"""Test that str(Stage) returns i18n translated text, not the raw enum value."""
|
||||
# str() should NOT return the uppercase enum value.
|
||||
assert str(Stage.Early_Stage) != "EARLY_STAGE"
|
||||
assert str(Stage.Middle_Stage) != "MIDDLE_STAGE"
|
||||
assert str(Stage.Late_Stage) != "LATE_STAGE"
|
||||
|
||||
# str() should return non-empty translated text.
|
||||
assert len(str(Stage.Early_Stage)) > 0
|
||||
assert len(str(Stage.Middle_Stage)) > 0
|
||||
assert len(str(Stage.Late_Stage)) > 0
|
||||
|
||||
# ================= CultivationProgress Tests =================
|
||||
def test_cp_initialization():
|
||||
cp = CultivationProgress(level=1, exp=0)
|
||||
|
||||
Reference in New Issue
Block a user