Exemplo n.º 1
0
 async def _browse_racetime(self):
     from randovania.gui.dialog.racetime_browser_dialog import RacetimeBrowserDialog
     dialog = RacetimeBrowserDialog()
     if not await dialog.refresh():
         return
     result = await async_dialog.execute_dialog(dialog)
     if result == QDialog.Accepted:
         await self.generate_seed_from_permalink(dialog.permalink)
Exemplo n.º 2
0
async def test_attempt_join_success(skip_qtbot, mocker, success):
    # Setup
    permalink = MagicMock()

    def from_str(s: str):
        if s == "<permalink>":
            return permalink
        raise ValueError("Invalid permalink")

    raw_data = {
        "current_races": [{
            "name": "Race 1",
            "status": {
                "value": "open",
                "verbose_value": "Open",
                "help_text": "Anyone may join this race"
            },
            "goal": {
                "name": "Beat the game",
                "custom": False
            },
            "info": "<permalink>",
            "entrants_count": 1,
            "entrants_count_inactive": 0,
            "opened_at": "2020-10-01T18:00:00.000Z"
        }, {
            "name": "Race 2",
            "status": {
                "value": "open",
                "verbose_value": "Open",
                "help_text": "Anyone may join this race"
            },
            "goal": {
                "name": "Beat the game",
                "custom": False
            },
            "info": "random_stuff",
            "entrants_count": 1,
            "entrants_count_inactive": 0,
            "opened_at": "2020-10-01T18:00:00.000Z"
        }]
    }

    mock_warning = mocker.patch("randovania.gui.lib.async_dialog.warning",
                                new_callable=AsyncMock)
    mock_from_str = mocker.patch(
        "randovania.layout.permalink.Permalink.from_str", side_effect=from_str)
    mocker.patch("randovania.gui.dialog.racetime_browser_dialog._query_server",
                 new_callable=AsyncMock,
                 return_value=raw_data)
    dialog = RacetimeBrowserDialog()

    # Run
    await dialog.refresh()
    dialog.table_widget.selectRow(0 if success else 1)
    await dialog.attempt_join()

    # Assert
    mock_from_str.assert_called_once()
    if success:
        mock_warning.assert_not_called()
        assert dialog.permalink is permalink
    else:
        mock_warning.assert_awaited_once_with(dialog, ANY, ANY)
        assert dialog.permalink is None