Skip to content

Commit 8a37c45

Browse files
committed
Add translation key tests
1 parent ccb79cf commit 8a37c45

File tree

5 files changed

+139
-2
lines changed

5 files changed

+139
-2
lines changed

addons/parley/components/dialogue/dialogue_node_editor.tscn

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
[ext_resource type="Script" uid="uid://b0qfehwjd3bm7" path="res://addons/parley/components/dialogue/dialogue_node_editor.gd" id="1_ad3ky"]
44
[ext_resource type="PackedScene" uid="uid://m3v11vm16l8y" path="res://addons/parley/components/node/node_editor.tscn" id="1_okdx1"]
5-
[ext_resource type="PackedScene" uid="uid://n4t3w6dhkt6a" path="res://addons/parley/components/editor/translation_key.tscn" id="3_wbci0"]
5+
[ext_resource type="PackedScene" uid="uid://n4t3w6dhkt6a" path="res://addons/parley/components/editor/translation_key_editor.tscn" id="3_wbci0"]
66

77
[node name="DialogueNodeEditor" instance=ExtResource("1_okdx1")]
88
script = ExtResource("1_ad3ky")

addons/parley/components/dialogue_option/dialogue_option_node_editor.tscn

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
[ext_resource type="Script" uid="uid://dy0x43s04n867" path="res://addons/parley/components/dialogue_option/dialogue_option_node_editor.gd" id="1_3b5a7"]
44
[ext_resource type="PackedScene" uid="uid://m3v11vm16l8y" path="res://addons/parley/components/node/node_editor.tscn" id="1_acvks"]
5-
[ext_resource type="PackedScene" uid="uid://n4t3w6dhkt6a" path="res://addons/parley/components/editor/translation_key.tscn" id="3_yrbg7"]
5+
[ext_resource type="PackedScene" uid="uid://n4t3w6dhkt6a" path="res://addons/parley/components/editor/translation_key_editor.tscn" id="3_yrbg7"]
66

77
[node name="DialogueOptionNodeEditor" instance=ExtResource("1_acvks")]
88
script = ExtResource("1_3b5a7")
Lines changed: 136 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,136 @@
1+
# Copyright 2024-2025 the Bisterix Studio authors. All rights reserved. MIT license.
2+
3+
extends GutTest
4+
5+
# TODO: move test file next to the scene
6+
const TranslationKeyEditorScene: PackedScene = preload('res://addons/parley/components/editor/translation_key_editor.tscn')
7+
8+
9+
class Test_translation_key_editor:
10+
extends GutTest
11+
12+
var translation_key_editor: ParleyTranslationKeyEditor = null
13+
14+
func before_each() -> void:
15+
translation_key_editor = TranslationKeyEditorScene.instantiate()
16+
add_child_autofree(translation_key_editor)
17+
18+
func after_each() -> void:
19+
translation_key_editor = null
20+
21+
func setup_translation_key_editor(p_translation_key_editor: ParleyTranslationKeyEditor, test_case: Dictionary) -> void:
22+
var label: Variant = test_case.get('label')
23+
var key: Variant = test_case.get('key')
24+
if label:
25+
p_translation_key_editor.label = label
26+
if key:
27+
p_translation_key_editor.key = key
28+
29+
30+
func use_translation_key_editor(p_translation_key_editor: ParleyTranslationKeyEditor, test_case: Dictionary) -> void:
31+
var key_variant: Variant = test_case.get('key')
32+
if key_variant and key_variant is String:
33+
var key: String = key_variant
34+
p_translation_key_editor.translation_key_editor.insert_text_at_caret(key)
35+
p_translation_key_editor.translation_key_editor.text_changed.emit(key)
36+
37+
38+
func test_initial_render(params: Variant = use_parameters([
39+
{
40+
"input": {"label": null, "key": null},
41+
"expected": {"label": "", "key": ""},
42+
},
43+
{
44+
"input": {"label": "Some label", "key": null},
45+
"expected": {"label": "Some label", "key": ""},
46+
},
47+
{
48+
"input": {"label": null, "key": null},
49+
"expected": {"label": "", "key": ""},
50+
},
51+
{
52+
"input": {"label": null, "key": "Some key"},
53+
"expected": {"label": "", "key": "Some key"},
54+
},
55+
{
56+
"input": {"label": "Some label", "key": "Some key"},
57+
"expected": {"label": "Some label", "key": "Some key"},
58+
},
59+
])) -> void:
60+
# Arrange
61+
var input: Dictionary = params['input']
62+
var expected: Dictionary = params['expected']
63+
setup_translation_key_editor(translation_key_editor, input)
64+
watch_signals(translation_key_editor)
65+
66+
# Act
67+
await wait_until(func() -> bool: return translation_key_editor.is_inside_tree(), .1)
68+
69+
# Assert
70+
assert_true(translation_key_editor.is_inside_tree())
71+
assert_eq(translation_key_editor.label, str(expected['label']))
72+
assert_eq(translation_key_editor.key, str(expected['key']))
73+
assert_signal_not_emitted(translation_key_editor, 'key_changed')
74+
assert_signal_not_emitted(translation_key_editor, 'key_generation_requested')
75+
76+
77+
func test_update_render_with_variables(params: Variant = use_parameters([
78+
{
79+
"input": {"label": null, "key": null},
80+
"expected": {"label": "", "key": ""},
81+
},
82+
{
83+
"input": {"label": "Some label", "key": null},
84+
"expected": {"label": "Some label", "key": ""},
85+
},
86+
{
87+
"input": {"label": null, "key": "Some key"},
88+
"expected": {"label": "", "key": "Some key"},
89+
},
90+
{
91+
"input": {"label": "Some label", "key": "Some key"},
92+
"expected": {"label": "Some label", "key": "Some key"},
93+
},
94+
])) -> void:
95+
# Arrange
96+
var input: Dictionary = params['input']
97+
var expected: Dictionary = params['expected']
98+
watch_signals(translation_key_editor)
99+
100+
# Act
101+
await wait_until(func() -> bool: return translation_key_editor.is_inside_tree(), .1)
102+
setup_translation_key_editor(translation_key_editor, input)
103+
104+
# Assert
105+
assert_true(translation_key_editor.is_inside_tree())
106+
assert_eq(translation_key_editor.label, str(expected['label']))
107+
assert_eq(translation_key_editor.translation_key_label.text, str(expected['label']))
108+
assert_eq(translation_key_editor.key, str(expected['key']))
109+
assert_eq(translation_key_editor.translation_key_editor.text, str(expected['key']))
110+
assert_signal_not_emitted(translation_key_editor, 'key_changed')
111+
assert_signal_not_emitted(translation_key_editor, 'key_generation_requested')
112+
113+
func test_update_render_with_text_input(params: Variant = use_parameters([
114+
{
115+
"input": {"key": "Some key"},
116+
"expected": {"label": "", "key": "Some key"},
117+
},
118+
])) -> void:
119+
# Arrange
120+
var input: Dictionary = params['input']
121+
var expected: Dictionary = params['expected']
122+
watch_signals(translation_key_editor)
123+
124+
# Act
125+
await wait_until(func() -> bool: return translation_key_editor.is_inside_tree(), .1)
126+
use_translation_key_editor(translation_key_editor, input)
127+
await wait_for_signal(translation_key_editor.key_changed, .1)
128+
129+
# Assert
130+
assert_true(translation_key_editor.is_inside_tree())
131+
assert_eq(translation_key_editor.label, str(expected['label']))
132+
assert_eq(translation_key_editor.translation_key_label.text, str(expected['label']))
133+
assert_eq(translation_key_editor.key, str(expected['key']))
134+
assert_eq(translation_key_editor.translation_key_editor.text, str(expected['key']))
135+
assert_signal_emitted_with_parameters(translation_key_editor, 'key_changed', [expected['key']])
136+
assert_signal_not_emitted(translation_key_editor, 'key_generation_requested')
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
uid://cxtqicj467u8c

0 commit comments

Comments
 (0)