sebastianc1233 commited on
Commit
9ac62ca
·
1 Parent(s): e1bd9f9

test: add test_db_integration

Browse files
backend/tests/test_db_integration.py ADDED
@@ -0,0 +1,61 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import uuid
2
+
3
+ import pytest
4
+ from sqlalchemy.ext.asyncio import async_sessionmaker, create_async_engine
5
+ from sqlmodel import SQLModel
6
+ from sqlmodel.ext.asyncio.session import AsyncSession
7
+
8
+ from backend.app.models.task import TaskStatus
9
+ from backend.app.services.task import TaskService
10
+
11
+
12
+ @pytest.fixture(name="session")
13
+ async def session_fixture():
14
+ engine = create_async_engine("sqlite+aiosqlite:///:memory:", echo=False)
15
+
16
+ async with engine.begin() as conn:
17
+ await conn.run_sync(SQLModel.metadata.create_all)
18
+
19
+ async_session = async_sessionmaker(
20
+ engine, expire_on_commit=False, class_=AsyncSession
21
+ )
22
+
23
+ async with async_session() as session:
24
+ yield session
25
+
26
+
27
+ @pytest.mark.asyncio
28
+ async def test_task_service_crud_lifecycle(session: AsyncSession):
29
+ service = TaskService(session)
30
+
31
+ task = await service.create_task("wakacje.mp4")
32
+
33
+ assert task.id is not None
34
+ assert task.status == TaskStatus.QUEUED
35
+ assert task.input_filename == "wakacje.mp4"
36
+ assert task in session
37
+ fetched_task = await service.get_task(task.id)
38
+ assert fetched_task is not None
39
+ assert fetched_task.id == task.id
40
+
41
+ await service.mark_processing(fetched_task)
42
+
43
+ await session.refresh(fetched_task)
44
+ assert fetched_task.status == TaskStatus.PROCESSING
45
+
46
+ result_link = "/results/wakacje.mp4"
47
+ await service.mark_completed(fetched_task, result_link)
48
+
49
+ await session.refresh(fetched_task)
50
+ assert fetched_task.status == TaskStatus.COMPLETED
51
+ assert fetched_task.result_url == result_link
52
+
53
+
54
+ @pytest.mark.asyncio
55
+ async def test_task_service_get_non_existent(session: AsyncSession):
56
+ service = TaskService(session)
57
+ fake_id = uuid.uuid4()
58
+
59
+ task = await service.get_task(fake_id)
60
+
61
+ assert task is None