from unittest import TestCase

from lutris.api import parse_installer_url


class TestInstallerUrls(TestCase):
    def test_legacy_url(self):
        result = parse_installer_url("lutris:quake")
        self.assertEqual(result["game_slug"], "quake")
        self.assertEqual(result["revision"], None)
        self.assertEqual(result["action"], None)
        self.assertEqual(result["launch_config_name"], None)

    def test_action_rungameid(self):
        result = parse_installer_url("lutris:rungameid/123")
        self.assertEqual(result["game_slug"], "123")
        self.assertEqual(result["revision"], None)
        self.assertEqual(result["action"], "rungameid")
        self.assertEqual(result["launch_config_name"], None)

    def test_action_rungame(self):
        result = parse_installer_url("lutris:rungame/quake")
        self.assertEqual(result["game_slug"], "quake")
        self.assertEqual(result["revision"], None)
        self.assertEqual(result["action"], "rungame")
        self.assertEqual(result["launch_config_name"], None)

    def test_action_rungame_launch_config(self):
        result = parse_installer_url("lutris:rungame/quake/OpenGL%20Edition")
        self.assertEqual(result["game_slug"], "quake")
        self.assertEqual(result["revision"], None)
        self.assertEqual(result["action"], "rungame")
        self.assertEqual(result["launch_config_name"], "OpenGL Edition")
