Ejemplo n.º 1
0
    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)
Ejemplo n.º 2
0
    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)
Ejemplo n.º 3
0
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
Ejemplo n.º 4
0
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)
Ejemplo n.º 5
0
    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,
            )
Ejemplo n.º 6
0
    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,
            )
Ejemplo n.º 7
0
    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,
            )
Ejemplo n.º 8
0
    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,
            )