lutris/tests/test_dialogs.py
Daniel Johnson 382d5681d5 Fix "scope" option and restore "Default installation folder"
This was the only option to use the 'scope' feature, and in 0.5.14 it was available in system and runner options, but not games.

This fix restores that behavior.

The trick is to pass the config_level through to the various option boxes, not just the config_section. The first is which dialog you are in (roughly) and the second is which tab.
2023-12-12 18:47:46 -05:00

105 lines
3.4 KiB
Python

from unittest import TestCase
from lutris import runners
from lutris.gui.application import Application
from lutris.gui.config.add_game_dialog import AddGameDialog
# from lutris import settings
from lutris.gui.config.common import GameDialogCommon
from lutris.gui.views.store import sort_func
from lutris.util.test_config import setup_test_environment
setup_test_environment()
class TestGameDialogCommon(TestCase):
def test_get_runner_liststore(self):
dlg = GameDialogCommon("test", config_level="system")
list_store = dlg._get_runner_liststore()
self.assertTrue(
list_store[1][0].startswith(runners.get_installed()[0].human_name)
)
self.assertEqual(list_store[1][1], runners.get_installed()[0].name)
class TestGameDialog(TestCase):
def setUp(self):
lutris_application = Application()
lutris_window = lutris_application.window
self.dlg = AddGameDialog(lutris_window)
def get_notebook(self):
return self.dlg.vbox.get_children()[0]
def get_viewport(self, index):
children = self.get_notebook().get_children()
try:
scrolled_window = children[index]
except IndexError:
print("No viewport for index %s" % index)
print(children)
raise
viewport = scrolled_window.get_children()[0]
return viewport.get_children()[0]
def get_game_box(self):
return self.get_viewport(1)
def test_dialog(self):
self.assertEqual(self.dlg.notebook.get_current_page(), 0)
class TestSort(TestCase):
class FakeModel(object):
def __init__(self, rows):
self.rows = rows
def get_value(self, row_index, col_name):
return self.rows[row_index].cols.get(col_name)
class FakeRow(object):
def __init__(self, coldict):
self.cols = coldict
def test_sort_strings_with_caps(self):
row1 = self.FakeRow({'name': 'Abc'})
row2 = self.FakeRow({'name': 'Def'})
model = self.FakeModel([row1, row2])
assert sort_func(model, 0, 1, 'name') == -1
def test_sort_strings_with_one_caps(self):
row1 = self.FakeRow({'name': 'abc'})
row2 = self.FakeRow({'name': 'Def'})
model = self.FakeModel([row1, row2])
assert sort_func(model, 0, 1, 'name') == -1
def test_sort_strings_with_no_caps(self):
row1 = self.FakeRow({'name': 'abc'})
row2 = self.FakeRow({'name': 'def'})
model = self.FakeModel([row1, row2])
assert sort_func(model, 0, 1, 'name') == -1
def test_sort_int(self):
row1 = self.FakeRow({'name': 1})
row2 = self.FakeRow({'name': 2})
model = self.FakeModel([row1, row2])
assert sort_func(model, 0, 1, 'name') == -1
def test_sort_mismatched_types(self):
row1 = self.FakeRow({'name': 'abc'})
row2 = self.FakeRow({'name': 1})
model = self.FakeModel([row1, row2])
with self.assertRaises(TypeError):
assert sort_func(model, 0, 1, 'name') == -1
def test_both_none(self):
row1 = self.FakeRow({})
row2 = self.FakeRow({})
model = self.FakeModel([row1, row2])
assert sort_func(model, 0, 1, 'name') == 0
def test_one_none(self):
row1 = self.FakeRow({})
row2 = self.FakeRow({'name': 'abc'})
model = self.FakeModel([row1, row2])
assert sort_func(model, 0, 1, 'name') == -1