Fix reminders tests from segfaulting
This commit is contained in:
parent
422411f12e
commit
25f0c28582
1 changed files with 63 additions and 44 deletions
|
|
@ -1,6 +1,6 @@
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
from unittest.mock import patch
|
from unittest.mock import patch, MagicMock
|
||||||
from bouquin.reminders import (
|
from bouquin.reminders import (
|
||||||
Reminder,
|
Reminder,
|
||||||
ReminderType,
|
ReminderType,
|
||||||
|
|
@ -302,20 +302,24 @@ def test_upcoming_reminders_widget_add_reminder(qtbot, app, fresh_db):
|
||||||
widget = UpcomingRemindersWidget(fresh_db)
|
widget = UpcomingRemindersWidget(fresh_db)
|
||||||
qtbot.addWidget(widget)
|
qtbot.addWidget(widget)
|
||||||
|
|
||||||
with patch.object(ReminderDialog, "exec", return_value=QDialog.Accepted):
|
new_reminder = Reminder(
|
||||||
with patch.object(ReminderDialog, "get_reminder") as mock_get:
|
id=None,
|
||||||
mock_get.return_value = Reminder(
|
text="New reminder",
|
||||||
id=None,
|
time_str="10:00",
|
||||||
text="New reminder",
|
reminder_type=ReminderType.DAILY,
|
||||||
time_str="10:00",
|
)
|
||||||
reminder_type=ReminderType.DAILY,
|
|
||||||
)
|
|
||||||
|
|
||||||
widget._add_reminder()
|
# Mock the entire ReminderDialog class to avoid Qt parent issues
|
||||||
|
mock_dialog = MagicMock()
|
||||||
|
mock_dialog.exec.return_value = QDialog.Accepted
|
||||||
|
mock_dialog.get_reminder.return_value = new_reminder
|
||||||
|
|
||||||
# Reminder should be saved
|
with patch("bouquin.reminders.ReminderDialog", return_value=mock_dialog):
|
||||||
reminders = fresh_db.get_all_reminders()
|
widget._add_reminder()
|
||||||
assert len(reminders) > 0
|
|
||||||
|
# Reminder should be saved
|
||||||
|
reminders = fresh_db.get_all_reminders()
|
||||||
|
assert len(reminders) > 0
|
||||||
|
|
||||||
|
|
||||||
def test_upcoming_reminders_widget_edit_reminder(qtbot, app, fresh_db):
|
def test_upcoming_reminders_widget_edit_reminder(qtbot, app, fresh_db):
|
||||||
|
|
@ -338,17 +342,20 @@ def test_upcoming_reminders_widget_edit_reminder(qtbot, app, fresh_db):
|
||||||
if widget.reminder_list.count() > 0:
|
if widget.reminder_list.count() > 0:
|
||||||
item = widget.reminder_list.item(0)
|
item = widget.reminder_list.item(0)
|
||||||
|
|
||||||
with patch.object(ReminderDialog, "exec", return_value=QDialog.Accepted):
|
updated = Reminder(
|
||||||
with patch.object(ReminderDialog, "get_reminder") as mock_get:
|
id=1,
|
||||||
updated = Reminder(
|
text="Updated",
|
||||||
id=1,
|
time_str="11:00",
|
||||||
text="Updated",
|
reminder_type=ReminderType.DAILY,
|
||||||
time_str="11:00",
|
)
|
||||||
reminder_type=ReminderType.DAILY,
|
|
||||||
)
|
|
||||||
mock_get.return_value = updated
|
|
||||||
|
|
||||||
widget._edit_reminder(item)
|
# Mock the entire ReminderDialog class to avoid Qt parent issues
|
||||||
|
mock_dialog = MagicMock()
|
||||||
|
mock_dialog.exec.return_value = QDialog.Accepted
|
||||||
|
mock_dialog.get_reminder.return_value = updated
|
||||||
|
|
||||||
|
with patch("bouquin.reminders.ReminderDialog", return_value=mock_dialog):
|
||||||
|
widget._edit_reminder(item)
|
||||||
|
|
||||||
|
|
||||||
def test_upcoming_reminders_widget_delete_selected_single(qtbot, app, fresh_db):
|
def test_upcoming_reminders_widget_delete_selected_single(qtbot, app, fresh_db):
|
||||||
|
|
@ -463,19 +470,23 @@ def test_manage_reminders_dialog_add_reminder(qtbot, app, fresh_db):
|
||||||
|
|
||||||
initial_count = dialog.table.rowCount()
|
initial_count = dialog.table.rowCount()
|
||||||
|
|
||||||
with patch.object(ReminderDialog, "exec", return_value=QDialog.Accepted):
|
new_reminder = Reminder(
|
||||||
with patch.object(ReminderDialog, "get_reminder") as mock_get:
|
id=None,
|
||||||
mock_get.return_value = Reminder(
|
text="New",
|
||||||
id=None,
|
time_str="10:00",
|
||||||
text="New",
|
reminder_type=ReminderType.DAILY,
|
||||||
time_str="10:00",
|
)
|
||||||
reminder_type=ReminderType.DAILY,
|
|
||||||
)
|
|
||||||
|
|
||||||
dialog._add_reminder()
|
# Mock the entire ReminderDialog class to avoid Qt parent issues
|
||||||
|
mock_dialog = MagicMock()
|
||||||
|
mock_dialog.exec.return_value = QDialog.Accepted
|
||||||
|
mock_dialog.get_reminder.return_value = new_reminder
|
||||||
|
|
||||||
# Table should have one more row
|
with patch("bouquin.reminders.ReminderDialog", return_value=mock_dialog):
|
||||||
assert dialog.table.rowCount() == initial_count + 1
|
dialog._add_reminder()
|
||||||
|
|
||||||
|
# Table should have one more row
|
||||||
|
assert dialog.table.rowCount() == initial_count + 1
|
||||||
|
|
||||||
|
|
||||||
def test_manage_reminders_dialog_edit_reminder(qtbot, app, fresh_db):
|
def test_manage_reminders_dialog_edit_reminder(qtbot, app, fresh_db):
|
||||||
|
|
@ -492,16 +503,20 @@ def test_manage_reminders_dialog_edit_reminder(qtbot, app, fresh_db):
|
||||||
dialog = ManageRemindersDialog(fresh_db)
|
dialog = ManageRemindersDialog(fresh_db)
|
||||||
qtbot.addWidget(dialog)
|
qtbot.addWidget(dialog)
|
||||||
|
|
||||||
with patch.object(ReminderDialog, "exec", return_value=QDialog.Accepted):
|
updated = Reminder(
|
||||||
with patch.object(ReminderDialog, "get_reminder") as mock_get:
|
id=1,
|
||||||
mock_get.return_value = Reminder(
|
text="Updated",
|
||||||
id=1,
|
time_str="11:00",
|
||||||
text="Updated",
|
reminder_type=ReminderType.DAILY,
|
||||||
time_str="11:00",
|
)
|
||||||
reminder_type=ReminderType.DAILY,
|
|
||||||
)
|
|
||||||
|
|
||||||
dialog._edit_reminder(reminder)
|
# Mock the entire ReminderDialog class to avoid Qt parent issues
|
||||||
|
mock_dialog = MagicMock()
|
||||||
|
mock_dialog.exec.return_value = QDialog.Accepted
|
||||||
|
mock_dialog.get_reminder.return_value = updated
|
||||||
|
|
||||||
|
with patch("bouquin.reminders.ReminderDialog", return_value=mock_dialog):
|
||||||
|
dialog._edit_reminder(reminder)
|
||||||
|
|
||||||
|
|
||||||
def test_manage_reminders_dialog_delete_reminder(qtbot, app, fresh_db):
|
def test_manage_reminders_dialog_delete_reminder(qtbot, app, fresh_db):
|
||||||
|
|
@ -627,7 +642,11 @@ def test_upcoming_reminders_widget_manage_button(qtbot, app, fresh_db):
|
||||||
widget = UpcomingRemindersWidget(fresh_db)
|
widget = UpcomingRemindersWidget(fresh_db)
|
||||||
qtbot.addWidget(widget)
|
qtbot.addWidget(widget)
|
||||||
|
|
||||||
with patch.object(ManageRemindersDialog, "exec"):
|
# Mock the entire ManageRemindersDialog class to avoid Qt parent issues
|
||||||
|
mock_dialog = MagicMock()
|
||||||
|
mock_dialog.exec.return_value = QDialog.Accepted
|
||||||
|
|
||||||
|
with patch("bouquin.reminders.ManageRemindersDialog", return_value=mock_dialog):
|
||||||
widget._manage_reminders()
|
widget._manage_reminders()
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue