At start and after switching server, the game asks the server for the newest MusicPlayer release and shows "Version X is available" in the top bar when it is newer than this one.
75 lines
2.4 KiB
GDScript
75 lines
2.4 KiB
GDScript
extends MainWindowTestSuite
|
|
## The top bar tells the user when the server has a newer MusicPlayer release.
|
|
|
|
var _top_bar: TopBar
|
|
|
|
|
|
func before_test() -> void:
|
|
super()
|
|
_top_bar = _window.get_node("TopBar")
|
|
|
|
|
|
func test_no_message_when_this_is_the_newest_version() -> void:
|
|
assert_bool(_top_bar.update_label.visible).is_false()
|
|
assert_int(_server.count("/download")).is_equal(1)
|
|
|
|
|
|
func test_newer_release_shows_a_message() -> void:
|
|
_server.respond_json("/download", "99.0.0")
|
|
|
|
_top_bar.check_for_update()
|
|
|
|
assert_bool(_top_bar.update_label.is_visible_in_tree()).is_true()
|
|
assert_str(_top_bar.update_label.text).is_equal("Version 99.0.0 is available")
|
|
assert_str(_top_bar.update_label.tooltip_text).contains(Settings.version)
|
|
|
|
|
|
func test_message_fits_between_the_tabs_and_the_buttons() -> void:
|
|
_server.respond_json("/download", "99.10.10")
|
|
_top_bar.check_for_update()
|
|
await _runner.simulate_frames(1)
|
|
|
|
var label: Rect2 = _top_bar.update_label.get_global_rect()
|
|
var text_width: float = _top_bar.update_label.get_minimum_size().x
|
|
assert_float(text_width).is_less_equal(label.size.x)
|
|
assert_float(label.position.x).is_greater(
|
|
(_top_bar.get_node("StatisticsTab") as Control).get_global_rect().end.x)
|
|
assert_float(label.end.x).is_less(
|
|
(_top_bar.get_node("SyncButton") as Control).get_global_rect().position.x)
|
|
|
|
|
|
func test_message_stays_on_the_statistics_tab() -> void:
|
|
_server.respond_json("/download", "99.0.0")
|
|
_top_bar.check_for_update()
|
|
|
|
_window.show_tab(&"statistics")
|
|
|
|
assert_bool(_top_bar.update_label.is_visible_in_tree()).is_true()
|
|
|
|
|
|
func test_server_change_checks_again() -> void:
|
|
_server.respond_json("/download", "99.0.0")
|
|
|
|
_quiz.on_server_changed()
|
|
|
|
assert_bool(_top_bar.update_label.visible).is_true()
|
|
|
|
|
|
func test_failed_check_shows_nothing() -> void:
|
|
_server.respond_json("/download", "error", 502)
|
|
|
|
_top_bar.check_for_update()
|
|
|
|
assert_bool(_top_bar.update_label.visible).is_false()
|
|
|
|
|
|
func test_version_comparison() -> void:
|
|
assert_bool(TopBar.is_newer_version("2.0.1", "2.0.0")).is_true()
|
|
assert_bool(TopBar.is_newer_version("1.10.0", "1.9.0")).is_true()
|
|
assert_bool(TopBar.is_newer_version("v3.0", "2.9.9")).is_true()
|
|
assert_bool(TopBar.is_newer_version("2.1", "2.0.5")).is_true()
|
|
assert_bool(TopBar.is_newer_version("2.0.0", "2.0.0")).is_false()
|
|
assert_bool(TopBar.is_newer_version("2.0", "2.0.0")).is_false()
|
|
assert_bool(TopBar.is_newer_version("1.9.0", "2.0.0")).is_false()
|
|
assert_bool(TopBar.is_newer_version("1.9.9", "1.10.0")).is_false()
|