2024-03-03 19:23:14 +00:00
|
|
|
from unittest.mock import patch
|
2023-12-03 21:47:43 +00:00
|
|
|
|
2024-03-03 19:23:14 +00:00
|
|
|
from PyQt6 import QtWidgets
|
2024-01-01 19:03:18 +00:00
|
|
|
|
2023-12-03 21:47:43 +00:00
|
|
|
from beeref.widgets.settings import (
|
2023-12-15 21:32:57 +00:00
|
|
|
ArrangeGapWidget,
|
2024-05-20 17:31:06 +00:00
|
|
|
ConfirmCloseUnsavedWidget,
|
2023-12-03 21:47:43 +00:00
|
|
|
ImageStorageFormatWidget,
|
|
|
|
|
SettingsDialog,
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
2024-01-06 10:34:41 +00:00
|
|
|
def test_image_storage_format_sets_title_when_not_edited(settings, view):
|
|
|
|
|
widget = ImageStorageFormatWidget()
|
|
|
|
|
assert widget.title() == 'Image Storage Format:'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_image_storage_format_sets_title_when_edited(settings, view):
|
|
|
|
|
settings.setValue('Items/image_storage_format', 'jpg')
|
|
|
|
|
widget = ImageStorageFormatWidget()
|
|
|
|
|
assert widget.title() == 'Image Storage Format: ✎'
|
|
|
|
|
|
|
|
|
|
|
2023-12-03 21:47:43 +00:00
|
|
|
def test_image_storage_format_selects_radiobox(settings, view):
|
|
|
|
|
settings.setValue('Items/image_storage_format', 'jpg')
|
|
|
|
|
widget = ImageStorageFormatWidget()
|
|
|
|
|
assert widget.buttons['best'].isChecked() is False
|
|
|
|
|
assert widget.buttons['png'].isChecked() is False
|
|
|
|
|
assert widget.buttons['jpg'].isChecked() is True
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_image_storage_format_saves_change(settings, view):
|
|
|
|
|
settings.setValue('Items/image_storage_format', 'best')
|
|
|
|
|
widget = ImageStorageFormatWidget()
|
2024-05-20 17:31:06 +00:00
|
|
|
widget.set_value('jpg')
|
2023-12-03 21:47:43 +00:00
|
|
|
assert widget.buttons['best'].isChecked() is False
|
|
|
|
|
assert widget.buttons['png'].isChecked() is False
|
|
|
|
|
assert widget.buttons['jpg'].isChecked() is True
|
2023-12-15 21:32:57 +00:00
|
|
|
assert settings.valueOrDefault('Items/image_storage_format') == 'jpg'
|
2024-01-06 10:34:41 +00:00
|
|
|
assert widget.title() == 'Image Storage Format: ✎'
|
2023-12-03 21:47:43 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_image_storage_format_on_restore_defaults(settings, view):
|
|
|
|
|
widget = ImageStorageFormatWidget()
|
2024-05-20 17:31:06 +00:00
|
|
|
widget.set_value('jpg')
|
2023-12-03 21:47:43 +00:00
|
|
|
settings.setValue('Items/image_storage_format', 'best')
|
|
|
|
|
widget.on_restore_defaults()
|
|
|
|
|
assert widget.buttons['best'].isChecked() is True
|
|
|
|
|
assert widget.buttons['png'].isChecked() is False
|
|
|
|
|
assert widget.buttons['jpg'].isChecked() is False
|
2024-01-06 10:34:41 +00:00
|
|
|
assert widget.title() == 'Image Storage Format:'
|
2023-12-03 21:47:43 +00:00
|
|
|
|
|
|
|
|
|
2023-12-15 21:32:57 +00:00
|
|
|
def test_arrange_gap_initialises_input_from_settings(settings, view):
|
|
|
|
|
settings.setValue('Items/arrange_gap', 6)
|
|
|
|
|
widget = ArrangeGapWidget()
|
|
|
|
|
assert widget.input.value() == 6
|
|
|
|
|
|
|
|
|
|
|
2024-01-06 10:34:41 +00:00
|
|
|
def test_arrange_gap_sets_title_when_not_edited(settings, view):
|
|
|
|
|
widget = ArrangeGapWidget()
|
|
|
|
|
assert widget.title() == 'Arrange Gap:'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_arrange_gap_sets_title_when_edited(settings, view):
|
|
|
|
|
settings.setValue('Items/arrange_gap', 6)
|
|
|
|
|
widget = ArrangeGapWidget()
|
|
|
|
|
assert widget.title() == 'Arrange Gap: ✎'
|
|
|
|
|
|
|
|
|
|
|
2023-12-15 21:32:57 +00:00
|
|
|
def test_arrange_gap_saves_change(settings, view):
|
|
|
|
|
settings.setValue('Items/arrange_gap', 6)
|
|
|
|
|
widget = ArrangeGapWidget()
|
2024-05-20 17:31:06 +00:00
|
|
|
widget.set_value(8)
|
2023-12-15 21:32:57 +00:00
|
|
|
assert settings.valueOrDefault('Items/arrange_gap') == 8
|
2024-01-06 10:34:41 +00:00
|
|
|
assert widget.title() == 'Arrange Gap: ✎'
|
2023-12-15 21:32:57 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_arrange_gap_on_restore_defaults(settings, view):
|
|
|
|
|
widget = ArrangeGapWidget()
|
2024-05-20 17:31:06 +00:00
|
|
|
widget.set_value(7)
|
2023-12-15 21:32:57 +00:00
|
|
|
settings.setValue('Items/arrange_gap', 0)
|
|
|
|
|
widget.on_restore_defaults()
|
|
|
|
|
assert widget.input.value() == 0
|
2024-01-06 10:34:41 +00:00
|
|
|
assert widget.title() == 'Arrange Gap:'
|
2023-12-15 21:32:57 +00:00
|
|
|
|
|
|
|
|
|
2024-05-20 17:31:06 +00:00
|
|
|
def test_confirm_closed_initialises_input_from_settings(settings, view):
|
|
|
|
|
settings.setValue('Save/confirm_close_unsaved', False)
|
|
|
|
|
widget = ConfirmCloseUnsavedWidget()
|
|
|
|
|
assert widget.input.isChecked() is False
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_confirm_closed_sets_title_when_not_edited(settings, view):
|
|
|
|
|
widget = ConfirmCloseUnsavedWidget()
|
|
|
|
|
assert widget.title() == 'Confirm when closing an unsaved file:'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_confirm_closed_sets_title_when_edited(settings, view):
|
|
|
|
|
settings.setValue('Save/confirm_close_unsaved', False)
|
|
|
|
|
widget = ConfirmCloseUnsavedWidget()
|
|
|
|
|
assert widget.title() == 'Confirm when closing an unsaved file: ✎'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_confirm_closed_saves_change(settings, view):
|
|
|
|
|
settings.setValue('Save/confirm_close_unsaved', True)
|
|
|
|
|
widget = ConfirmCloseUnsavedWidget()
|
|
|
|
|
widget.set_value(False)
|
|
|
|
|
assert settings.valueOrDefault('Save/confirm_close_unsaved') is False
|
|
|
|
|
assert widget.title() == 'Confirm when closing an unsaved file: ✎'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_confirm_closed_on_restore_defaults(settings, view):
|
|
|
|
|
widget = ConfirmCloseUnsavedWidget()
|
|
|
|
|
widget.set_value(False)
|
|
|
|
|
settings.setValue('Save/confirm_close_unsaved', True)
|
|
|
|
|
widget.on_restore_defaults()
|
|
|
|
|
assert widget.input.isChecked() is True
|
|
|
|
|
assert widget.title() == 'Confirm when closing an unsaved file:'
|
|
|
|
|
|
|
|
|
|
|
2023-12-03 21:47:43 +00:00
|
|
|
@patch('PyQt6.QtWidgets.QMessageBox.question',
|
|
|
|
|
return_value=QtWidgets.QMessageBox.StandardButton.Yes)
|
|
|
|
|
def test_settings_dialog_on_restore_defaults(msg_mock, settings, view):
|
|
|
|
|
dialog = SettingsDialog(view)
|
|
|
|
|
settings.setValue('Items/image_storage_format', 'jpg')
|
2023-12-15 21:32:57 +00:00
|
|
|
settings.setValue('Items/arrange_gap', 10)
|
2024-05-20 17:31:06 +00:00
|
|
|
settings.setValue('Save/confirm_close_unsaved', False)
|
2023-12-03 21:47:43 +00:00
|
|
|
dialog.on_restore_defaults()
|
|
|
|
|
msg_mock.assert_called_once()
|
|
|
|
|
assert settings.valueOrDefault('Items/image_storage_format') == 'best'
|
2023-12-15 21:32:57 +00:00
|
|
|
assert settings.valueOrDefault('Items/arrange_gap') == 0
|
2024-05-20 17:31:06 +00:00
|
|
|
assert settings.valueOrDefault('Save/confirm_close_unsaved') is True
|