def test_add_script_doesnt_add_duplicates(self, get, set): menu = RecentlyClosedScriptsMenu(None) menu.add_script_to_settings("C:/script1.py") get.assert_called_once_with(RECENT_SCRIPTS_KEY) set.assert_not_called()
def test_add_script_doesnt_add_empty_string(self, get, set): menu = RecentlyClosedScriptsMenu(None) menu.add_script_to_settings("") get.assert_not_called() set.assert_not_called()
def test_remove_script_from_settings_removes_given_path(self, get, set): menu = RecentlyClosedScriptsMenu(None) menu.remove_script_from_settings("C:/script1.py") get.assert_called_once_with(RECENT_SCRIPTS_KEY) set.assert_called_once_with(RECENT_SCRIPTS_KEY, [(0, "C:/script2.py")])
def test_add_script_to_settings_adds_a_script_to_settings(self, get, set): menu = RecentlyClosedScriptsMenu(None) menu.add_script_to_settings("C:/script3.py") get.assert_called_once_with(RECENT_SCRIPTS_KEY) set.assert_called_once_with(RECENT_SCRIPTS_KEY, [(0, "C:/script3.py"), (1, "C:/script1.py"), (2, "C:/script2.py")])
def test_load_scripts_loads_scripts_from_settings(self, get): menu = RecentlyClosedScriptsMenu(None) load = menu._get_scripts_from_settings() get.assert_called_once_with(RECENT_SCRIPTS_KEY) self.assertEqual(3, len(load)) self.assertTrue("C:/script1.py" in load) self.assertTrue("C:/script2.py" in load) self.assertTrue("C:/script3.py" in load)
def test_open_script_doesnt_open_script_that_doesnt_exist( self, warning, remove_script_from_settings, __): mock_mainwindow = MockQObject() menu = RecentlyClosedScriptsMenu(mock_mainwindow) menu.open_script(fake_script) mock_mainwindow.editor.open_file_in_new_tab.assert_not_called() remove_script_from_settings.assert_called_once_with(fake_script) warning.assert_called_once()
def test_open_script_attempts_to_open_scripts_that_exists(self, _): mock_mainwindow = MockQObject() menu = RecentlyClosedScriptsMenu(mock_mainwindow) os.mkdir(working_directory) open(fake_script, "w+").close() menu.open_script(fake_script) mock_mainwindow.editor.open_file_in_new_tab.assert_called_once_with( fake_script)
def test_add_script_adds_new_scripts_to_the_first_index_and_removes_excess_scripts_from_the_last_index( self, get, set): menu = RecentlyClosedScriptsMenu(None) menu.add_script_to_settings("11") get.assert_called_once_with(RECENT_SCRIPTS_KEY) set.assert_called_once_with(RECENT_SCRIPTS_KEY, [(0, '11'), (1, '1'), (2, '2'), (3, '3'), (4, '4'), (5, '5'), (6, '6'), (7, '7'), (8, '8'), (9, '9')])
def test_add_script_doesnt_add_more_than_max_number_of_scripts( self, get, set): menu = RecentlyClosedScriptsMenu(None) menu.add_script_to_settings("11") get.assert_called_once_with(RECENT_SCRIPTS_KEY) self.assertEqual(RECENT_SCRIPT_MAX_NUMBER, len(set.call_args[0][1])) set.assert_called_once_with(RECENT_SCRIPTS_KEY, [(0, '11'), (1, '1'), (2, '2'), (3, '3'), (4, '4'), (5, '5'), (6, '6'), (7, '7'), (8, '8'), (9, '9')])
def test_repopulate_menu_is_called_on_aboutToShow_signal_being_triggered( self, repopulate_menu, _): menu = RecentlyClosedScriptsMenu(None) menu.aboutToShow.emit() repopulate_menu.assert_called_once()
def test_repopulate_menu_clears_and_then_populates(self, populate_menu, _): fake_object = FakeQObject() menu = RecentlyClosedScriptsMenu(None) menu.addAction(QAction(fake_object)) self.assertEqual(len(menu.actions()), 1) menu.repopulate_menu() self.assertEqual(len(menu.actions()), 0) populate_menu.assert_called_once()
def test_populate_menu_adds_same_number_of_actions_as_script_paths( self, _, __): fake_object = FakeQObject() menu = RecentlyClosedScriptsMenu(fake_object) self.assertEqual(len(menu.actions()), 0) menu.populate_menu() self.assertEqual(len(menu.actions()), 3) self.assertEqual(menu.actions()[0].text(), "1") self.assertEqual(menu.actions()[1].text(), "2") self.assertEqual(menu.actions()[2].text(), "3")
def test_populate_menu_adds_a_default_if_no_scripts_found(self, _, __): fake_object = FakeQObject() menu = RecentlyClosedScriptsMenu(fake_object) self.assertEqual(len(menu.actions()), 0) menu.populate_menu() self.assertEqual(len(menu.actions()), 1) self.assertEqual(menu.actions()[0].text(), "No recently closed scripts found")
def create_actions(self): # --- general application menu options -- # file menu action_open = create_action(self, "Open Script", on_triggered=self.open_file, shortcut="Ctrl+O") action_load_project = create_action(self, "Open Project", on_triggered=self.load_project) action_save_script = create_action(self, "Save Script", on_triggered=self.save_script, shortcut="Ctrl+S") action_save_script_as = create_action(self, "Save Script as...", on_triggered=self.save_script_as) action_generate_ws_script = create_action( self, "Generate Recovery Script", on_triggered=self.generate_script_from_workspaces) action_save_project = create_action(self, "Save Project", on_triggered=self.save_project) action_save_project_as = create_action( self, "Save Project as...", on_triggered=self.save_project_as) action_manage_directories = create_action( self, "Manage User Directories", on_triggered=self.open_manage_directories) action_script_repository = create_action( self, "Script Repository", on_triggered=self.open_script_repository) action_settings = create_action(self, "Settings", on_triggered=self.open_settings_window) action_quit = create_action(self, "&Quit", on_triggered=self.close, shortcut="Ctrl+Q") action_clear_all_memory = create_action( self, "Clear All Memory", on_triggered=self.clear_all_memory_action, shortcut="Ctrl+Shift+L") menu_recently_closed_scripts = RecentlyClosedScriptsMenu(self) self.editor.editors.sig_tab_closed.connect( menu_recently_closed_scripts.add_script_to_settings) self.file_menu_actions = [ action_open, action_load_project, None, action_save_script, action_save_script_as, menu_recently_closed_scripts, action_generate_ws_script, None, action_save_project, action_save_project_as, None, action_settings, None, action_manage_directories, None, action_script_repository, None, action_clear_all_memory, None, action_quit ] # view menu action_restore_default = create_action( self, "Restore Default Layout", on_triggered=self.setup_default_layouts, shortcut="Shift+F10", shortcut_context=Qt.ApplicationShortcut) self.view_menu_layouts = self.view_menu.addMenu("&User Layouts") self.populate_layout_menu() self.view_menu_actions = [action_restore_default, None ] + self.create_widget_actions() # help menu action_mantid_help = create_action( self, "Mantid Help", on_triggered=self.open_mantid_help, shortcut='F1', shortcut_context=Qt.ApplicationShortcut) action_algorithm_descriptions = create_action( self, 'Algorithm Descriptions', on_triggered=self.open_algorithm_descriptions_help) action_mantid_concepts = create_action( self, "Mantid Concepts", on_triggered=self.open_mantid_concepts_help) action_mantid_homepage = create_action( self, "Mantid Homepage", on_triggered=self.open_mantid_homepage) action_mantid_forum = create_action( self, "Mantid Forum", on_triggered=self.open_mantid_forum) action_about = create_action(self, "About Mantid Workbench", on_triggered=self.open_about) self.help_menu_actions = [ action_mantid_help, action_mantid_concepts, action_algorithm_descriptions, None, action_mantid_homepage, action_mantid_forum, None, action_about ]
def test_load_scripts_from_settings_returns_nothing_if_config_is_missing( self, get): menu = RecentlyClosedScriptsMenu(None) self.assertEqual([], menu._get_scripts_from_settings()) get.assert_called_once_with(RECENT_SCRIPTS_KEY)
def test_size_path_doesnt_shorten_short_enough_string(self, _): menu = RecentlyClosedScriptsMenu(None) path = "12345678910" self.assertEqual(path, menu.size_path_correctly(path))
def test_size_path_correctly_shortens_too_long_string(self, _): menu = RecentlyClosedScriptsMenu(None) path = "12345678912345678912345678912345678912845176451762534716412786459176549671549673" self.assertEqual("...534716412786459176549671549673", menu.size_path_correctly(path))