diff --git a/rendercv/data/models/rendercv_settings.py b/rendercv/data/models/rendercv_settings.py index 302f03a9..8a10361b 100644 --- a/rendercv/data/models/rendercv_settings.py +++ b/rendercv/data/models/rendercv_settings.py @@ -40,7 +40,7 @@ DATE_INPUT = datetime.date.today() class RenderCommandSettings(RenderCVBaseModelWithoutExtraKeys): """This class is the data model of the `render` command's settings.""" - design: Optional[str] = pydantic.Field( + design: Optional[pathlib.Path] = pydantic.Field( default=None, title="`design` Field's YAML File", description=( @@ -48,7 +48,7 @@ class RenderCommandSettings(RenderCVBaseModelWithoutExtraKeys): ), ) - rendercv_settings: Optional[str] = pydantic.Field( + rendercv_settings: Optional[pathlib.Path] = pydantic.Field( default=None, title="`rendercv_settings` Field's YAML File", description=( @@ -57,7 +57,7 @@ class RenderCommandSettings(RenderCVBaseModelWithoutExtraKeys): ), ) - locale: Optional[str] = pydantic.Field( + locale: Optional[pathlib.Path] = pydantic.Field( default=None, title="`locale` Field's YAML File", description=( diff --git a/tests/test_cli.py b/tests/test_cli.py index 4225a9e7..bd306811 100644 --- a/tests/test_cli.py +++ b/tests/test_cli.py @@ -1013,6 +1013,16 @@ def test_read_and_construct_the_input( locale, rendercv_settings, ): + # create a folder with space in it: + folder = input_file_path.parent / "folder with space" + folder.mkdir() + + # Copy input, design, locale, and rendercv_settings files to the folder with space: + input_file_path = pathlib.Path(shutil.copy(input_file_path, folder)) + design_file_path = shutil.copy(design_file_path, folder) + locale_file_path = shutil.copy(locale_file_path, folder) + rendercv_settings_file_path = shutil.copy(rendercv_settings_file_path, folder) + cli_render_arguments = { "design": str(design_file_path) if design else None, "locale": str(locale_file_path) if locale else None, @@ -1028,17 +1038,25 @@ def test_read_and_construct_the_input( input_file_path=input_file_path, cli_render_arguments=cli_render_arguments ) + # validate the input dictionary: + data.validate_input_dictionary_and_return_the_data_model(input_dict) + + if rendercv_settings: + if design: + del input_dict["rendercv_settings"]["render_command"]["design"] + + if locale: + del input_dict["rendercv_settings"]["render_command"]["locale"] + + del input_dict["rendercv_settings"]["render_command"]["rendercv_settings"] + fields = list(data.rendercv_data_model_fields) fields.remove("cv") for field in fields: - if field == "rendercv_settings": - if locals()[field]: - assert input_dict["rendercv_settings"]["render_command"][ - "dont_generate_html" + if locals()[field]: + assert ( + input_dict[field] + == data.read_a_yaml_file(pathlib.Path(locals()[f"{field}_file_path"]))[ + field ] - else: - pass - else: - assert (field in input_dict) == locals()[ - field - ], f"{field} is in dict: {field in input_dict}, expected: {locals()[field]}" + )