def test_should_satisfy_activity_by_time_range_criteria(): activity = { "opening_hours": { "mo": ["00:00-06:00"], "tu": ["00:00-23:59"], "we": ["00:00-23:59"], "th": ["00:00-23:59"], "fr": ["00:00-23:59"], "sa": ["00:00-23:59"], "su": ["00:00-23:59"] }, "hours_spent": 1, } criteria = FindActivitiesCriteria( from_time='11:00', to_time='12:30' ) assert_that(file_activities_repository()._is_activity_satisfied_by_time_range(activity, criteria)).is_true() criteria = FindActivitiesCriteria( from_time='00:01', to_time='23:58' ) assert_that(file_activities_repository()._is_activity_satisfied_by_time_range(activity, criteria)).is_true()
def test_should_not_satisfy_activity_by_hours_spent(): activity = {"hours_spent": 1, "opening_hours": {"mo": ["00:00-23:59"]}} criteria = FindActivitiesCriteria( from_time='11:00', to_time='11:30' ) assert_that(file_activities_repository()._is_activity_satisfied_by_time_range(activity, criteria)).is_false() criteria = FindActivitiesCriteria( from_time='11:00', to_time='11:59' ) assert_that(file_activities_repository()._is_activity_satisfied_by_time_range(activity, criteria)).is_false()
def test_should_not_satisfy_activity_by_composed_criteria(): location = 'some location' district = 'some district' activity = {'location': location, 'district': 'another district'} criteria = FindActivitiesCriteria(location=location, district=district) assert_that(file_activities_repository()._is_activity_satisfied_by_params(activity, criteria)).is_false()
def get_activities(): result = activities_repository().fetch_activities_by_criteria_geojson(FindActivitiesCriteria( location=request.args.get('location', None), district=request.args.get('district', None), category=request.args.get('category', None), )) return Response(response=json.dumps(result), headers={'Content-Type': 'application/json'})
def test_should_recommend_activity(): criteria = FindActivitiesCriteria( category='shopping', from_time='09:30', to_time='14:30' ) recommended_activity = file_activities_repository().fetch_recommended_activity_by_criteria_geojson(criteria) assert_that(recommended_activity['properties']['name']).is_equal_to('El Rastro') criteria = FindActivitiesCriteria( category='shopping', from_time='16:30', to_time='20:30' ) recommended_activity = file_activities_repository().fetch_recommended_activity_by_criteria_geojson(criteria) assert_that(recommended_activity['properties']['name']).is_equal_to('ECI Nuevos Ministerios')
def get_recommendations(): if not request.args.get('from_time') or not request.args.get('to_time'): return Response(status=422) result = activities_repository().fetch_recommended_activity_by_criteria_geojson(FindActivitiesCriteria( category=request.args.get('category', None), from_time=request.args.get('from_time'), to_time=request.args.get('to_time'), )) return Response(response=json.dumps(result), headers={'Content-Type': 'application/json'})
def test_should_fetch_activities_by_criteria_in_geojson_format(): geojson_activities = file_activities_repository().fetch_activities_by_criteria_geojson(FindActivitiesCriteria( location='outdoors', district='Centro', category='shopping' )) assert_that(geojson_activities).is_equal_to({ 'type': 'FeatureCollection', 'features': [ { 'type': 'Feature', 'geometry': { 'type': 'Point', 'coordinates': [40.4087357, -3.7081466] }, 'properties': { 'name': 'El Rastro', 'opening_hours': {'mo': [], 'tu': [], 'we': [], 'th': [], 'fr': [], 'sa': [], 'su': ['09:00-15:00']}, 'hours_spent': 2.5, 'category': 'shopping', 'location': 'outdoors', 'district': 'Centro', 'latlng': [40.4087357, -3.7081466] } }, { 'type': 'Feature', 'geometry': { 'type': 'Point', 'coordinates': [40.4199837, -3.7054455] }, 'properties': { 'name': 'Gran Vía', 'opening_hours': {'mo': ['00:00-23:59'], 'tu': ['00:00-23:59'], 'we': ['00:00-23:59'], 'th': ['00:00-23:59'], 'fr': ['00:00-23:59'], 'sa': ['00:00-23:59'], 'su': ['00:00-23:59']}, 'hours_spent': 1, 'category': 'shopping', 'location': 'outdoors', 'district': 'Centro', 'latlng': [40.4199837, -3.7054455] } } ] })
def test_should_not_satisfy_activity_by_simple_criteria(): location = 'some location' activity = {'location': location} criteria = FindActivitiesCriteria(location='another location') assert_that(file_activities_repository()._is_activity_satisfied_by_params(activity, criteria)).is_false()