Пример #1
0
def test_convert_descriptor_query_to_search_query():
    descriptor_query = {
        'dimensions': {
            'latitude': {
                'range': (-35.5, -36.5),
            },
            'longitude': {
                'range': (148.3, 149.9)
            },
            'time': {
                'range': (datetime.datetime(2001, 5,
                                            7), datetime.datetime(2002, 3, 9))
            }
        }
    }
    descriptor_query_dimensions = descriptor_query['dimensions']
    query = Query.from_descriptor_request(descriptor_query)
    search_query = query.search_terms
    assert min(descriptor_query_dimensions['latitude']
               ['range']) == search_query['lat'].begin
    assert max(descriptor_query_dimensions['latitude']
               ['range']) == search_query['lat'].end
    assert min(descriptor_query_dimensions['longitude']
               ['range']) == search_query['lon'].begin
    assert max(descriptor_query_dimensions['longitude']
               ['range']) == search_query['lon'].end
    assert datetime.datetime(2001, 5, 7,
                             tzinfo=tz.tzutc()) == search_query['time'].begin
    assert datetime.datetime(2002, 3, 9,
                             tzinfo=tz.tzutc()) == search_query['time'].end
Пример #2
0
def test_convert_descriptor_query_to_search_query_with_groupby():
    descriptor_query = {
        'dimensions': {
            'time': {
                'range': (datetime.datetime(2001, 5,
                                            7), datetime.datetime(2002, 3, 9)),
                'group_by':
                'solar_day'
            }
        }
    }
    query = Query.from_descriptor_request(descriptor_query)
    assert query.group_by
    assert callable(query.group_by.group_by_func)
    assert query.group_by.dimension == 'time'
    assert query.group_by.units == 'seconds since 1970-01-01 00:00:00'
Пример #3
0
def test_convert_descriptor_query_to_search_query_with_crs_conversion():
    descriptor_query = {
        'dimensions': {
            'latitude': {
                'range': (-3971790.0737348166, -4101004.3359463234),
                'crs': 'EPSG:3577',
            },
            'longitude': {
                'range': (1458629.8414059384, 1616407.8831088375),
                'crs': 'EPSG:3577',
            }
        }
    }
    expected_result = {
        'lat': Range(-36.6715565808, -35.3276413143),
        'lon': Range(148.145408153, 150.070966341),
    }
    query = Query.from_descriptor_request(descriptor_query)
    search_query = query.search_terms
    assert all(map(isclose, search_query['lat'], expected_result['lat']))
    assert all(map(isclose, search_query['lon'], expected_result['lon']))
Пример #4
0
def test_convert_descriptor_query_to_search_query_with_slices():
    descriptor_query = {
        'dimensions': {
            'latitude': {
                'range': (-35.5, -36.5),
                'array_range': (100, 200)
            },
            'longitude': {
                'range': (148.3, 149.9),
                'array_range': (100, 200)
            },
            'time': {
                'range': (datetime.datetime(2001, 5,
                                            7), datetime.datetime(2002, 3, 9)),
                'array_range': (5, 10)
            }
        }
    }
    query = Query.from_descriptor_request(descriptor_query)
    assert query.slices
    assert query.slices['latitude'] == slice(100, 200)
    assert query.slices['longitude'] == slice(100, 200)
    assert query.slices['time'] == slice(5, 10)
Пример #5
0
def test_convert_descriptor_query_to_search_query_with_single_value():
    descriptor_query = {
        'dimensions': {
            'latitude': {
                'range': -3971790.0737348166,
                'crs': 'EPSG:3577',
            },
            'longitude': {
                'range': 1458629.8414059384,
                'crs': 'EPSG:3577',
            }
        }
    }
    expected_lat = -35.5160921229
    expected_lon = 148.145408153
    query = Query.from_descriptor_request(descriptor_query)
    search_query = query.search_terms
    assert min(*search_query['lat']) <= expected_lat <= max(
        *search_query['lat'])
    assert search_query['lat'].begin != search_query['lat'].end
    assert min(*search_query['lon']) <= expected_lon <= max(
        *search_query['lon'])
    assert search_query['lon'].begin != search_query['lon'].end
Пример #6
0
def test_descriptor_handles_bad_input():
    with pytest.raises(ValueError):
        descriptor_query = "Not a descriptor"
        Query.from_descriptor_request(descriptor_query)

    with pytest.raises(ValueError):
        descriptor_query = ["Not a descriptor"]
        Query.from_descriptor_request(descriptor_query)

    with pytest.raises(ValueError):
        descriptor_query = {
            'dimensions': {
                'latitude': {
                    'range': -35,
                    'crs': 'EPSG:4326',
                },
                'longitude': {
                    'range': 1458629.8414059384,
                    'crs': 'EPSG:3577',
                }
            }
        }
        Query.from_descriptor_request(descriptor_query)