날짜 셀 클릭 시 그 날 예정된 습관별 완료/실패/미완료 상태를 htmx로 불러와 보여준다. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
42 lines
1.5 KiB
Python
42 lines
1.5 KiB
Python
from datetime import date, datetime
|
|
|
|
from app.models.habit import ALL_WEEKDAYS_MASK, HabitType
|
|
from app.schemas.habit import HabitCreate
|
|
from app.services import habit_service
|
|
|
|
|
|
def _make_habit(db_session, user_id, name="테스트 습관", created_at=None, **overrides):
|
|
data = HabitCreate(
|
|
name=name,
|
|
habit_type=overrides.pop("habit_type", HabitType.BUILD),
|
|
weekdays_mask=overrides.pop("weekdays_mask", ALL_WEEKDAYS_MASK),
|
|
)
|
|
habit = habit_service.create_habit(db_session, user_id, data)
|
|
if created_at is not None:
|
|
habit.created_at = created_at
|
|
db_session.commit()
|
|
db_session.refresh(habit)
|
|
return habit
|
|
|
|
|
|
def test_history_day_detail_shows_scheduled_habit(auth_client, db_session, test_user):
|
|
_make_habit(db_session, test_user.id, name="아침 스트레칭", created_at=datetime(2026, 3, 1))
|
|
|
|
response = auth_client.get("/history/day/2026-03-05")
|
|
assert response.status_code == 200
|
|
assert "아침 스트레칭" in response.text
|
|
|
|
|
|
def test_history_day_detail_excludes_other_users_habits(auth_client, db_session, other_user):
|
|
_make_habit(db_session, other_user.id, name="남의 습관", created_at=datetime(2026, 3, 1))
|
|
|
|
response = auth_client.get("/history/day/2026-03-05")
|
|
assert response.status_code == 200
|
|
assert "남의 습관" not in response.text
|
|
|
|
|
|
def test_history_day_detail_requires_login(client):
|
|
response = client.get("/history/day/2026-03-05", follow_redirects=False)
|
|
assert response.status_code == 303
|
|
assert response.headers["location"] == "/login"
|