extends MainWindowTestSuite ## The statistics settings in the application Settings popup. var _popup: SettingsPopup func before_test() -> void: await super() _popup = _window.get_node("SettingsPopup") func test_random_songs_choice_lists_the_three_modes() -> void: var names: Array[String] = [] for index: int in _popup.random_mode_button.item_count: names.append(_popup.random_mode_button.get_item_text(index)) assert_array(names).contains_exactly(["Normal", "Low played", "Classic"]) @warning_ignore("unused_parameter") func test_random_songs_choice_changes_the_setting(mode: Settings.RandomMode, test_parameters: Array = [[Settings.RandomMode.LOW_PLAYED], [Settings.RandomMode.CLASSIC], [Settings.RandomMode.NORMAL]]) -> void: _popup.open() await _runner.simulate_frames(1) _popup.random_mode_button.select(mode) _popup.random_mode_button.item_selected.emit(mode) assert_int(Settings.random_mode).is_equal(mode) func test_random_songs_choice_shows_the_mode_in_use() -> void: Settings.random_mode = Settings.RandomMode.CLASSIC _popup.open() assert_int(_popup.random_mode_button.selected).is_equal(Settings.RandomMode.CLASSIC) func test_statistics_toggle_changes_the_setting() -> void: Settings.add_to_stats = true _popup.open() await _runner.simulate_frames(1) assert_bool(_popup.add_to_database_button.button_pressed).is_true() await _click_at(_popup.add_to_database_button.get_global_rect().get_center()) assert_bool(Settings.add_to_stats).is_false() func test_statistics_settings_are_not_saved_with_the_quiz_settings() -> void: Settings.add_to_stats = false Settings.random_mode = Settings.RandomMode.LOW_PLAYED Settings.save_settings() var saved: ConfigFile = ConfigFile.new() assert_int(saved.load(Settings.saved_settings_path())).is_equal(OK) assert_bool(saved.has_section_key("quiz", "add_to_stats")).is_false() assert_bool(saved.has_section_key("quiz", "random_mode")).is_false() assert_bool(saved.has_section_key("app", "random_mode")).is_false() func test_popup_fits_its_rows_and_is_centred() -> void: _popup.open() await _runner.simulate_frames(1) var panel: Rect2 = _popup.settings_panel.get_global_rect() var rows: Control = _popup.settings_panel.get_node("VBoxContainer") assert_bool(panel.encloses(rows.get_global_rect())).is_true() # The rows' own height fits, so the last toggle is not squeezed or cut off assert_float(rows.get_combined_minimum_size().y).is_less_equal(rows.size.y) assert_vector(panel.get_center()).is_equal_approx(Vector2(960, 540), Vector2(1, 1)) func test_open_folder_button_shows_the_config_folder() -> void: var shown: Array[String] = [] _popup.show_folder = func(dir: String) -> void: shown.append(dir) _popup.open() await _runner.simulate_frames(1) await _click_at(_popup.open_config_folder_button.get_global_rect().get_center()) assert_array(shown).contains_exactly([Settings.config_dir()]) assert_bool(DirAccess.dir_exists_absolute(Settings.config_dir())).is_true()