from app.db.models import ActivityStatus, HealthState def test_create_two_independent_users(db_session, user_repository) -> None: first = user_repository.create( name="Max", enabled=True, health_state=HealthState.HEALTHY, mywhoosh_email_enc="mw-1", mywhoosh_password_enc="mw-pw-1", garmin_email_enc="g-1", garmin_password_enc="g-pw-1", ) second = user_repository.create( name="Anna", enabled=True, health_state=HealthState.HEALTHY, mywhoosh_email_enc="mw-2", mywhoosh_password_enc="mw-pw-2", garmin_email_enc="g-2", garmin_password_enc="g-pw-2", ) disabled = user_repository.create( name="Paused", enabled=False, health_state=HealthState.DISABLED, mywhoosh_email_enc="mw-3", mywhoosh_password_enc="mw-pw-3", garmin_email_enc="g-3", garmin_password_enc="g-pw-3", ) assert first.id != second.id assert {u.name for u in user_repository.list_enabled()} == {"Max", "Anna"} assert disabled.id not in {u.id for u in user_repository.list_enabled()} assert {u.name for u in user_repository.list_all()} == {"Max", "Anna", "Paused"} def test_activity_external_id_is_unique_per_user(user_repository, activity_repository) -> None: user = user_repository.create( name="Max", enabled=True, health_state=HealthState.HEALTHY, mywhoosh_email_enc="a", mywhoosh_password_enc="b", garmin_email_enc="c", garmin_password_enc="d", ) created, inserted = activity_repository.get_or_create_discovered( user_id=user.id, mywhoosh_activity_id="mw-123", activity_name="Morning Ride", activity_timestamp=None, ) same, inserted_again = activity_repository.get_or_create_discovered( user_id=user.id, mywhoosh_activity_id="mw-123", activity_name="Morning Ride", activity_timestamp=None, ) assert inserted is True assert inserted_again is False assert created.id == same.id assert same.status == ActivityStatus.DISCOVERED