Skip to content

Commit

Permalink
Add pytest as test framework
Browse files Browse the repository at this point in the history
  • Loading branch information
aturret committed Nov 26, 2024
1 parent 5cdbdf8 commit d4c84e8
Show file tree
Hide file tree
Showing 4 changed files with 111 additions and 5 deletions.
74 changes: 69 additions & 5 deletions poetry.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,9 @@ optional = true
#html-telegraph-poster-v2 = { path = "../html-telegraph-poster-v2/" }
#fastfetchbot-telegram-bot = { path = "../FastFetchBot-Telegram-Bot/" }
black = "^23.3.0"
pytest = "^8.3.3"

pytest-asyncio = "^0.24.0"
[tool.poetry.extras]
windows = ["python-magic-bin"]

Expand Down
4 changes: 4 additions & 0 deletions tests/cases/bluesky.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
bluesky_cases = {
"pure_text": {"url": "https://blueskyinfo.net/threads/1", "expected": "bluesky_pure_text.json"},
"text_with_image": {"url": "https://bsky.app/profile/cinnabarocean.bsky.social/post/3lbqxabem4c2t", "expected": "bluesky_text_with_image.json"},
}
36 changes: 36 additions & 0 deletions tests/test_bluesky.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
from typing import Tuple

import pytest

from app.services.scrapers.bluesky.scraper import BlueskyScraper
from app.services.scrapers.scraper_manager import ScraperManager
from tests.cases.bluesky import bluesky_cases


@pytest.fixture(scope="module", autouse=True)
async def bluesky_scraper():
bluesky_scraper = await ScraperManager.init_bluesky_scraper()
yield bluesky_scraper


async def get_item_from_url(bluesky_scraper: BlueskyScraper, url: str) -> dict:
data_processor = await bluesky_scraper.get_processor_by_url(url)
item = await data_processor.get_item()
return item


async def get_test_data(bluesky_scraper: BlueskyScraper, case: str) -> Tuple[dict, dict]:
data = await get_item_from_url(bluesky_scraper=bluesky_scraper, url=bluesky_cases[case]["url"])
return data, bluesky_cases[case]["expected"]


@pytest.mark.asyncio
async def test_bluesky_init(bluesky_scraper: BlueskyScraper):
assert bluesky_scraper is not None
assert isinstance(bluesky_scraper, BlueskyScraper)


@pytest.mark.asyncio
async def test_bluesky_pure_text_post(bluesky_scraper: BlueskyScraper):
data, expected = await get_test_data(bluesky_scraper, "pure_text")
assert data == expected

0 comments on commit d4c84e8

Please sign in to comment.