def returned_letter_statistics(service_id): most_recent = fetch_most_recent_returned_letter(service_id) if not most_recent: return jsonify({ 'returned_letter_count': 0, 'most_recent_report': None, }) most_recent_reported_at = datetime.combine( most_recent.reported_at, datetime.min.time() ) if most_recent_reported_at < midnight_n_days_ago(7): return jsonify({ 'returned_letter_count': 0, 'most_recent_report': most_recent.reported_at.strftime(DATETIME_FORMAT_NO_TIMEZONE), }) count = fetch_recent_returned_letter_count(service_id) return jsonify({ 'returned_letter_count': count.returned_letter_count, 'most_recent_report': most_recent.reported_at.strftime(DATETIME_FORMAT_NO_TIMEZONE), })
def test_get_returned_letter_count(sample_service): # Before 7 days – don’t count create_returned_letter( sample_service, reported_at=datetime(2001, 1, 1) ) create_returned_letter( sample_service, reported_at=datetime(2010, 11, 1, 23, 59, 59), ) # In the last 7 days – count create_returned_letter( sample_service, reported_at=datetime(2010, 11, 2, 0, 0, 0), ) create_returned_letter( sample_service, reported_at=datetime(2010, 11, 8, 10, 0), ) create_returned_letter( sample_service, reported_at=datetime(2010, 11, 8, 10, 0), ) # Different service – don’t count create_returned_letter( create_service(service_id=uuid.uuid4(), service_name='Other service'), reported_at=datetime(2010, 11, 8, 10, 0), ) with freeze_time('2010-11-08 10:10'): result = fetch_recent_returned_letter_count(sample_service.id) assert result.returned_letter_count == 3