def test_archive_rename(qapp, qtbot, mocker, borg_json_output): main = qapp.main_window tab = main.archiveTab main.tabWidget.setCurrentIndex(3) tab.populate_from_profile() qtbot.waitUntil(lambda: tab.archiveTable.rowCount() == 2) tab.archiveTable.selectRow(0) new_archive_name = 'idf89d8f9d8fd98' stdout, stderr = borg_json_output('rename') popen_result = mocker.MagicMock(stdout=stdout, stderr=stderr, returncode=0) mocker.patch.object(vorta.borg.borg_job, 'Popen', return_value=popen_result) mocker.patch.object(vorta.views.archive_tab.QInputDialog, 'getText', return_value=(new_archive_name, True)) tab.rename_action() # Successful rename case qtbot.waitUntil(lambda: tab.mountErrors.text() == 'Archive renamed.', **pytest._wait_defaults) assert ArchiveModel.select().filter(name=new_archive_name).count() == 1 # Duplicate name case exp_text = 'An archive with this name already exists.' mocker.patch.object(vorta.views.archive_tab.QInputDialog, 'getText', return_value=(new_archive_name, True)) tab.rename_action() qtbot.waitUntil(lambda: tab.mountErrors.text() == exp_text, **pytest._wait_defaults)
def process_result(self, result): if result['returncode'] == 0: repo, created = RepoModel.get_or_create(url=result['cmd'][-1]) if not result['data']: result['data'] = { } # TODO: Workaround for tests. Can't read mock results 2x. remote_archives = result['data'].get('archives', []) # Delete archives that don't exist on the remote side for archive in ArchiveModel.select().where( ArchiveModel.repo == repo.id): if not list( filter(lambda s: s['id'] == archive.snapshot_id, remote_archives)): archive.delete_instance() # Add remote archives we don't have locally. for archive in result['data'].get('archives', []): new_archive, _ = ArchiveModel.get_or_create( snapshot_id=archive['id'], repo=repo.id, defaults={ 'name': archive['name'], 'time': dt.fromisoformat(archive['time']) }) new_archive.save()
def test_create(qapp, borg_json_output, mocker, qtbot): main = qapp.main_window stdout, stderr = borg_json_output('create') popen_result = mocker.MagicMock(stdout=stdout, stderr=stderr, returncode=0) mocker.patch.object(vorta.borg.borg_job, 'Popen', return_value=popen_result) qtbot.mouseClick(main.createStartBtn, QtCore.Qt.LeftButton) qtbot.waitUntil( lambda: main.progressText.text().startswith('Backup finished.'), **pytest._wait_defaults) qtbot.waitUntil(lambda: main.createStartBtn.isEnabled(), **pytest._wait_defaults) assert EventLogModel.select().count() == 1 assert ArchiveModel.select().count() == 3 assert RepoModel.get(id=1).unique_size == 15520474 assert main.createStartBtn.isEnabled() assert main.archiveTab.archiveTable.rowCount() == 3 assert main.scheduleTab.logTableWidget.rowCount() == 1
def test_archive_delete(qapp, qtbot, mocker, borg_json_output): main = qapp.main_window tab = main.archiveTab main.tabWidget.setCurrentIndex(3) tab.populate_from_profile() qtbot.waitUntil(lambda: tab.archiveTable.rowCount() == 2) tab.archiveTable.selectRow(0) stdout, stderr = borg_json_output('delete') popen_result = mocker.MagicMock(stdout=stdout, stderr=stderr, returncode=0) mocker.patch.object(vorta.borg.borg_job, 'Popen', return_value=popen_result) mocker.patch.object(vorta.views.archive_tab.ArchiveTab, 'confirm_dialog', lambda x, y, z: True) tab.delete_action() qtbot.waitUntil(lambda: main.progressText.text() == 'Archive deleted.', **pytest._wait_defaults) assert ArchiveModel.select().count() == 1 assert tab.archiveTable.rowCount() == 1
def test_repo_list(qapp, qtbot, mocker, borg_json_output): main = qapp.main_window tab = main.archiveTab stdout, stderr = borg_json_output('list') popen_result = mocker.MagicMock(stdout=stdout, stderr=stderr, returncode=0) mocker.patch.object(vorta.borg.borg_job, 'Popen', return_value=popen_result) main.tabWidget.setCurrentIndex(3) tab.list_action() qtbot.waitUntil(lambda: not tab.checkButton.isEnabled(), **pytest._wait_defaults) assert not tab.checkButton.isEnabled() qtbot.waitUntil( lambda: main.progressText.text() == 'Refreshing archives done.', **pytest._wait_defaults) assert ArchiveModel.select().count() == 6 assert main.progressText.text() == 'Refreshing archives done.' assert tab.checkButton.isEnabled()