3333
3434# Standard Library Imports
3535import unittest
36+ from unittest .mock import patch , MagicMock
3637from pathlib import Path
3738
3839# Third Party Imports
3940
4041# Local Imports
4142from navigate .tools .main_functions import create_parser
4243from navigate .config .config import get_navigate_path
44+ from navigate .main import main
4345
4446
45- class TestMain (unittest .TestCase ):
47+ def get_args ():
48+ args = MagicMock ()
49+ args .configurator = False
50+ args .config_file = False
51+ args .experiment_file = False
52+ args .waveform_constants_file = False
53+ args .rest_api_file = False
54+ args .waveform_templates_file = False
55+ args .gui_config_file = False
56+ args .logging_config = False
57+ args .synthetic_hardware = True
58+ return args
59+
60+
61+ class TestArgParser (unittest .TestCase ):
4662 """Unit Test for main.py"""
4763
4864 def test_argument_parser (self ):
65+ """Test Argument Parser"""
4966 parser = create_parser ()
5067
5168 # Boolean arguments
@@ -67,5 +84,38 @@ def test_argument_parser(self):
6784 parser .parse_args ([arg , str (Path .joinpath (navigate_path , "test.yml" ))])
6885
6986
70- if __name__ == "__main__" :
71- unittest .main ()
87+ class TestMainController (unittest .TestCase ):
88+ """Unit Test for main.py"""
89+
90+ @patch ("navigate.main.tk.Tk.mainloop" )
91+ @patch ("navigate.main.Controller" )
92+ @patch ("argparse.ArgumentParser.parse_args" )
93+ def test_main_call_controller (
94+ self , mock_parse_args , mock_controller , mock_mainloop
95+ ):
96+ args = get_args ()
97+ mock_parse_args .return_value = args
98+
99+ mock_mainloop .return_value = MagicMock ()
100+ main ()
101+ mock_controller .assert_called_once ()
102+
103+
104+ # class TestMainConfigurator(unittest.TestCase):
105+ # """ Unit Test for main.py """
106+ # @patch('navigate.main.tk.Tk.mainloop')
107+ # @patch('navigate.main.Controller')
108+ # @patch('argparse.ArgumentParser.parse_args')
109+ # def test_main_configurator(
110+ # self,
111+ # mock_parse_args,
112+ # mock_controller,
113+ # mock_mainloop
114+ # ):
115+ # args = get_args()
116+ # args.configurator = True
117+ # mock_parse_args.return_value = args
118+ #
119+ # mock_mainloop.return_value = MagicMock()
120+ # main()
121+ # mock_controller.assert_not_called()
0 commit comments