Switch to aiosqlite
This commit is contained in:
parent
18bd2cb664
commit
1f54a6a6ac
21 changed files with 698 additions and 549 deletions
|
@ -1,13 +1,18 @@
|
|||
import httpx
|
||||
import pytest
|
||||
import respx
|
||||
from sqlalchemy import func
|
||||
from sqlalchemy import select
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from app import models
|
||||
from app.actor import fetch_actor
|
||||
from app.database import Session
|
||||
from app.database import AsyncSession
|
||||
from tests import factories
|
||||
|
||||
|
||||
def test_fetch_actor(db: Session, respx_mock) -> None:
|
||||
@pytest.mark.asyncio
|
||||
async def test_fetch_actor(async_db_session: AsyncSession, respx_mock) -> None:
|
||||
# Given a remote actor
|
||||
ra = factories.RemoteActorFactory(
|
||||
base_url="https://example.com",
|
||||
|
@ -17,18 +22,22 @@ def test_fetch_actor(db: Session, respx_mock) -> None:
|
|||
respx_mock.get(ra.ap_id).mock(return_value=httpx.Response(200, json=ra.ap_actor))
|
||||
|
||||
# When fetching this actor for the first time
|
||||
saved_actor = fetch_actor(db, ra.ap_id)
|
||||
saved_actor = await fetch_actor(async_db_session, ra.ap_id)
|
||||
|
||||
# Then it has been fetched and saved in DB
|
||||
assert respx.calls.call_count == 1
|
||||
assert db.query(models.Actor).one().ap_id == saved_actor.ap_id
|
||||
assert (
|
||||
await async_db_session.execute(select(models.Actor))
|
||||
).scalar_one().ap_id == saved_actor.ap_id
|
||||
|
||||
# When fetching it a second time
|
||||
actor_from_db = fetch_actor(db, ra.ap_id)
|
||||
actor_from_db = await fetch_actor(async_db_session, ra.ap_id)
|
||||
|
||||
# Then it's read from the DB
|
||||
assert actor_from_db.ap_id == ra.ap_id
|
||||
assert db.query(models.Actor).count() == 1
|
||||
assert (
|
||||
await async_db_session.execute(select(func.count(models.Actor.id)))
|
||||
).scalar_one() == 1
|
||||
assert respx.calls.call_count == 1
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue