summaryrefslogtreecommitdiff
path: root/Tests/ComponentTests/test_InputContainer.gd
diff options
context:
space:
mode:
Diffstat (limited to 'Tests/ComponentTests/test_InputContainer.gd')
-rw-r--r--Tests/ComponentTests/test_InputContainer.gd94
1 files changed, 94 insertions, 0 deletions
diff --git a/Tests/ComponentTests/test_InputContainer.gd b/Tests/ComponentTests/test_InputContainer.gd
new file mode 100644
index 0000000..3fdaa7b
--- /dev/null
+++ b/Tests/ComponentTests/test_InputContainer.gd
@@ -0,0 +1,94 @@
+extends GutTest
+
+const Scene = preload('res://Scenes/InputContainer.tscn')
+const InputContainer = preload('res://Scripts/InputContainer.cs')
+
+var _instance: InputContainer = null
+var _sender = InputSender.new(Input)
+const _test_data = 'This is some test data'
+const _input_submitted = 'InputSubmitted'
+
+func _click_submit_button():
+ var button: Button = _instance.SubmitButton
+ var rect = button.get_global_rect()
+ var center = (rect.end - rect.size / 2)
+ _sender.mouse_left_button_down(center, center) \
+ .hold_for('1f') \
+ .wait('1f')
+ return _sender
+
+func _press_enter_key():
+ _sender.key_down(KEY_ENTER) \
+ .hold_for('1f') \
+ .wait('1f')
+ return _sender
+
+func _set_input_text(text):
+ _instance.InputField.text = text
+ _instance.InputField.emit_signal('text_changed', _instance.InputField.text)
+
+func before_each():
+ _instance = add_child_autofree(Scene.instance())
+
+func after_each():
+ _sender.release_all()
+ _sender.clear()
+
+func test_can_instantiate():
+ assert_not_null(_instance)
+
+func test_has_InputSubmitted_signal():
+ assert_has_signal(_instance, _input_submitted)
+
+func test_has_InputField():
+ assert_not_null(_instance.InputField)
+
+func test_InputField_has_focus_when_scene_is_instantiated():
+ assert_true(_instance.InputField.has_focus())
+
+func test_InputSubmitted_signal_is_not_emitted_when_enter_is_pressed_without_text_in_InputField():
+ watch_signals(_instance)
+ yield(_press_enter_key(), 'idle')
+ assert_signal_not_emitted(_instance, _input_submitted)
+
+func test_InputSubmitted_signal_is_emitted_when_enter_is_pressed_with_text_in_InputField():
+ watch_signals(_instance)
+ _set_input_text(_test_data)
+ yield(_press_enter_key(), 'idle')
+ assert_signal_emitted(_instance, _input_submitted)
+
+func test_InputField_is_empty_after_text_is_submitted():
+ _set_input_text(_test_data)
+ yield(_press_enter_key(), 'idle')
+ assert_eq(_instance.InputField.text, '')
+
+func test_has_SubmitButton():
+ assert_not_null(_instance.SubmitButton)
+
+func test_SubmitButton_is_disable_after_scene_was_instantiated():
+ assert_true(_instance.SubmitButton.disabled)
+
+func test_SubmitButton_is_disabled_when_InputField_is_set_to_empty():
+ _set_input_text('')
+ assert_true(_instance.SubmitButton.disabled)
+
+func test_SubmitButton_is_enabled_when_InputField_is_set_to_some_text():
+ _set_input_text(_test_data)
+ assert_false(_instance.SubmitButton.disabled)
+
+func test_InputSubmitted_signal_is_not_emitted_when_SubmitButton_is_clicked_without_text_in_InputField():
+ watch_signals(_instance)
+ _set_input_text('')
+ yield(_click_submit_button(), 'idle')
+ assert_signal_not_emitted(_instance, _input_submitted)
+
+func test_InputSubmitted_signal_is_emitted_when_SubmitButton_is_clicked_with_text_in_InputField():
+ watch_signals(_instance)
+ _set_input_text(_test_data)
+ yield(_click_submit_button(), 'idle')
+ assert_signal_emitted(_instance, _input_submitted)
+
+func test_InputField_is_empty_after_text_is_submitted_via_SubmitButton():
+ _set_input_text(_test_data)
+ yield(_click_submit_button(), 'idle')
+ assert_eq(_instance.InputField.text, '')