def test_save_as_dialogue(self, mock_tk, monkeypatch, save_as_dialog_args, expected_filedialog_args, test_filename, returned_filepath): default_filetypes = [("all files", "*.*")] default_start_dir = '..' def mocked_filedialog_asksaveasfilename(title, defaultextension, filetypes, initialfile, initialdir, ): """ Test arguments passed to filedialog are as expected, subbing with defaults save_as_dialogue will supply if no value is passed (equivalent to expecting the default). """ assert title == expected_filedialog_args.get('title', None) assert defaultextension == expected_filedialog_args.get('defaultextension', None) assert filetypes == expected_filedialog_args.get('filetypes', default_filetypes) assert initialfile == expected_filedialog_args.get('initialfile', None) assert initialdir == expected_filedialog_args.get('initialdir', default_start_dir) # Return null test_filename value or filename + extension if present. if not test_filename: return test_filename return test_filename + (expected_filedialog_args.get('defaultextension', '') or '') monkeypatch.setattr(UI_functions.filedialog, 'asksaveasfilename', mocked_filedialog_asksaveasfilename) assert returned_filepath == save_as_dialogue(**save_as_dialog_args)
def test_save_as_dialogue_no_arguments(self, mock_tkinter): with patch( 'dionysus_app.UI_menus.UI_functions.filedialog.asksaveasfilename' ) as save_as_filedialog: save_as_filedialog.return_value = self.test_returned_filepath_str assert save_as_filedialog.return_value == save_as_dialogue() mock_tkinter.assert_called() save_as_filedialog.assert_called_once_with( title=None, defaultextension=None, filetypes=self.default_filetypes, initialdir=None, initialfile=None)
def get_user_save_chart_pathname(class_name: str, default_chart_name: str): class_save_folder_path = Path( definitions.DEFAULT_CHART_SAVE_FOLDER).joinpath(class_name) class_save_folder_path.mkdir( parents=True, exist_ok=True) # create class_save_folder if nonexistent class_save_folder_str = str(class_save_folder_path) save_chart_path_str = save_as_dialogue( title_str='Save chart image as:', filetypes=[('.png', '*.png'), ("all files", "*.*")], suggested_filename=default_chart_name, start_dir=class_save_folder_str) return save_chart_path_str
def save_chart_dialogue(default_chart_name: str, class_save_folder_path: Path) -> Optional[Path]: """ Calls save as dialogue to get user input for chart image file save name and location. Supplies defaults, returns user chosen path, or None if user cancels save. :param default_chart_name: str :param class_save_folder_path: Path :return: Path or None """ class_save_folder_str = str(class_save_folder_path) return save_as_dialogue(title_str='Save chart image as:', filetypes=[('.png', '*.png'), ("all files", "*.*")], suggested_filename=default_chart_name, start_dir=class_save_folder_str)
def test_save_as_dialogue_with_start_dir_str(self, mock_tkinter): with patch( 'dionysus_app.UI_menus.UI_functions.filedialog.asksaveasfilename' ) as save_as_filedialog: test_start_dir = 'where to start?' save_as_filedialog.return_value = self.test_returned_filepath_str assert save_as_dialogue( start_dir=test_start_dir) == self.test_returned_filepath_str mock_tkinter.assert_called() save_as_filedialog.assert_called_once_with( title=None, defaultextension=None, filetypes=self.default_filetypes, initialdir=test_start_dir, initialfile=None, )
def test_save_as_dialogue_with_suggested_filename(self, mock_tkinter): with patch( 'dionysus_app.UI_menus.UI_functions.filedialog.asksaveasfilename' ) as save_as_filedialog: test_suggested_filename = 'you should call your save file THIS' save_as_filedialog.return_value = self.test_returned_filepath_str assert save_as_dialogue(suggested_filename=test_suggested_filename ) == self.test_returned_filepath_str mock_tkinter.assert_called() save_as_filedialog.assert_called_once_with( title=None, defaultextension=None, filetypes=self.default_filetypes, initialdir=None, initialfile=test_suggested_filename, )
def test_save_as_dialogue_with_title_str(self, mock_tkinter): with patch( 'dionysus_app.UI_menus.UI_functions.filedialog.asksaveasfilename' ) as save_as_filedialog: title_string = "Save your super_file_as:" save_as_filedialog.return_value = self.test_returned_filepath_str assert save_as_dialogue( title_str=title_string) == save_as_filedialog.return_value mock_tkinter.assert_called() save_as_filedialog.assert_called_once_with( title=title_string, defaultextension=None, filetypes=self.default_filetypes, initialdir=None, initialfile=None, )
def test_save_as_dialogue_with_filetypes_all_files_plus_some_ext( self, mock_tkinter): with patch( 'dionysus_app.UI_menus.UI_functions.filedialog.asksaveasfilename' ) as save_as_filedialog: test_filetypes = [('all files', '*.*'), ('some ext', '*.some_ext')] save_as_filedialog.return_value = self.test_returned_filepath_str assert save_as_dialogue( filetypes=test_filetypes) == self.test_returned_filepath_str mock_tkinter.assert_called() save_as_filedialog.assert_called_once_with( title=None, defaultextension=None, filetypes=test_filetypes, initialdir=None, initialfile=None, )