source: sasview/src/sas/qtgui/MainWindow/UnitTesting/MainWindowTest.py @ fb560d2

ESS_GUIESS_GUI_batch_fittingESS_GUI_bumps_abstractionESS_GUI_iss1116ESS_GUI_iss879ESS_GUI_openclESS_GUI_orderingESS_GUI_sync_sascalc
Last change on this file since fb560d2 was 8353d90, checked in by Piotr Rozyczko <rozyczko@…>, 7 years ago

Assure the main window opens maximized and the welcome widget doesnt mess up the layout. SASVIEW-831

  • Property mode set to 100644
File size: 2.5 KB
Line 
1import sys
2import unittest
3import logging
4
5from PyQt5 import QtGui, QtWidgets
6from PyQt5 import QtTest
7from PyQt5 import QtCore
8from unittest.mock import MagicMock
9
10# set up import paths
11import path_prepare
12
13# Local
14from sas.qtgui.MainWindow.MainWindow import MainSasViewWindow
15from sas.qtgui.MainWindow.MainWindow import SplashScreen
16from sas.qtgui.MainWindow.GuiManager import GuiManager
17from sas.qtgui.Perspectives.Fitting import FittingPerspective
18
19if not QtWidgets.QApplication.instance():
20    app = QtWidgets.QApplication(sys.argv)
21
22class MainWindowTest(unittest.TestCase):
23    """Test the Main Window GUI"""
24    def setUp(self):
25        """Create the GUI"""
26
27        self.widget = MainSasViewWindow(None)
28
29    def tearDown(self):
30        """Destroy the GUI"""
31        self.widget = None
32
33    def testDefaults(self):
34        """Test the GUI in its default state"""
35        self.assertIsInstance(self.widget, QtWidgets.QMainWindow)
36        self.assertIsInstance(self.widget.centralWidget(), QtWidgets.QMdiArea)
37       
38    def testSplashScreen(self):
39        """ Test the splash screen """
40        splash = SplashScreen()
41        self.assertIsInstance(splash, QtWidgets.QSplashScreen)
42
43    def testWidgets(self):
44        """ Test enablement/disablement of widgets """
45        # Open the main window
46        tmp_main = MainSasViewWindow(None)
47        tmp_main.showMaximized()
48        # See that only one subwindow is up
49        self.assertEqual(len(tmp_main.workspace.subWindowList()), 1)
50        # and that the subwindow is the fitting perspective
51        self.assertIsInstance(tmp_main.workspace.subWindowList()[0].widget(),
52                              FittingPerspective.FittingWindow)
53        # Show the message widget
54        tmp_main.guiManager.showWelcomeMessage()
55        # Assure it is visible and a part of the MdiArea
56        self.assertTrue(tmp_main.guiManager.welcomePanel.isVisible())
57        self.assertEqual(len(tmp_main.workspace.subWindowList()), 2)
58
59        tmp_main.close()
60
61    def testExit(self):
62        """
63        Test that the custom exit method is called on shutdown
64        """
65        # Must mask sys.exit, otherwise the whole testing process stops.
66        sys.exit = MagicMock()
67        QtWidgets.QMessageBox.question = MagicMock(return_value=QtWidgets.QMessageBox.Yes)
68
69        # Open, then close the main window
70        tmp_main = MainSasViewWindow(None)
71        tmp_main.close()
72
73        # See that the MessageBox method got called
74        self.assertTrue(QtWidgets.QMessageBox.question.called)
75       
76if __name__ == "__main__":
77    unittest.main()
Note: See TracBrowser for help on using the repository browser.