mirror of
https://github.com/osm-search/Nominatim.git
synced 2026-02-26 11:08:13 +00:00
bdd: replace property_list construct with standard check functions
This commit is contained in:
@@ -152,10 +152,6 @@ class GenericResponse:
|
|||||||
self.check_row_field(i, name, Field(value))
|
self.check_row_field(i, name, Field(value))
|
||||||
|
|
||||||
|
|
||||||
def property_list(self, prop):
|
|
||||||
return [x[prop] for x in self.result]
|
|
||||||
|
|
||||||
|
|
||||||
def check_row(self, idx, check, msg):
|
def check_row(self, idx, check, msg):
|
||||||
""" Assert for the condition 'check' and print 'msg' on fail together
|
""" Assert for the condition 'check' and print 'msg' on fail together
|
||||||
with the contents of the failing result.
|
with the contents of the failing result.
|
||||||
|
|||||||
@@ -314,36 +314,42 @@ def check_address(context, lid, complete):
|
|||||||
if complete == 'is':
|
if complete == 'is':
|
||||||
assert len(addr_parts) == 0, "Additional address parts found: %s" % str(addr_parts)
|
assert len(addr_parts) == 0, "Additional address parts found: %s" % str(addr_parts)
|
||||||
|
|
||||||
|
|
||||||
@then(u'result (?P<lid>\d+ )?has bounding box in (?P<coords>[\d,.-]+)')
|
@then(u'result (?P<lid>\d+ )?has bounding box in (?P<coords>[\d,.-]+)')
|
||||||
def step_impl(context, lid, coords):
|
def check_bounding_box_in_area(context, lid, coords):
|
||||||
if lid is None:
|
if lid is None:
|
||||||
context.execute_steps("then at least 1 result is returned")
|
context.execute_steps("then at least 1 result is returned")
|
||||||
bboxes = context.response.property_list('boundingbox')
|
todos = range(len(context.response.result))
|
||||||
else:
|
else:
|
||||||
context.execute_steps("then more than {}results are returned".format(lid))
|
context.execute_steps(f"then more than {lid}results are returned")
|
||||||
bboxes = [context.response.result[int(lid)]['boundingbox']]
|
todos = (int(lid), )
|
||||||
|
|
||||||
expected = Bbox(coords)
|
expected = Bbox(coords)
|
||||||
|
|
||||||
for bbox in bboxes:
|
for idx in todos:
|
||||||
assert bbox in expected, "Bbox {} is not contained in {}.".format(bbox, expected)
|
res = context.response.result[idx]
|
||||||
|
check_for_attributes(res, 'boundingbox')
|
||||||
|
context.response.check_row(idx, res['boundingbox'] in expected,
|
||||||
|
f"Bbox is not contained in {expected}")
|
||||||
|
|
||||||
|
|
||||||
@then(u'result (?P<lid>\d+ )?has centroid in (?P<coords>[\d,.-]+)')
|
@then(u'result (?P<lid>\d+ )?has centroid in (?P<coords>[\d,.-]+)')
|
||||||
def step_impl(context, lid, coords):
|
def check_centroid_in_area(context, lid, coords):
|
||||||
if lid is None:
|
if lid is None:
|
||||||
context.execute_steps("then at least 1 result is returned")
|
context.execute_steps("then at least 1 result is returned")
|
||||||
centroids = zip(context.response.property_list('lon'),
|
todos = range(len(context.response.result))
|
||||||
context.response.property_list('lat'))
|
|
||||||
else:
|
else:
|
||||||
context.execute_steps("then more than %sresults are returned".format(lid))
|
context.execute_steps(f"then more than {lid}results are returned")
|
||||||
res = context.response.result[int(lid)]
|
todos = (int(lid), )
|
||||||
centroids = [(res['lon'], res['lat'])]
|
|
||||||
|
|
||||||
expected = Bbox(coords)
|
expected = Bbox(coords)
|
||||||
|
|
||||||
for centroid in centroids:
|
for idx in todos:
|
||||||
assert centroid in expected,\
|
res = context.response.result[idx]
|
||||||
"Centroid {} is not inside {}.".format(centroid, expected)
|
check_for_attributes(res, 'lat,lon')
|
||||||
|
context.response.check_row(idx, (res['lon'], res['lat']) in expected,
|
||||||
|
f"Centroid is not inside {expected}")
|
||||||
|
|
||||||
|
|
||||||
@then(u'there are(?P<neg> no)? duplicates')
|
@then(u'there are(?P<neg> no)? duplicates')
|
||||||
def check_for_duplicates(context, neg):
|
def check_for_duplicates(context, neg):
|
||||||
|
|||||||
Reference in New Issue
Block a user