Esempio n. 1
0
async def test_show_dialog_for_prime3_layout(skip_qtbot, mocker, corruption_game_description, empty_patches):
    mock_execute_dialog = mocker.patch("randovania.gui.lib.async_dialog.execute_dialog", new_callable=AsyncMock)
    mock_clipboard: MagicMock = mocker.patch("PySide6.QtWidgets.QApplication.clipboard")

    options = MagicMock()
    options.options_for_game.return_value.cosmetic_patches = CorruptionCosmeticPatches()
    window = GameDetailsWindow(None, options)
    window.player_index_combo.addItem("Current", 0)
    skip_qtbot.addWidget(window)

    collections.namedtuple("MockPickup", ["name"])
    target = MagicMock()
    target.pickup.name = "Boost Ball"

    patches = dataclasses.replace(empty_patches, starting_location=corruption_game_description.starting_location)
    for i in range(100):
        patches.pickup_assignment[PickupIndex(i)] = target

    window.layout_description = MagicMock()
    window.layout_description.all_patches = {0: patches}

    # Run
    await window._show_dialog_for_prime3_layout()

    # Assert
    mock_execute_dialog.assert_awaited_once()
    mock_clipboard.return_value.setText.assert_called_once()
Esempio n. 2
0
async def test_export_iso(skip_qtbot, mocker):
    # Setup
    mock_execute_dialog = mocker.patch("randovania.gui.lib.async_dialog.execute_dialog", new_callable=AsyncMock,
                                       return_value=QtWidgets.QDialog.Accepted)

    options = MagicMock()
    options.output_directory = None

    window_manager = MagicMock()

    window = GameDetailsWindow(window_manager, options)
    skip_qtbot.addWidget(window)
    window.layout_description = MagicMock()
    window._player_names = {}
    game = window.layout_description.get_preset.return_value.game
    game.exporter.is_busy = False
    window.layout_description.all_games = [game]
    patch_data = game.patch_data_factory.return_value.create_data.return_value

    players_config = PlayersConfiguration(
        player_index=window.current_player_index,
        player_names=window._player_names,
    )

    # Run
    await window._export_iso()

    # Assert
    game.patch_data_factory.assert_called_once_with(
        window.layout_description,
        players_config,
        options.options_for_game.return_value.cosmetic_patches
    )
    game.gui.export_dialog.assert_called_once_with(
        options,
        patch_data,
        window.layout_description.shareable_word_hash,
        window.layout_description.has_spoiler,
        [game]
    )
    mock_execute_dialog.assert_awaited_once_with(game.gui.export_dialog.return_value)
    game.exporter.export_game.assert_called_once_with(
        patch_data,
        game.gui.export_dialog.return_value.get_game_export_params.return_value,
        progress_update=ANY,
    )