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"