From f0d97be3633b69ee5edcc14aea0fe9c6152f4407 Mon Sep 17 00:00:00 2001 From: Adam Dangoor Date: Thu, 26 Dec 2019 11:12:15 +0000 Subject: [PATCH] Working target record object --- src/vws/reports.py | 17 +++++++++++++++++ src/vws/vws.py | 14 ++++++++++++-- tests/test_vws.py | 31 ++++++++++++++++--------------- 3 files changed, 45 insertions(+), 17 deletions(-) diff --git a/src/vws/reports.py b/src/vws/reports.py index 9f46475c8..676709b6e 100644 --- a/src/vws/reports.py +++ b/src/vws/reports.py @@ -60,3 +60,20 @@ class TargetSummaryReport: total_recos: int current_month_recos: int previous_month_recos: int + + +@dataclass +class TargetRecord: + """ + A target summary record. + + See + https://library.vuforia.com/articles/Solution/How-To-Use-the-Vuforia-Web-Services-API#How-To-Retrieve-a-Target-Record. + """ + + target_id: str + active_flag: bool + name: str + width: float + tracking_rating: int + reco_rating: str diff --git a/src/vws/vws.py b/src/vws/vws.py index 269347a94..a3a99e0fd 100644 --- a/src/vws/vws.py +++ b/src/vws/vws.py @@ -19,6 +19,7 @@ from vws.exceptions import TargetProcessingTimeout from vws.reports import ( DatabaseSummaryReport, + TargetRecord, TargetStatuses, TargetSummaryReport, ) @@ -213,7 +214,7 @@ def add_target( return str(response.json()['target_id']) - def get_target_record(self, target_id: str) -> Dict[str, Union[str, int]]: + def get_target_record(self, target_id: str) -> TargetRecord: """ Get a given target's target record from the Target Management System. @@ -243,7 +244,16 @@ def get_target_record(self, target_id: str) -> Dict[str, Union[str, int]]: expected_result_code='Success', ) - return dict(response.json()['target_record']) + target_record_dict = dict(response.json()['target_record']) + target_record = TargetRecord( + target_id=target_record_dict['target_id'], + active_flag=target_record_dict['active_flag'], + name=target_record_dict['name'], + width=target_record_dict['width'], + tracking_rating=target_record_dict['tracking_rating'], + reco_rating=target_record_dict['reco_rating'], + ) + return target_record def _wait_for_target_processed( self, diff --git a/tests/test_vws.py b/tests/test_vws.py index 3f7391f55..b0ec128cb 100644 --- a/tests/test_vws.py +++ b/tests/test_vws.py @@ -18,6 +18,7 @@ from vws.exceptions import TargetProcessingTimeout from vws.reports import ( DatabaseSummaryReport, + TargetRecord, TargetStatuses, TargetSummaryReport, ) @@ -57,9 +58,9 @@ def test_add_target( active_flag=active_flag, ) target_record = vws_client.get_target_record(target_id=target_id) - assert target_record['name'] == name - assert target_record['width'] == width - assert target_record['active_flag'] is active_flag + assert target_record.name == name + assert target_record.width == width + assert target_record.active_flag is active_flag vws_client.wait_for_target_processed(target_id=target_id) matching_targets = cloud_reco_client.query(image=high_quality_image) if active_flag: @@ -267,16 +268,16 @@ def test_get_target_record( ) result = vws_client.get_target_record(target_id=target_id) + expected_target_record = TargetRecord( + target_id=target_id, + active_flag=True, + name='x', + width=1, + tracking_rating=-1, + reco_rating='', + ) - expected_keys = { - 'target_id', - 'active_flag', - 'name', - 'width', - 'tracking_rating', - 'reco_rating', - } - assert set(result.keys()) == expected_keys + assert result == expected_target_record class TestWaitForTargetProcessed: @@ -531,9 +532,9 @@ def test_update_target( ) target_details = vws_client.get_target_record(target_id=target_id) - assert target_details['name'] == new_name - assert target_details['width'] == new_width - assert not target_details['active_flag'] + assert target_details.name == new_name + assert target_details.width == new_width + assert not target_details.active_flag def test_no_fields_given( self,