neon-sprawl/client/test/quest_hud_controller_test.gd

61 lines
1.8 KiB
GDScript

extends GdUnitTestSuite
## NEO-122: quest HUD controller accept key + progress label render.
const QuestHudController := preload("res://scripts/quest_hud_controller.gd")
const QuestProgressClient := preload("res://scripts/quest_progress_client.gd")
const QuestDefinitionsClient := preload("res://scripts/quest_definitions_client.gd")
func _build_controller() -> Node:
var controller: Node = QuestHudController.new()
var progress: Node = QuestProgressClient.new()
var defs: Node = QuestDefinitionsClient.new()
var progress_label := Label.new()
var accept_label := Label.new()
add_child(controller)
add_child(progress)
add_child(defs)
controller.call(
"setup", progress, defs, progress_label, accept_label, Callable(self, "_noop_http_config")
)
await get_tree().process_frame
return controller
func _noop_http_config(_client: Node) -> void:
pass
func test_try_accept_key_input_handles_q_key() -> void:
# Arrange
var controller := await _build_controller()
var event := InputEventKey.new()
event.pressed = true
event.keycode = KEY_Q
# Act
var handled: bool = bool(controller.call("try_accept_key_input", event))
# Assert
assert_bool(handled).is_true()
func test_progress_label_shows_loading_before_snapshot() -> void:
# Arrange
var controller: Node = QuestHudController.new()
var progress: Node = QuestProgressClient.new()
var defs: Node = QuestDefinitionsClient.new()
var progress_label := Label.new()
add_child(controller)
add_child(progress)
add_child(defs)
await get_tree().process_frame
controller.call(
"setup", progress, defs, progress_label, Label.new(), Callable(self, "_noop_http_config")
)
await get_tree().process_frame
# Act
var text: String = progress_label.text
# Assert
assert_str(text).contains("Quests:")
assert_str(text).contains("Loading")