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': parser.parse(archive['time']) }) new_archive.save()
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_thread, '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 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_thread, 'Popen', return_value=popen_result) qtbot.mouseClick(main.createStartBtn, QtCore.Qt.LeftButton) qtbot.waitUntil(lambda: main.progressText.text().startswith('Backup finished.'), timeout=3000) qtbot.waitUntil(lambda: main.createStartBtn.isEnabled(), timeout=3000) 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_repo_list(app, qtbot, mocker, borg_json_output): main = app.main_window tab = main.archiveTab main.tabWidget.setCurrentIndex(3) tab.list_action() assert not tab.checkButton.isEnabled() stdout, stderr = borg_json_output('list') popen_result = mocker.MagicMock(stdout=stdout, stderr=stderr, returncode=0) mocker.patch.object(vorta.borg.borg_thread, 'Popen', return_value=popen_result) qtbot.waitUntil(lambda: main.createProgressText.text() == 'Refreshing archives done.', timeout=3000) assert ArchiveModel.select().count() == 6 assert main.createProgressText.text() == 'Refreshing archives done.' assert tab.checkButton.isEnabled()
def process_result(self, result): if result['returncode'] == 0: repo, created = RepoModel.get_or_create(url=result['cmd'][-1]) remote_snapshots = result['data'].get('archives', []) # Delete snapshots that don't exist on the remote side for snapshot in ArchiveModel.select().where(ArchiveModel.repo == repo.id): if not list(filter(lambda s: s['id'] == snapshot.snapshot_id, remote_snapshots)): snapshot.delete_instance() # Add remote snapshots we don't have locally. for snapshot in result['data'].get('archives', []): new_snapshot, _ = ArchiveModel.get_or_create( snapshot_id=snapshot['id'], defaults={ 'repo': repo.id, 'name': snapshot['name'], 'time': parser.parse(snapshot['time']) } ) new_snapshot.save()
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_thread, 'Popen', return_value=popen_result) mocker.patch.object(vorta.views.archive_tab.ArchiveTab, 'confirm_dialog', lambda x, y, z: True) qtbot.mouseClick(tab.deleteButton, QtCore.Qt.LeftButton) qtbot.waitUntil(lambda: main.progressText.text() == 'Archive deleted.', timeout=3000) assert ArchiveModel.select().count() == 1 assert tab.archiveTable.rowCount() == 1