Coverage for tests/conftest.py: 100%
33 statements
« prev ^ index » next coverage.py v7.10.3, created at 2025-08-21 00:51 +0000
« prev ^ index » next coverage.py v7.10.3, created at 2025-08-21 00:51 +0000
1import pathlib
2import random
3import typing
5import pytest
6from faker import Faker
8from meta_tags_parser import settings
11FIXTURES_DIR: typing.Final[pathlib.Path] = pathlib.Path(__file__).parent / "html_fixtures"
12HTML_FIXTURES: typing.Final[tuple[str, ...]] = ("globo-com", "gazeta-ru")
13POSSIBLE_OG_TAGS_VALUES: typing.Final[tuple[str, ...]] = (
14 "title",
15 "url",
16 "image",
17 "type",
18 "description",
19 "locale",
20 "site_name",
21 "video",
22)
25@pytest.fixture
26def provide_fake_meta(faker: Faker) -> tuple[dict[str, str], str]:
27 """Generate random wannabe html tags."""
28 output_buffer: list[str] = []
29 control_result: list[tuple[str, str]] = []
30 output_buffer.extend(
31 f"""<meta name="{one_name}" content="{faker.text()}">""" for one_name in settings.BASIC_META_TAGS
32 )
33 for one_name in POSSIBLE_OG_TAGS_VALUES:
34 for _ in range(random.randint(1, 5)):
35 tag_content: str
36 if one_name in ("url", "video"):
37 tag_content = faker.url()
38 elif one_name == "image":
39 tag_content = faker.image_url()
40 else:
41 tag_content = faker.text()
42 output_buffer.append(f"""<meta property="og:{one_name}" content="{tag_content}">""")
43 output_buffer.append(f"""<meta name="twitter:{one_name}" content="{tag_content}">""")
44 control_result.append((one_name, tag_content))
45 output_buffer.append(f"<title>{faker.text()}</title>")
46 output_buffer.append(f"""<meta name="article:name" content="{faker.text()}">""")
47 output_buffer.append(f"""<meta name="article:description" content="{faker.text()}">""")
48 output_buffer.append("""<meta name="bad-tag">""")
49 output_buffer.append("""<meta property="another-bad-tag">""")
50 return dict(control_result), ("\n \t" * random.randint(1, 5)).join(output_buffer)
53@pytest.fixture
54def provide_html_file_paths() -> list[pathlib.Path]:
55 """Return file paths for raw parse test."""
56 return [FIXTURES_DIR.joinpath(f"{one_name}.html") for one_name in HTML_FIXTURES]