コード例 #1
0
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()
コード例 #2
0
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()
コード例 #3
0
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()
コード例 #4
0
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'})
コード例 #5
0
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')
コード例 #6
0
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'})
コード例 #7
0
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]
                }
            }
        ]
    })
コード例 #8
0
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()