diff --git a/tests/test_dialogs.py b/tests/test_dialogs.py index 890a32878..766280b26 100644 --- a/tests/test_dialogs.py +++ b/tests/test_dialogs.py @@ -1,3 +1,6 @@ +import os +from gi.repository import Gio +from lutris.game import Game from lutris.gui import config_dialogs from unittest import TestCase from lutris import runners @@ -16,3 +19,52 @@ class TestGameDialog(TestCase): def test_dialog(self): dlg = config_dialogs.AddGameDialog(None) self.assertEqual(dlg.notebook.get_current_page(), 0) + + def test_changing_runner_sets_new_config(self): + dlg = config_dialogs.AddGameDialog(None) + runner_dropdown = dlg.vbox.get_children()[1] + notebook = dlg.vbox.get_children()[2] + label = notebook.get_children()[0] + self.assertIn('Select a runner', label.get_text()) + + buttons = dlg.vbox.get_children()[3].get_children() + self.assertEqual(buttons[0].get_label(), 'Cancel') + self.assertEqual(buttons[1].get_label(), 'Add') + + runner_dropdown.set_active(1) + self.assertEqual(dlg.lutris_config.runner, runners.__all__[0]) + scrolled_window = notebook.get_children()[0] + viewport = scrolled_window.get_children()[0] + game_box = viewport.get_children()[0] + self.assertEqual(game_box.runner_name, runners.__all__[0]) + exe_field = game_box.get_children()[0].get_children()[1] + self.assertEqual(exe_field.__class__.__name__, 'FileChooserButton') + + runner_dropdown.set_active(2) + self.assertEqual(dlg.lutris_config.runner, runners.__all__[1]) + + def test_can_add_game(self): + dlg = config_dialogs.AddGameDialog(None) + name_entry = dlg.vbox.get_children()[0].get_children()[1] + runner_dropdown = dlg.vbox.get_children()[1] + name_entry.set_text("Test game") + runner_dropdown.set_active(1) + + notebook = dlg.vbox.get_children()[2] + scrolled_window = notebook.get_children()[0] + viewport = scrolled_window.get_children()[0] + game_box = viewport.get_children()[0] + exe_label = game_box.get_children()[0].get_children()[0] + self.assertEqual(exe_label.get_text(), "Executable") + test_exe = os.path.abspath(__file__) + exe_field = game_box.get_children()[0].get_children()[1] + exe_field.set_file(Gio.File.new_for_path(test_exe)) + exe_field.emit('file-set') + self.assertEqual(exe_field.get_filename(), test_exe) + + add_button = dlg.vbox.get_children()[3].get_children()[1] + add_button.clicked() + + game = Game('test-game') + self.assertEqual(game.name, 'Test game') + game.remove(from_library=True)