added advanced workout
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
import unittest
|
||||
from datetime import date
|
||||
|
||||
from sqlalchemy import create_engine
|
||||
from sqlalchemy.orm import Session, sessionmaker
|
||||
|
||||
from app.daily.recap import RecapService, format_evening_notice
|
||||
from app.db.models import Base, DailyRecap, User
|
||||
|
||||
|
||||
class DailyRecapTests(unittest.TestCase):
|
||||
def setUp(self) -> None:
|
||||
self.engine = create_engine("sqlite:///:memory:")
|
||||
Base.metadata.create_all(self.engine)
|
||||
self.Session = sessionmaker(bind=self.engine)
|
||||
with Session(self.engine) as db:
|
||||
user = User(username="rc", api_token_hash="x")
|
||||
db.add(user)
|
||||
db.commit()
|
||||
self.user_id = user.id
|
||||
|
||||
def test_format_evening_notice(self) -> None:
|
||||
notice = format_evening_notice("Текст", "/img.png")
|
||||
self.assertIn("Сводка дня", notice)
|
||||
self.assertIn("![day]", notice)
|
||||
|
||||
def test_get_or_create_pending(self) -> None:
|
||||
day = date(2026, 6, 18)
|
||||
with Session(self.engine) as db:
|
||||
svc = RecapService(db, self.user_id)
|
||||
row = svc.get_or_create_pending(day)
|
||||
self.assertEqual(row.status, "pending")
|
||||
again = svc.get_or_create_pending(day)
|
||||
self.assertEqual(again.id, row.id)
|
||||
|
||||
def test_list_recaps_only_posted(self) -> None:
|
||||
day = date(2026, 6, 17)
|
||||
with Session(self.engine) as db:
|
||||
db.add(
|
||||
DailyRecap(
|
||||
user_id=self.user_id,
|
||||
day=day,
|
||||
text="done",
|
||||
status="posted",
|
||||
message_id=10,
|
||||
session_id=1,
|
||||
)
|
||||
)
|
||||
db.add(
|
||||
DailyRecap(
|
||||
user_id=self.user_id,
|
||||
day=date(2026, 6, 16),
|
||||
text="fail",
|
||||
status="failed",
|
||||
)
|
||||
)
|
||||
db.commit()
|
||||
rows = RecapService(db, self.user_id).list_recaps()
|
||||
self.assertEqual(len(rows), 1)
|
||||
self.assertEqual(rows[0].day, day)
|
||||
Reference in New Issue
Block a user