Changeset 9e426c1 in sasview for src/sas/qtgui/UnitTesting/GuiManagerTest.py
- Timestamp:
- Jun 21, 2016 8:07:33 AM (8 years ago)
- Branches:
- ESS_GUI, ESS_GUI_Docs, ESS_GUI_batch_fitting, ESS_GUI_bumps_abstraction, ESS_GUI_iss1116, ESS_GUI_iss879, ESS_GUI_iss959, ESS_GUI_opencl, ESS_GUI_ordering, ESS_GUI_sync_sascalc
- Children:
- f82ab8c
- Parents:
- 1042dba
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/sas/qtgui/UnitTesting/GuiManagerTest.py
r5032ea68 r9e426c1 1 1 import sys 2 import subprocess 2 3 import unittest 4 import webbrowser 5 import logging 3 6 4 7 from PyQt4.QtGui import * 5 8 from PyQt4.QtTest import QTest 6 9 from PyQt4.QtCore import * 10 from PyQt4.QtWebKit import * 7 11 from mock import MagicMock 8 12 … … 10 14 from GuiManager import GuiManager 11 15 from UI.MainWindowUI import MainWindow 16 from UnitTesting.TestUtils import QtSignalSpy 12 17 13 18 app = QApplication(sys.argv) … … 56 61 pass 57 62 63 def testQuitApplication(self): 64 """ 65 Test that the custom exit method is called on shutdown 66 """ 67 # Must mask sys.exit, otherwise the whole testing process stops. 68 sys.exit = MagicMock() 69 70 # Say No to the close dialog 71 QMessageBox.question = MagicMock(return_value=QMessageBox.No) 72 73 # Open, then close the manager 74 self.manager.quitApplication() 75 76 # See that the MessageBox method got called 77 self.assertTrue(QMessageBox.question.called) 78 # sys.exit() not called this time 79 self.assertFalse(sys.exit.called) 80 81 # Say Yes to the close dialog 82 QMessageBox.question = MagicMock(return_value=QMessageBox.Yes) 83 84 # Open, then close the manager 85 self.manager.quitApplication() 86 87 # See that the MessageBox method got called 88 self.assertTrue(QMessageBox.question.called) 89 # Also, sys.exit() called 90 self.assertTrue(sys.exit.called) 91 92 def testCheckUpdate(self): 93 """ 94 Tests the SasView website version polling 95 """ 96 self.manager.processVersion = MagicMock() 97 version = {'update_url' : 'http://www.sasview.org/sasview.latestversion', 98 'version' : '3.1.2', 99 'download_url': 'https://github.com/SasView/sasview/releases'} 100 self.manager.checkUpdate() 101 102 self.manager.processVersion.assert_called_with(version) 103 104 pass 105 106 def testProcessVersion(self): 107 """ 108 Tests the version checker logic 109 """ 110 # 1. version = 0.0.0 111 version_info = {u'version' : u'0.0.0'} 112 spy_status_update = QtSignalSpy(self.manager, self.manager.communicate.statusBarUpdateSignal) 113 114 self.manager.processVersion(version_info) 115 116 self.assertEqual(spy_status_update.count(), 1) 117 message = 'Could not connect to the application server. Please try again later.' 118 self.assertIn(message, str(spy_status_update.signal(index=0))) 119 120 # 2. version < LocalConfig.__version__ 121 version_info = {u'version' : u'0.0.1'} 122 spy_status_update = QtSignalSpy(self.manager, self.manager.communicate.statusBarUpdateSignal) 123 124 self.manager.processVersion(version_info) 125 126 self.assertEqual(spy_status_update.count(), 1) 127 message = 'You have the latest version of SasView' 128 self.assertIn(message, str(spy_status_update.signal(index=0))) 129 130 # 3. version > LocalConfig.__version__ 131 version_info = {u'version' : u'999.0.0'} 132 spy_status_update = QtSignalSpy(self.manager, self.manager.communicate.statusBarUpdateSignal) 133 webbrowser.open = MagicMock() 134 135 self.manager.processVersion(version_info) 136 137 self.assertEqual(spy_status_update.count(), 1) 138 message = 'Version 999.0.0 is available!' 139 self.assertIn(message, str(spy_status_update.signal(index=0))) 140 141 webbrowser.open.assert_called_with("https://github.com/SasView/sasview/releases") 142 143 # 4. version > LocalConfig.__version__ and standalone 144 version_info = {u'version' : u'999.0.0'} 145 spy_status_update = QtSignalSpy(self.manager, self.manager.communicate.statusBarUpdateSignal) 146 webbrowser.open = MagicMock() 147 148 self.manager.processVersion(version_info, standalone=True) 149 150 self.assertEqual(spy_status_update.count(), 1) 151 message = 'See the help menu to download it' 152 self.assertIn(message, str(spy_status_update.signal(index=0))) 153 154 self.assertFalse(webbrowser.open.called) 155 156 # 5. couldn't load version 157 version_info = {} 158 logging.error = MagicMock() 159 spy_status_update = QtSignalSpy(self.manager, self.manager.communicate.statusBarUpdateSignal) 160 161 self.manager.processVersion(version_info) 162 163 # Retrieve and compare arguments of the mocked call 164 message = "guiframe: could not get latest application version number" 165 args, _ = logging.error.call_args 166 self.assertIn(message, args[0]) 167 168 # Check the signal message 169 message = 'Could not connect to the application server.' 170 self.assertIn(message, str(spy_status_update.signal(index=0))) 171 58 172 def testActions(self): 59 173 """ … … 66 180 """ 67 181 # Mock the system file open method 68 QFileDialog.getOpenFileName = MagicMock(return_value=None)182 QFileDialog.getOpenFileNames = MagicMock(return_value=None) 69 183 70 184 # invoke the action 185 self.manager.actionLoadData() 71 186 72 187 # Test the getOpenFileName() dialog called once 73 #self.assertTrue(QtGui.QFileDialog.getOpenFileName.called) 74 #QtGui.QFileDialog.getOpenFileName.assert_called_once() 188 self.assertTrue(QFileDialog.getOpenFileNames.called) 75 189 76 77 # test each action separately 190 def testActionDocumentation(self): 191 """ 192 Menu Help/Documentation 193 """ 194 #Mock the QWebView method 195 QWebView.show = MagicMock() 196 197 # Assure the filename is correct 198 self.assertIn("index.html", self.manager._helpLocation) 199 200 # Invoke the action 201 self.manager.actionDocumentation() 202 203 # Check if show() got called 204 self.assertTrue(QWebView.show.called) 205 206 def testActionTutorial(self): 207 """ 208 Menu Help/Tutorial 209 """ 210 # Mock subprocess.Popen 211 subprocess.Popen = MagicMock() 212 213 tested_location = self.manager._tutorialLocation 214 215 # Assure the filename is correct 216 self.assertIn("Tutorial.pdf", tested_location) 217 218 # Invoke the action 219 self.manager.actionTutorial() 220 221 # Check if popen() got called 222 self.assertTrue(subprocess.Popen.called) 223 224 #Check the popen() call arguments 225 subprocess.Popen.assert_called_with([tested_location], shell=True) 226 227 def testActionAcknowledge(self): 228 """ 229 Menu Help/Acknowledge 230 """ 231 pass 232 233 def testActionCheck_for_update(self): 234 """ 235 Menu Help/Check for update 236 """ 237 # Just make sure checkUpdate is called. 238 self.manager.checkUpdate = MagicMock() 239 240 self.manager.actionCheck_for_update() 241 242 self.assertTrue(self.manager.checkUpdate.called) 243 78 244 79 245 if __name__ == "__main__":
Note: See TracChangeset
for help on using the changeset viewer.