Files
2026-07-01 11:20:13 +03:00

61 lines
2.0 KiB
Python

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)