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

Last change on this file since 46ca1f4 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
RevLine 
[f721030]1import sys
2import unittest
[53c771e]3import logging
[f721030]4
[53c771e]5from PyQt5 import QtGui, QtWidgets
6from PyQt5 import QtTest
7from PyQt5 import QtCore
[7fb471d]8from unittest.mock import MagicMock
[f721030]9
[31c5b58]10# set up import paths
11import path_prepare
12
[f721030]13# Local
[83eb5208]14from sas.qtgui.MainWindow.MainWindow import MainSasViewWindow
15from sas.qtgui.MainWindow.MainWindow import SplashScreen
[53c771e]16from sas.qtgui.MainWindow.GuiManager import GuiManager
[8353d90]17from sas.qtgui.Perspectives.Fitting import FittingPerspective
[f721030]18
[53c771e]19if not QtWidgets.QApplication.instance():
20    app = QtWidgets.QApplication(sys.argv)
[f721030]21
22class MainWindowTest(unittest.TestCase):
[9e426c1]23    """Test the Main Window GUI"""
[f721030]24    def setUp(self):
[9e426c1]25        """Create the GUI"""
[f721030]26
27        self.widget = MainSasViewWindow(None)
28
29    def tearDown(self):
[9e426c1]30        """Destroy the GUI"""
[f721030]31        self.widget = None
32
33    def testDefaults(self):
[9e426c1]34        """Test the GUI in its default state"""
[53c771e]35        self.assertIsInstance(self.widget, QtWidgets.QMainWindow)
36        self.assertIsInstance(self.widget.centralWidget(), QtWidgets.QMdiArea)
[f721030]37       
38    def testSplashScreen(self):
[9e426c1]39        """ Test the splash screen """
40        splash = SplashScreen()
[53c771e]41        self.assertIsInstance(splash, QtWidgets.QSplashScreen)
[9e426c1]42
[8353d90]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
[9e426c1]61    def testExit(self):
[f721030]62        """
[9e426c1]63        Test that the custom exit method is called on shutdown
[f721030]64        """
[9e426c1]65        # Must mask sys.exit, otherwise the whole testing process stops.
66        sys.exit = MagicMock()
[53c771e]67        QtWidgets.QMessageBox.question = MagicMock(return_value=QtWidgets.QMessageBox.Yes)
[9e426c1]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
[53c771e]74        self.assertTrue(QtWidgets.QMessageBox.question.called)
[f721030]75       
76if __name__ == "__main__":
77    unittest.main()
Note: See TracBrowser for help on using the repository browser.