Browse Source

add test cases for show_stop_warning decorator option

pull/616/head
Chris 4 years ago
parent
commit
9ef0bcf22d
1 changed files with 42 additions and 0 deletions
  1. 42
      gooey/tests/test_application.py

42
gooey/tests/test_application.py

@ -1,5 +1,8 @@
import unittest
from argparse import ArgumentParser
from collections import namedtuple
from unittest.mock import patch
from unittest.mock import MagicMock
from tests.harness import instrumentGooey
@ -15,6 +18,45 @@ class TestGooeyApplication(unittest.TestCase):
with instrumentGooey(parser, fullscreen=shouldShow) as (app, gapp):
self.assertEqual(gapp.IsFullScreen(), shouldShow)
@patch("gui.containers.application.modals.confirmForceStop")
def testGooeyRequestsConfirmationWhenShowStopWarningModalTrue(self, mockModal):
"""
When show_stop_warning=False, Gooey should immediately kill the
running program without additional user confirmation.
Otherwise, Gooey should show a confirmation modal and, dependending on the
user's choice, either do nothing or kill the running program.
"""
Case = namedtuple('Case', ['show_warning', 'shouldSeeConfirm', 'userChooses', 'shouldHaltProgram'])
testcases = [
Case(show_warning=True, shouldSeeConfirm=True, userChooses=True, shouldHaltProgram=True),
Case(show_warning=True, shouldSeeConfirm=True, userChooses=False, shouldHaltProgram=False),
Case(show_warning=False, shouldSeeConfirm=False, userChooses='N/A', shouldHaltProgram=True),
]
for case in testcases:
mockModal.reset_mock()
parser = self.basicParser()
with instrumentGooey(parser, show_stop_warning=case.show_warning) as (app, gapp):
mockClientRunner = MagicMock()
mockModal.return_value = case.userChooses
gapp.clientRunner = mockClientRunner
gapp.onStopExecution()
if case.shouldSeeConfirm:
mockModal.assert_called()
else:
mockModal.assert_not_called()
if case.shouldHaltProgram:
mockClientRunner.stop.assert_called()
else:
mockClientRunner.stop.assert_not_called()
def basicParser(self):
parser = ArgumentParser()
parser.add_argument('--foo')

Loading…
Cancel
Save