1"""test database setup and basic operations.""" 2 3from sqlalchemy import select 4from sqlalchemy.ext.asyncio import AsyncSession 5 6from backend.models import Artist 7 8 9async def test_database_connection(db_session: AsyncSession): 10 """verify database connection works.""" 11 result = await db_session.execute(select(1)) 12 assert result.scalar() == 1 13 14 15async def test_create_artist(db_session: AsyncSession): 16 """verify we can create an artist record.""" 17 artist = Artist( 18 did="did:plc:test123", 19 handle="test.bsky.social", 20 display_name="test artist", 21 bio="test bio", 22 avatar_url="https://example.com/avatar.jpg", 23 ) 24 25 db_session.add(artist) 26 await db_session.commit() 27 await db_session.refresh(artist) 28 29 # verify the artist was created 30 assert artist.did == "did:plc:test123" 31 assert artist.handle == "test.bsky.social" 32 assert artist.display_name == "test artist" 33 34 35async def test_query_artist(db_session: AsyncSession): 36 """verify we can query artists.""" 37 # create an artist 38 artist = Artist( 39 did="did:plc:query123", 40 handle="query.bsky.social", 41 display_name="query test", 42 ) 43 db_session.add(artist) 44 await db_session.commit() 45 46 # query it back 47 result = await db_session.execute( 48 select(Artist).where(Artist.did == "did:plc:query123") 49 ) 50 queried_artist = result.scalar_one_or_none() 51 52 assert queried_artist is not None 53 assert queried_artist.handle == "query.bsky.social" 54 assert queried_artist.display_name == "query test" 55 56 57async def test_database_isolation(db_session: AsyncSession): 58 """verify tests are isolated - this should not see artists from other tests.""" 59 result = await db_session.execute(select(Artist)) 60 artists = result.scalars().all() 61 62 # if isolation works, we should have no artists from previous tests 63 assert len(artists) == 0