tests: improve tests for higher coverage

This commit is contained in:
Sina Atalay 2024-04-30 00:42:10 +03:00
parent f1cbbdbb6b
commit 49e3013a30
2 changed files with 128 additions and 6 deletions

View File

@ -182,6 +182,21 @@ def test_copy_templates(tmp_path, folder_name):
assert copied_path.exists() assert copied_path.exists()
@pytest.mark.parametrize(
"folder_name",
["markdown"] + dm.available_themes,
)
def test_copy_templates_destinations_exist(tmp_path, folder_name):
(tmp_path / folder_name).mkdir()
copied_path = cli.copy_templates(
folder_name=folder_name,
copy_to=tmp_path,
)
assert copied_path is None
runner = typer.testing.CliRunner() runner = typer.testing.CliRunner()
@ -395,6 +410,16 @@ def test_render_command_with_dont_generate_png(tmp_path, input_file_path):
assert not png_file_path.exists() assert not png_file_path.exists()
def test_render_command_with_local_latex_command(tmp_path, input_file_path):
# copy input file to the temporary directory to create the output directory there:
input_file_path = shutil.copy(input_file_path, tmp_path)
runner.invoke(
cli.app,
["render", str(input_file_path), "--local-latex-command", "pdflatex"],
)
def test_new_command(tmp_path): def test_new_command(tmp_path):
# change the current working directory to the temporary directory: # change the current working directory to the temporary directory:
os.chdir(tmp_path) os.chdir(tmp_path)
@ -409,6 +434,15 @@ def test_new_command(tmp_path):
assert input_file_path.exists() assert input_file_path.exists()
def test_new_command_with_invalid_theme(tmp_path):
# change the current working directory to the temporary directory:
os.chdir(tmp_path)
result = runner.invoke(cli.app, ["new", "John Doe", "--theme", "invalid_theme"])
assert "The theme should be one of the following" in result.stdout
def test_new_command_with_dont_create_theme_source_files(tmp_path): def test_new_command_with_dont_create_theme_source_files(tmp_path):
# change the current working directory to the temporary directory: # change the current working directory to the temporary directory:
os.chdir(tmp_path) os.chdir(tmp_path)
@ -427,3 +461,25 @@ def test_new_command_with_dont_create_markdown_source_files(tmp_path):
markdown_source_files_path = tmp_path / "markdown" markdown_source_files_path = tmp_path / "markdown"
assert not markdown_source_files_path.exists() assert not markdown_source_files_path.exists()
def test_new_command_with_only_input_file(tmp_path):
# change the current working directory to the temporary directory:
os.chdir(tmp_path)
runner.invoke(
cli.app,
[
"new",
"John Doe",
"--dont-create-markdown-source-files",
"--dont-create-theme-source-files",
],
)
markdown_source_files_path = tmp_path / "markdown"
theme_source_files_path = tmp_path / "classic"
input_file_path = tmp_path / "John_Doe_CV.yaml"
assert not markdown_source_files_path.exists()
assert not theme_source_files_path.exists()
assert input_file_path.exists()

View File

@ -334,7 +334,6 @@ def test_if_generate_latex_file_can_create_a_new_directory(
tmp_path, rendercv_data_model tmp_path, rendercv_data_model
): ):
new_directory = tmp_path / "new_directory" new_directory = tmp_path / "new_directory"
new_directory.mkdir()
latex_file_path = r.generate_latex_file(rendercv_data_model, new_directory) latex_file_path = r.generate_latex_file(rendercv_data_model, new_directory)
@ -384,7 +383,6 @@ def test_if_generate_markdown_file_can_create_a_new_directory(
tmp_path, rendercv_data_model tmp_path, rendercv_data_model
): ):
new_directory = tmp_path / "new_directory" new_directory = tmp_path / "new_directory"
new_directory.mkdir()
latex_file_path = r.generate_markdown_file(rendercv_data_model, new_directory) latex_file_path = r.generate_markdown_file(rendercv_data_model, new_directory)
@ -473,6 +471,11 @@ def test_copy_theme_files_to_output_directory_custom_theme(
) )
def test_copy_theme_files_to_output_directory_nonexistent_theme():
with pytest.raises(FileNotFoundError):
r.copy_theme_files_to_output_directory("nonexistent_theme", pathlib.Path("."))
@pytest.mark.parametrize( @pytest.mark.parametrize(
"theme_name", "theme_name",
dm.available_themes, dm.available_themes,
@ -558,7 +561,7 @@ def test_latex_to_pdf(
) )
def test_latex_to_pdf_invalid_latex_file(): def test_latex_to_pdf_nonexistent_latex_file():
with pytest.raises(FileNotFoundError): with pytest.raises(FileNotFoundError):
file_path = pathlib.Path("file_doesnt_exist.tex") file_path = pathlib.Path("file_doesnt_exist.tex")
r.latex_to_pdf(file_path) r.latex_to_pdf(file_path)
@ -596,10 +599,10 @@ def test_markdown_to_html(
/ markdown_file_name / markdown_file_name
) )
# copy the latex source to the output path # copy the markdown source to the output path
shutil.copy(markdown_source_path, output_directory_path) shutil.copy(markdown_source_path, output_directory_path)
# convert the latex code to a md # convert markdown to html
r.markdown_to_html(output_directory_path / markdown_file_name) r.markdown_to_html(output_directory_path / markdown_file_name)
assert run_a_function_and_check_if_output_is_the_same_as_reference( assert run_a_function_and_check_if_output_is_the_same_as_reference(
@ -609,7 +612,70 @@ def test_markdown_to_html(
) )
def test_markdown_to_html_invalid_markdown_file(): def test_markdown_to_html_nonexistent_markdown_file():
with pytest.raises(FileNotFoundError): with pytest.raises(FileNotFoundError):
file_path = pathlib.Path("file_doesnt_exist.md") file_path = pathlib.Path("file_doesnt_exist.md")
r.markdown_to_html(file_path) r.markdown_to_html(file_path)
def test_pdf_to_pngs_single_page(
run_a_function_and_check_if_output_is_the_same_as_reference,
):
output_file_name = "classic_empty_1.png"
reference_file_name = "classic_empty.png"
def generate_pngs(output_directory_path, reference_file_or_directory_path):
pdf_file_name = "classic_empty.pdf"
pdf_path = (
reference_file_or_directory_path.parent.parent
/ "test_latex_to_pdf"
/ pdf_file_name
)
# copy the markdown source to the output path
shutil.copy(pdf_path, output_directory_path)
# convert pdf to pngs
r.pdf_to_pngs(output_directory_path / pdf_file_name)
assert run_a_function_and_check_if_output_is_the_same_as_reference(
generate_pngs,
reference_file_or_directory_name=reference_file_name,
output_file_name=output_file_name,
)
def test_pdf_to_pngs(
run_a_function_and_check_if_output_is_the_same_as_reference,
):
reference_directory_name = "pngs"
def generate_pngs(output_directory_path, reference_file_or_directory_path):
pdf_file_name = "classic_filled.pdf"
pdf_path = (
reference_file_or_directory_path.parent.parent
/ "test_latex_to_pdf"
/ pdf_file_name
)
# copy the markdown source to the output path
shutil.copy(pdf_path, output_directory_path)
# convert pdf to pngs
r.pdf_to_pngs(output_directory_path / pdf_file_name)
# remove the pdf file
(output_directory_path / pdf_file_name).unlink()
assert run_a_function_and_check_if_output_is_the_same_as_reference(
generate_pngs,
reference_directory_name,
)
def test_pdf_to_png_nonexistent_pdf_file():
with pytest.raises(FileNotFoundError):
file_path = pathlib.Path("file_doesnt_exist.pdf")
r.pdf_to_pngs(file_path)