async def METHOD_NAME(
    mock_initiator_run: AsyncMock,
    mock_downloader_run: AsyncMock,
    mock_eraser_run: AsyncMock,
    mock_hex_record_builder: MagicMock,
    should_erase: bool,
) -> None:
    """It should call all the functions."""
    mock_can_messenger = AsyncMock()
    mock_usb_messenger = AsyncMock()
    hex_file_1 = str()
    hex_file_2 = str()
    mock_hex_record_processor = MagicMock()
    mock_hex_record_builder.return_value = mock_hex_record_processor
    target_1 = Target.from_single_node(NodeId.gantry_x)
    target_2 = Target.from_single_node(NodeId.gantry_y)
    update_details: Dict[FirmwareTarget, str] = {
        target_1.system_node: hex_file_1,
        target_2.system_node: hex_file_2,
    }
    with mock.patch("os.path.exists"), mock.patch("builtins.open"):
        updater = RunUpdate(
            can_messenger=mock_can_messenger,
            usb_messenger=mock_usb_messenger,
            update_details=update_details,
            retry_count=12,
            timeout_seconds=11,
            erase=should_erase,
        )
        async for progress in updater.run_updates():
            pass
    mock_initiator_run.assert_has_calls(
        [
            mock.call(target=target_1, retry_count=12, ready_wait_time_sec=11),
            mock.call(target=target_2, retry_count=12, ready_wait_time_sec=11),
        ]
    )
    if should_erase:
        mock_eraser_run.assert_has_calls(
            [
                mock.call(node_id=target_1.bootloader_node, timeout_sec=60),
                mock.call(node_id=target_2.bootloader_node, timeout_sec=60),
            ]
        )
    else:
        mock_eraser_run.assert_not_called()
    mock_downloader_run.assert_has_calls(
        [
            mock.call(
                node_id=target_1.bootloader_node,
                hex_processor=mock_hex_record_processor,
                ack_wait_seconds=11,
            ),
            mock.call().__aiter__(),
            mock.call(
                node_id=target_2.bootloader_node,
                hex_processor=mock_hex_record_processor,
                ack_wait_seconds=11,
            ),
            mock.call().__aiter__(),
        ]
    )
    mock_can_messenger.send.assert_has_calls(
        [
            mock.call(
                node_id=target_1.bootloader_node, message=FirmwareUpdateStartApp()
            ),
            mock.call(
                node_id=target_2.bootloader_node, message=FirmwareUpdateStartApp()
            ),
        ]
    )