def test_calculate_meeting_attendance_no_events(chapter, user_status_change_factory): user_status_change_factory.create_batch( 20, status="active", user__chapter=chapter, start=factory.Faker("date_between", start_date="-1y", end_date="today"), end=factory.Faker("date_between", start_date="today", end_date="+1y"), ) date = fake.date_between(start_date="-15d", end_date="-5d") actual_score = Event.calculate_meeting_attendance(chapter, date) # No events, should be 0 score assert actual_score == 0
def test_calculate_meeting_attendance(chapter, event_factory, user_status_change_factory): score_type = ScoreType.objects.get(name="Attendance at meetings") user_status_change_factory.create_batch( 20, status="active", user__chapter=chapter, start=factory.Faker("date_between", start_date="-1y", end_date="today"), end=factory.Faker("date_between", start_date="today", end_date="+1y"), ) event_factory.create_batch( 10, calculate_score=False, type=score_type, members=5, chapter=chapter, date=factory.Faker("date_between", start_date="-15d", end_date="-5d"), ) date = fake.date_between(start_date="-15d", end_date="-5d") actual_score = Event.calculate_meeting_attendance(chapter, date) # 10 events at 25% attendance each eval "15*MEETINGS" # Total score is 3.75 and individual event is 3.75/10=0.38 assert actual_score == 0.39