Skip to content

Commit

Permalink
test profile import overwrite
Browse files Browse the repository at this point in the history
  • Loading branch information
shivansh02 committed Jun 7, 2024
1 parent a23ec26 commit ca15511
Showing 1 changed file with 38 additions and 2 deletions.
40 changes: 38 additions & 2 deletions tests/unit/test_profile.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
import tempfile

from PyQt6 import QtCore
from PyQt6.QtWidgets import QDialogButtonBox, QMessageBox, QToolTip
from vorta.store.models import BackupProfileModel
from PyQt6.QtWidgets import QDialogButtonBox, QFileDialog, QMessageBox, QToolTip
from vorta.store.models import BackupProfileModel, SourceFileModel
from vorta.views.export_window import ExportWindow


def test_profile_add_delete(qapp, qtbot, mocker):
Expand Down Expand Up @@ -47,3 +50,36 @@ def test_profile_edit(qapp, qtbot):
assert BackupProfileModel.get_or_none(name='Default') is None
assert BackupProfileModel.get_or_none(name='Test Profile') is not None
assert main.profileSelector.currentItem().text() == 'Test Profile'


def test_profile_import_no_duplicate_sources(qapp, qtbot, mocker):
"""Tests importing an existing profile and choosing to overwrite does not add duplicate sources."""
main = qapp.main_window

# Create a new profile and add sources
profile = BackupProfileModel.create(name='Test Profile')
sources = ['/path/to/source1', '/path/to/source2']
for source_path in sources:
SourceFileModel.create(dir=source_path, path=source_path, profile=profile)

# Export the profile
with tempfile.NamedTemporaryFile(suffix=".json", delete=False) as temp_file:
temp_file_path = temp_file.name

export_window = ExportWindow(profile)
mocker.patch.object(QFileDialog, 'getSaveFileName', return_value=(temp_file_path, 'JSON (*.json)'))
export_window.run()

# Mock the QMessageBox to return 'Yes' to overwrite the profile
mocker.patch.object(QMessageBox, 'question', return_value=QMessageBox.StandardButton.Yes)

# Mock the QFileDialog to return the name of the temporary file
mocker.patch.object(QFileDialog, 'getOpenFileName', return_value=(temp_file_path, 'JSON (*.json)'))

# Import the profile and choose to overwrite
main.profile_import_action()

# Check that the sources in the profile are the same as before and there are no duplicates
imported_sources = [source.dir for source in SourceFileModel.select().where(SourceFileModel.profile == profile)]
assert set(imported_sources) == set(sources)
assert len(imported_sources) == len(sources)

0 comments on commit ca15511

Please sign in to comment.