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 import unittest
from argparse import ArgumentParser from argparse import ArgumentParser
from collections import namedtuple
from unittest.mock import patch
from unittest.mock import MagicMock
from tests.harness import instrumentGooey from tests.harness import instrumentGooey
@ -15,6 +18,45 @@ class TestGooeyApplication(unittest.TestCase):
with instrumentGooey(parser, fullscreen=shouldShow) as (app, gapp): with instrumentGooey(parser, fullscreen=shouldShow) as (app, gapp):
self.assertEqual(gapp.IsFullScreen(), shouldShow) 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): def basicParser(self):
parser = ArgumentParser() parser = ArgumentParser()
parser.add_argument('--foo') parser.add_argument('--foo')

Loading…
Cancel
Save