From 5f78c6c74f0299dfd70a25b9c3302dd93f673955 Mon Sep 17 00:00:00 2001 From: Sina Atalay Date: Fri, 5 Jul 2024 16:33:56 +0300 Subject: [PATCH] tests: update --- docs/update_entry_figures.py | 2 +- rendercv/cli/commands.py | 10 +++++++--- tests/conftest.py | 17 +++++++++-------- tests/test_cli.py | 24 ++++++++++++++++-------- tests/test_renderer.py | 12 +++++++----- 5 files changed, 40 insertions(+), 25 deletions(-) diff --git a/docs/update_entry_figures.py b/docs/update_entry_figures.py index 58694266..332fbb01 100644 --- a/docs/update_entry_figures.py +++ b/docs/update_entry_figures.py @@ -197,7 +197,7 @@ def generate_entry_figures(): latex_file_path = renderer.render_a_latex_file_and_copy_theme_files( data_model, temporary_directory_path ) - pdf_file_path = renderer.render_pdf_from_latex(latex_file_path) + pdf_file_path = renderer.render_a_pdf_from_latex(latex_file_path) # Prepare the output directory and file path: output_directory = image_assets_directory / theme diff --git a/rendercv/cli/commands.py b/rendercv/cli/commands.py index 16e6660c..83a77b32 100644 --- a/rendercv/cli/commands.py +++ b/rendercv/cli/commands.py @@ -39,6 +39,7 @@ def cli_command_render( input_file_name: Annotated[ str, typer.Argument(help="Name of the YAML input file.") ], + extra_data_model_override_argumets: typer.Context, use_local_latex_command: Annotated[ Optional[str], typer.Option( @@ -122,7 +123,9 @@ def cli_command_render( help="Don't generate the PNG file.", ), ] = False, - _: Annotated[ # This is a dummy argument for the help message. + # This is a dummy argument for the help message for + # extra_data_model_override_argumets: + _: Annotated[ Optional[str], typer.Option( "--YAMLLOCATION", @@ -130,7 +133,6 @@ def cli_command_render( ' [cyan bold]--cv.phone "123-456-7890"[/cyan bold].', ), ] = None, - extra_data_model_override_argumets: Optional[typer.Context] = None, ): """Render a CV from a YAML input file.""" printer.welcome() @@ -363,7 +365,9 @@ def cli_command_create_theme( ) return - based_on_theme_directory = pathlib.Path(__file__).parent / "themes" / based_on + based_on_theme_directory = ( + pathlib.Path(__file__).parent.parent / "themes" / based_on + ) based_on_theme_init_file = based_on_theme_directory / "__init__.py" based_on_theme_init_file_contents = based_on_theme_init_file.read_text() diff --git a/tests/conftest.py b/tests/conftest.py index 8be2ab8f..3704a7dd 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -7,7 +7,7 @@ import os import pathlib import shutil import typing -from typing import Optional +from typing import Optional, Type import jinja2 import pydantic @@ -15,9 +15,8 @@ import pydantic_extra_types.phone_numbers as pydantic_phone_numbers import pypdf import pytest -import rendercv.renderer as renderer -import rendercv.renderer.templater as rt -from rendercv import data as data +from rendercv.renderer import templater +from rendercv import data # RenderCV is being tested by comparing the output to reference files. Therefore, # reference files should be updated when RenderCV is updated in a way that changes @@ -240,7 +239,7 @@ def return_a_value_for_a_field_type( def create_combinations_of_a_model( - model: pydantic.BaseModel, + model: Type[data.Entry], ) -> list[pydantic.BaseModel]: """Look at the required fields and optional fields of a model and create all possible combinations of them. @@ -306,7 +305,9 @@ def rendercv_filled_curriculum_vitae_data_model( sections={ "Text Entries": [text_entry, text_entry, text_entry], "Bullet Entries": [bullet_entry, bullet_entry], - "Publication Entries": create_combinations_of_a_model(data.PublicationEntry), + "Publication Entries": create_combinations_of_a_model( + data.PublicationEntry + ), "Experience Entries": create_combinations_of_a_model(data.ExperienceEntry), "Education Entries": create_combinations_of_a_model(data.EducationEntry), "Normal Entries": create_combinations_of_a_model(data.NormalEntry), @@ -318,7 +319,7 @@ def rendercv_filled_curriculum_vitae_data_model( @pytest.fixture def jinja2_environment() -> jinja2.Environment: """Return a Jinja2 environment.""" - return rt.setup_jinja2_environment() + return templater.setup_jinja2_environment() @pytest.fixture @@ -351,7 +352,7 @@ def specific_testdata_directory_path(testdata_directory_path, request) -> pathli def are_these_two_directories_the_same( directory1: pathlib.Path, directory2: pathlib.Path -) -> None: +) -> bool: """Check if two directories are the same. Args: diff --git a/tests/test_cli.py b/tests/test_cli.py index 897e498e..f724d8d8 100644 --- a/tests/test_cli.py +++ b/tests/test_cli.py @@ -528,11 +528,12 @@ def test_create_theme_command(tmp_path, input_file_path, based_on): # change the current working directory to the temporary directory: os.chdir(tmp_path) - runner.invoke(cli.app, ["create-theme", "newtheme", "--based-on", based_on]) + result = runner.invoke(cli.app, ["create-theme", "newtheme", "--based-on", based_on]) new_theme_source_files_path = tmp_path / "newtheme" assert new_theme_source_files_path.exists() + assert (new_theme_source_files_path / "__init__.py").exists() # test if the new theme is actually working: input_file_path = shutil.copy(input_file_path, tmp_path) @@ -586,7 +587,9 @@ def test_get_latest_version_number_from_pypi(): def test_if_welcome_prints_new_version_available(monkeypatch): - monkeypatch.setattr(utilities, "get_latest_version_number_from_pypi", lambda: "99999") + monkeypatch.setattr( + utilities, "get_latest_version_number_from_pypi", lambda: "99999" + ) import contextlib import io @@ -598,7 +601,9 @@ def test_if_welcome_prints_new_version_available(monkeypatch): def test_rendercv_version_when_there_is_a_new_version(monkeypatch): - monkeypatch.setattr(cli, "get_latest_version_number_from_pypi", lambda: "99999") + monkeypatch.setattr( + utilities, "get_latest_version_number_from_pypi", lambda: "99999" + ) result = runner.invoke(cli.app, ["--version"]) @@ -606,7 +611,9 @@ def test_rendercv_version_when_there_is_a_new_version(monkeypatch): def test_rendercv_version_when_there_is_not_a_new_version(monkeypatch): - monkeypatch.setattr(cli, "get_latest_version_number_from_pypi", lambda: __version__) + monkeypatch.setattr( + utilities, "get_latest_version_number_from_pypi", lambda: __version__ + ) result = runner.invoke(cli.app, ["--version"]) @@ -614,16 +621,17 @@ def test_rendercv_version_when_there_is_not_a_new_version(monkeypatch): def test_warn_if_new_version_is_available(monkeypatch): - monkeypatch.setattr(cli, "get_latest_version_number_from_pypi", lambda: __version__) + monkeypatch.setattr( + utilities, "get_latest_version_number_from_pypi", lambda: __version__ + ) assert not printer.warn_if_new_version_is_available() - monkeypatch.setattr(cli, "get_latest_version_number_from_pypi", lambda: "999") + monkeypatch.setattr(utilities, "get_latest_version_number_from_pypi", lambda: "999") assert printer.warn_if_new_version_is_available() - @pytest.mark.parametrize( "key, value", [ @@ -676,4 +684,4 @@ def test_set_or_update_a_value_invalid_keys(rendercv_data_model, key, value): ) def test_set_or_update_a_value_invalid_values(rendercv_data_model, key, value): with pytest.raises(pydantic.ValidationError): - utilities.set_or_update_a_value(rendercv_data_model, key, value) \ No newline at end of file + utilities.set_or_update_a_value(rendercv_data_model, key, value) diff --git a/tests/test_renderer.py b/tests/test_renderer.py index 79ee0b3d..9a4da37b 100644 --- a/tests/test_renderer.py +++ b/tests/test_renderer.py @@ -8,7 +8,7 @@ import jinja2 import pytest import time_machine -from rendercv import data as data +from rendercv import data from rendercv import renderer from rendercv.renderer import templater @@ -486,7 +486,7 @@ def test_copy_theme_files_to_output_directory_custom_theme( dummytheme_path.mkdir(parents=True, exist_ok=True) # create a txt file called test.txt in the custom theme directory: - for entry_type_name in data.available_entry_types: + for entry_type_name in data.available_entry_type_names: pathlib.Path(dummytheme_path / f"{entry_type_name}.j2.tex").touch() pathlib.Path(dummytheme_path / "Header.j2.tex").touch() @@ -671,7 +671,9 @@ def test_render_an_html_from_markdown( shutil.copy(markdown_source_path, output_directory_path) # convert markdown to html - renderer.render_an_html_from_markdown(output_directory_path / markdown_file_name) + renderer.render_an_html_from_markdown( + output_directory_path / markdown_file_name + ) assert run_a_function_and_check_if_output_is_the_same_as_reference( function=render_html_from_markdown, @@ -697,7 +699,7 @@ def test_render_pngs_from_pdf_single_page( pdf_path = ( reference_file_or_directory_path.parent.parent - / "test_render_pdf_from_latex" + / "test_render_a_pdf_from_latex" / pdf_file_name ) @@ -724,7 +726,7 @@ def test_render_pngs_from_pdf( pdf_path = ( reference_file_or_directory_path.parent.parent - / "test_render_pdf_from_latex" + / "test_render_a_pdf_from_latex" / pdf_file_name )