blob: 98c8dc72be5c34f970d6ed2d00240cffd658ab39 (
plain) (
tree)
|
|
import pytest
from conftest import DB, Response
import hircine.plugins
from hircine.db.models import (
Artist,
Character,
Circle,
Page,
Tag,
World,
)
from hircine.scraper import Scraper
totals_fragment = """
fragment Totals on Statistics {
total {
archives
artists
characters
circles
comics
namespaces
scrapers
tags
worlds
images
pages
comic {
artists
characters
circles
tags
worlds
}
}
}
"""
@pytest.fixture
def query_statistics(execute):
query = """
query statistics {
statistics {
__typename
... Totals
}
}
"""
return execute(totals_fragment + query)
@pytest.mark.anyio
async def test_statistics_returns_totals(
gen_comic, gen_image, query_statistics, empty_plugins
):
comic = next(gen_comic)
await DB.add(comic)
await DB.add(Artist(name="foo"))
await DB.add(Character(name="foo"))
await DB.add(Circle(name="foo"))
await DB.add(World(name="foo"))
await DB.add(Tag(name="foo"))
image = next(gen_image)
await DB.add(image)
await DB.add(
Page(id=100, index=100, path="100.png", image=image, archive=comic.archive)
)
await DB.add(
Page(id=101, index=101, path="101.png", image=image, archive=comic.archive)
)
namespaces = set()
for tag in comic.tags:
namespaces.add(tag.namespace.id)
class MockScraper(Scraper):
name = "Scraper"
def scrape(self):
yield None
hircine.plugins.register_scraper("mock", MockScraper)
response = Response(await query_statistics())
response.assert_is("Statistics")
assert response.total["comics"] == 1
assert response.total["archives"] == 1
assert response.total["artists"] == len(comic.artists) + 1
assert response.total["characters"] == len(comic.characters) + 1
assert response.total["circles"] == len(comic.circles) + 1
assert response.total["worlds"] == len(comic.worlds) + 1
assert response.total["tags"] == len(comic.tags) + 1
assert response.total["namespaces"] == len(namespaces)
assert response.total["images"] == len(comic.pages) + 1
assert response.total["pages"] == len(comic.pages) + 2
assert response.total["scrapers"] == 1
assert response.total["comic"]["artists"] == len(comic.artists)
assert response.total["comic"]["characters"] == len(comic.characters)
assert response.total["comic"]["circles"] == len(comic.circles)
assert response.total["comic"]["tags"] == len(comic.tags)
assert response.total["comic"]["worlds"] == len(comic.worlds)
|