90 lines
2.8 KiB
GDScript
90 lines
2.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")
|
|
|
|
|
|
func test_shift_q_shows_progress_loading_before_snapshot() -> void:
|
|
# Arrange
|
|
var controller: Node = QuestHudController.new()
|
|
var accept_label := Label.new()
|
|
add_child(controller)
|
|
controller.set("_progress_client", QuestProgressClient.new())
|
|
controller.set("_defs_client", QuestDefinitionsClient.new())
|
|
controller.set("_accept_label", accept_label)
|
|
controller.set("_last_snapshot", {})
|
|
controller.set("_progress_error", "")
|
|
# Act
|
|
controller.call("_request_eligible_accept")
|
|
# Assert
|
|
assert_str(accept_label.text).contains("progress loading")
|
|
|
|
|
|
func test_request_accept_shows_busy_feedback() -> void:
|
|
# Arrange
|
|
var controller := await _build_controller()
|
|
var progress: Node = controller.get("_progress_client")
|
|
progress.call("request_accept", QuestHudController.GATHER_QUEST_ID)
|
|
var accept_label: Label = controller.get("_accept_label")
|
|
# Act
|
|
var started: bool = bool(controller.call("_request_accept", QuestHudController.GATHER_QUEST_ID))
|
|
# Assert
|
|
assert_bool(started).is_false()
|
|
assert_str(accept_label.text).contains("busy")
|