mirror of https://github.com/chriskiehl/Gooey.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
89 lines
2.7 KiB
89 lines
2.7 KiB
import sys
|
|
|
|
import pytest
|
|
import wx
|
|
from mock import MagicMock
|
|
|
|
from gooey.gui.lang import i18n
|
|
from gooey.gui.model import MyModel
|
|
from gooey.gui.presenter import Presenter
|
|
from gooey.gui.util.freeze import get_resource_path
|
|
from gooey.python_bindings import config_generator
|
|
|
|
|
|
@pytest.fixture
|
|
def build_spec(complete_parser):
|
|
return config_generator.create_from_parser(complete_parser, sys.argv[0])
|
|
|
|
@pytest.fixture
|
|
def build_spec_subparser(subparser):
|
|
return config_generator.create_from_parser(subparser, sys.argv[0])
|
|
|
|
@pytest.fixture
|
|
def presentation_model(build_spec):
|
|
app = wx.App(False)
|
|
i18n.load(get_resource_path('languages'), build_spec['language'])
|
|
model = MyModel(build_spec)
|
|
view = MagicMock()
|
|
presentation = Presenter(view, model)
|
|
return presentation
|
|
|
|
@pytest.fixture
|
|
def subparser_presentation_model(build_spec_subparser):
|
|
app = wx.App(False)
|
|
i18n.load(get_resource_path('languages'), 'english')
|
|
model = MyModel(build_spec_subparser)
|
|
view = MagicMock()
|
|
presentation = Presenter(view, model)
|
|
return presentation
|
|
|
|
|
|
|
|
|
|
# ----------------------------
|
|
# Tests #
|
|
# ----------------------------
|
|
|
|
def test_presentation_init(presentation_model):
|
|
'''Sanity check that the primary fields are set on init '''
|
|
presentation = presentation_model
|
|
presentation.initialize_view()
|
|
assert presentation.view.heading_title == presentation.model.heading_title
|
|
assert presentation.view.heading_subtitle == presentation.model.heading_subtitle
|
|
assert presentation.view.required_section.populate.called
|
|
assert presentation.view.optional_section.populate.called
|
|
# should not call when not running in column format
|
|
assert not presentation.view.set_list_contents.called
|
|
|
|
def test_subparser_presentation_init_sets_sidebar(subparser_presentation_model):
|
|
presentation = subparser_presentation_model
|
|
presentation.initialize_view()
|
|
# should be called to initialize the sidebar
|
|
assert presentation.view.set_list_contents.called
|
|
|
|
def test_on_start_shows_err_dlg_if_missing_args(presentation_model):
|
|
presentation = presentation_model
|
|
presentation.initialize_view()
|
|
presentation.on_start()
|
|
assert presentation.view.show_missing_args_dialog.called
|
|
presentation.view.show_missing_args_dialog.reset_mock()
|
|
|
|
# the inverse:
|
|
# fill the missing args
|
|
for arg in presentation.model.required_args:
|
|
arg.value = 'foo'
|
|
# patch the methods we don't need
|
|
presentation.client_runner = MagicMock()
|
|
presentation.update_model = MagicMock()
|
|
presentation.model.build_command_line_string = MagicMock()
|
|
|
|
presentation.on_start()
|
|
# should no longer show the dialog
|
|
assert not presentation.view.show_missing_args_dialog.called
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|