|
|
@ -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') |
|
|
|