X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/3cdbcbff8f02d7b46dde503c32bc8327e4264f6f..473bbb7234dc21a74b3d7ed0115a02ca3379014b:/test/bdd/steps/queries.py diff --git a/test/bdd/steps/queries.py b/test/bdd/steps/queries.py index 731dc1b5..7266be55 100644 --- a/test/bdd/steps/queries.py +++ b/test/bdd/steps/queries.py @@ -232,6 +232,24 @@ class DetailsResponse(GenericResponse): options={'char-encoding' : 'utf8'}) self.result = {} + def parse_json(self): + self.result = [json.JSONDecoder(object_pairs_hook=OrderedDict).decode(self.page)] + + +class StatusResponse(GenericResponse): + + def __init__(self, page, fmt='text', errorcode=200): + self.page = page + self.format = fmt + self.errorcode = errorcode + + if errorcode == 200 and fmt != 'text': + getattr(self, 'parse_' + fmt)() + + def parse_json(self): + self.result = [json.JSONDecoder(object_pairs_hook=OrderedDict).decode(self.page)] + + @when(u'searching for "(?P.*)"(?P with dups)?') def query_cmd(context, query, dups): """ Query directly via PHP script. @@ -379,7 +397,12 @@ def website_details_request(context, fmt, query): params['place_id'] = query outp, status = send_api_query('details', params, fmt, context) - context.response = DetailsResponse(outp, 'html', status) + if fmt is None: + outfmt = 'html' + else: + outfmt = fmt.strip() + + context.response = DetailsResponse(outp, outfmt, status) @when(u'sending (?P\S+ )?lookup query for (?P.*)') def website_lookup_request(context, fmt, query): @@ -393,6 +416,18 @@ def website_lookup_request(context, fmt, query): context.response = SearchResponse(outp, outfmt, status) +@when(u'sending (?P\S+ )?status query') +def website_status_request(context, fmt): + params = {} + outp, status = send_api_query('status', params, fmt, context) + + if fmt is None: + outfmt = 'text' + else: + outfmt = fmt.strip() + + context.response = StatusResponse(outp, outfmt, status) + @step(u'(?Pless than|more than|exactly|at least|at most) (?P\d+) results? (?:is|are) returned') def validate_result_number(context, operator, number): eq_(context.response.errorcode, 200) @@ -404,6 +439,10 @@ def validate_result_number(context, operator, number): def check_http_return_status(context, status): eq_(context.response.errorcode, int(status)) +@then(u'the page contents equals "(?P.+)"') +def check_page_content_equals(context, text): + eq_(context.response.page, text) + @then(u'the result is valid (?P\w+)') def step_impl(context, fmt): context.execute_steps("Then a HTTP 200 is returned")