summaryrefslogtreecommitdiff
path: root/Tests/ComponentTests/test_InputContainer.gd
blob: 993436ee6506ce986f85c7034b93a83638fb7b30 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
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())
	yield(yield_frames(1), YIELD)

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, '')