Skip to content

Commit d31be71

Browse files
committed
Passing new test
1 parent 581aeb9 commit d31be71

File tree

3 files changed

+48
-18
lines changed

3 files changed

+48
-18
lines changed

src/vws/query.py

Lines changed: 31 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
Tools for interacting with the Vuforia Cloud Recognition Web APIs.
33
"""
44

5+
import datetime
56
import io
67
from typing import List
78
from urllib.parse import urljoin
@@ -17,9 +18,12 @@
1718
MaxNumResultsOutOfRange,
1819
)
1920
from vws.include_target_data import CloudRecoIncludeTargetData
20-
from vws.reports import QueryResult
21+
from vws.reports import QueryResult, TargetData
2122

2223

24+
def _cloud_reco_response_item_to_query_result():
25+
pass
26+
2327
class CloudRecoService:
2428
"""
2529
An interface to the Vuforia Cloud Recognition Web APIs.
@@ -133,4 +137,29 @@ def query(
133137
response=response,
134138
expected_result_code='Success',
135139
)
136-
return list(response.json()['results'])
140+
141+
result = []
142+
result_list = list(response.json()['results'])
143+
for item in result_list:
144+
if 'target_data' in item:
145+
target_data_dict = item['target_data']
146+
metadata = target_data_dict['application_metadata']
147+
timestamp_string = target_data_dict['target_timestamp']
148+
target_timestamp = datetime.datetime.utcfromtimestamp(
149+
timestamp_string,
150+
)
151+
target_data = TargetData(
152+
name=target_data_dict['name'],
153+
application_metadata=metadata,
154+
target_timestamp=target_timestamp,
155+
)
156+
else:
157+
target_data = None
158+
159+
query_result = QueryResult(
160+
target_id=item['target_id'],
161+
target_data=target_data,
162+
)
163+
164+
result.append(query_result)
165+
return result

tests/test_query.py

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ def test_match(
5151
)
5252
vws_client.wait_for_target_processed(target_id=target_id)
5353
[matching_target] = cloud_reco_client.query(image=high_quality_image)
54-
assert matching_target['target_id'] == target_id
54+
assert matching_target.target_id == target_id
5555

5656
def test_too_large(
5757
self,
@@ -102,7 +102,7 @@ def test_custom_base_url(self, high_quality_image: io.BytesIO) -> None:
102102
)
103103

104104
[match] = cloud_reco_client.query(image=high_quality_image)
105-
assert match['target_id'] == target_id
105+
assert match.target_id == target_id
106106

107107

108108
class TestMaxNumResults:
@@ -233,8 +233,8 @@ def test_default(
233233
image=high_quality_image,
234234
max_num_results=2,
235235
)
236-
assert 'target_data' in top_match
237-
assert 'target_data' not in second_match
236+
assert top_match.target_data is not None
237+
assert second_match.target_data is None
238238

239239
def test_top(
240240
self,
@@ -267,8 +267,8 @@ def test_top(
267267
max_num_results=2,
268268
include_target_data=CloudRecoIncludeTargetData.TOP,
269269
)
270-
assert 'target_data' in top_match
271-
assert 'target_data' not in second_match
270+
assert top_match.target_data is not None
271+
assert second_match.target_data is None
272272

273273
def test_none(
274274
self,
@@ -301,8 +301,8 @@ def test_none(
301301
max_num_results=2,
302302
include_target_data=CloudRecoIncludeTargetData.NONE,
303303
)
304-
assert 'target_data' not in top_match
305-
assert 'target_data' not in second_match
304+
assert top_match.target_data is None
305+
assert second_match.target_data is None
306306

307307
def test_all(
308308
self,
@@ -335,5 +335,5 @@ def test_all(
335335
max_num_results=2,
336336
include_target_data=CloudRecoIncludeTargetData.ALL,
337337
)
338-
assert 'target_data' in top_match
339-
assert 'target_data' in second_match
338+
assert top_match.target_data is not None
339+
assert second_match.target_data is not None

tests/test_vws.py

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -65,9 +65,9 @@ def test_add_target(
6565
matching_targets = cloud_reco_client.query(image=high_quality_image)
6666
if active_flag:
6767
[matching_target] = matching_targets
68-
assert matching_target['target_id'] == target_id
69-
query_target_data = matching_target['target_data']
70-
query_metadata = query_target_data['application_metadata']
68+
assert matching_target.target_id == target_id
69+
assert matching_target.target_data is not None
70+
query_metadata = matching_target.target_data.application_metadata
7171
assert query_metadata == encoded_metadata
7272
else:
7373
assert matching_targets == []
@@ -500,9 +500,10 @@ def test_update_target(
500500
)
501501
vws_client.wait_for_target_processed(target_id=target_id)
502502
[matching_target] = cloud_reco_client.query(image=high_quality_image)
503-
assert matching_target['target_id'] == target_id
504-
query_target_data = matching_target['target_data']
505-
query_metadata = query_target_data['application_metadata']
503+
assert matching_target.target_id == target_id
504+
query_target_data = matching_target.target_data
505+
assert query_target_data is not None
506+
query_metadata = query_target_data.application_metadata
506507
assert query_metadata is None
507508

508509
new_name = uuid.uuid4().hex

0 commit comments

Comments
 (0)