Skip to content

Commit 4a3be05

Browse files
Merge pull request #120 from Josh-Voyles/pmi-popup
Pmi popup
2 parents 2d489f5 + c23bda6 commit 4a3be05

File tree

2 files changed

+29
-5
lines changed

2 files changed

+29
-5
lines changed

home-choice-pro/tests/test_views/test_main_window.py

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
import pytest
1818
import os
19+
from PyQt5.QtWidgets import QMessageBox
1920
from PyQt5 import QtCore
2021
from views.main_window import MainWindow
2122

@@ -33,6 +34,21 @@ def main_window(qtbot):
3334
yield main_window
3435

3536

37+
@pytest.fixture
38+
def mock_qmessagebox(qtbot):
39+
"""This fixture sinks the QMessageBox to prevent the pop up"""
40+
41+
def mock_messagebox(*args, **kwargs):
42+
msgbox = QMessageBox()
43+
msgbox.setText("Mock Message Box")
44+
msgbox.setStandardButtons(QMessageBox.Ok)
45+
return msgbox
46+
47+
QMessageBox.warning = mock_messagebox
48+
QMessageBox.information = mock_messagebox
49+
QMessageBox.critical = mock_messagebox
50+
51+
3652
def test_main_window(main_window):
3753
assert isinstance(main_window, MainWindow)
3854

@@ -97,8 +113,6 @@ def test_verify_digits(main_window):
97113
assert main_window.verify_digits() is False
98114

99115

100-
# I had trouble closing the error box. Since it's small, I've ommited it.
101-
102116
def test_monthly_payment_edit(main_window, qtbot):
103117
main_window.ui.monthlyPaymentEdit.clear()
104118
qtbot.keyClicks(main_window.ui.monthlyPaymentEdit, "12345")
@@ -152,7 +166,7 @@ def test_PMI_edit(main_window, qtbot):
152166
assert main_window.ui.PMIEdit.text() == "0.34"
153167

154168

155-
def test_calculate_house(main_window, qtbot):
169+
def test_calculate_house(main_window, mock_qmessagebox, qtbot):
156170
"""Tests known values and validates the result"""
157171
# enter values in gui
158172
main_window.ui.monthlyPaymentEdit.clear()
@@ -171,7 +185,7 @@ def test_calculate_house(main_window, qtbot):
171185
assert main_window.ui.downPaymentHeaderLabel.text() == "Down Payment: 0%"
172186

173187

174-
def test_calculate_house_2(main_window, qtbot):
188+
def test_calculate_house_2(main_window, mock_qmessagebox, qtbot):
175189
"""Tests known values and validates the result"""
176190
# enter values in gui
177191
main_window.ui.monthlyPaymentEdit.clear()
@@ -194,7 +208,7 @@ def test_calculate_house_2(main_window, qtbot):
194208
assert main_window.ui.downPaymentHeaderLabel.text() == "Down Payment: 18%"
195209

196210

197-
def test_calculate_house_3(main_window, qtbot):
211+
def test_calculate_house_3(main_window, mock_qmessagebox, qtbot):
198212
"""Third calculation test adding PMI and insurance"""
199213
# enter values in gui
200214
main_window.ui.monthlyPaymentEdit.clear()

home-choice-pro/views/main_window.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ def __init__(self):
4242
self.setWindowTitle("Home Choice Pro")
4343
self.guide = self.open_guide()
4444
self.ui.guideLabel.setText(self.guide)
45+
self.pmi_warned = False
4546

4647
self.edit_boxes = [
4748
self.ui.monthlyPaymentEdit,
@@ -102,6 +103,9 @@ def display_results(self):
102103
f"Down Payment: {str(self.downpayment)}%"
103104
)
104105

106+
if int(self.downpayment) < 20:
107+
self.display_PMI_warning()
108+
105109
def reset(self):
106110
"""Resets all edit boxes to 0."""
107111
for edit in self.edit_boxes:
@@ -140,3 +144,9 @@ def display_calculator_page(self):
140144
def display_user_guide(self):
141145
"""Set stacked widgeted index to show user guide"""
142146
self.ui.stackedWidget.setCurrentIndex(3)
147+
148+
def display_PMI_warning(self):
149+
if not self.pmi_warned:
150+
message = "Private Mortage Insurance typically required with down payments less than 20 percent"
151+
QMessageBox.warning(self, "PMI Error", message)
152+
self.pmi_warned = True

0 commit comments

Comments
 (0)