# tests/models/test_activity_log.py import uuid from app.models.activity_log import ActivityLog, ActivityType def test_create_activity_log(db_session, mock_user): # Arrange log_entry = ActivityLog( id=uuid.uuid4(), activity_type=ActivityType.EVENT_CREATED, description="An event was created.", event_id=uuid.uuid4(), user_id=mock_user.id, guest_id=None, target_id=None, target_type=None, ip_address="127.0.0.1", user_agent="TestBrowser/1.0", activity_data={"event_name": "Birthday Party", "organizer": "John Doe"} ) db_session.add(log_entry) # Act db_session.commit() created_log = db_session.query(ActivityLog).filter_by(id=log_entry.id).first() # Assert assert created_log is not None assert created_log.activity_type == ActivityType.EVENT_CREATED assert created_log.description == "An event was created." assert created_log.event_id is not None assert created_log.user_id == mock_user.id assert created_log.ip_address == "127.0.0.1" assert created_log.user_agent == "TestBrowser/1.0" assert created_log.activity_data == {"event_name": "Birthday Party", "organizer": "John Doe"} def test_log_event_activity(db_session, mock_user): # Act event_id = uuid.uuid4() log_entry = ActivityLog.log_event_activity( activity_type=ActivityType.EVENT_UPDATED, event_id=event_id, user_id=mock_user.id, description="Event details updated", ip_address="10.0.0.1", user_agent="MobileApp/2.1", updated_fields=["name", "date"] ) db_session.add(log_entry) db_session.commit() # Assert assert log_entry.activity_type == ActivityType.EVENT_UPDATED assert log_entry.user_id == mock_user.id assert log_entry.event_id == event_id assert log_entry.description == "Event details updated" assert log_entry.ip_address == "10.0.0.1" assert log_entry.user_agent == "MobileApp/2.1" assert log_entry.activity_data == {"updated_fields": ["name", "date"]} def test_log_user_activity(db_session, mock_user): # Act log_entry = ActivityLog.log_user_activity( activity_type=ActivityType.USER_LOGOUT, user_id=mock_user.id, description="User logged out.", ip_address="192.168.0.1", user_agent="Chrome/95.0", extra_data={"session_duration": "2 hours"} ) db_session.add(log_entry) db_session.commit() # Assert assert log_entry.activity_type == ActivityType.USER_LOGOUT assert log_entry.description == "User logged out." assert log_entry.user_id == mock_user.id assert log_entry.ip_address == "192.168.0.1" assert log_entry.user_agent == "Chrome/95.0" assert log_entry.activity_data == {"extra_data": {"session_duration": "2 hours"}} def test_log_guest_activity(db_session, guest_fixture): # Act log_entry = ActivityLog.log_guest_activity( activity_type=ActivityType.GUEST_RSVP, guest_id=guest_fixture.id, event_id=guest_fixture.event_id, description="Guest RSVP confirmed.", ip_address="192.168.0.2", user_agent="iOSApp/3.4", rsvp_status="confirmed" ) db_session.add(log_entry) db_session.commit() # Assert assert log_entry.activity_type == ActivityType.GUEST_RSVP assert log_entry.description == "Guest RSVP confirmed." assert log_entry.guest_id == guest_fixture.id assert log_entry.event_id == guest_fixture.event_id assert log_entry.ip_address == "192.168.0.2" assert log_entry.user_agent == "iOSApp/3.4" assert log_entry.activity_data == {"rsvp_status": "confirmed"} def test_repr_method(activity_log_fixture): # Act repr_output = repr(activity_log_fixture) # Assert assert repr_output == f""