From 0915e4dd93532537146543e5ecc9c72ad4ad1528 Mon Sep 17 00:00:00 2001 From: Yoann Schneider <yschneider@teklia.com> Date: Mon, 2 Oct 2023 18:44:47 +0200 Subject: [PATCH] Confidence may be null --- arkindex_worker/worker/element.py | 5 ++-- tests/test_elements_worker/test_elements.py | 31 ++++++++++++--------- 2 files changed, 21 insertions(+), 15 deletions(-) diff --git a/arkindex_worker/worker/element.py b/arkindex_worker/worker/element.py index fb42902f..64c69ea8 100644 --- a/arkindex_worker/worker/element.py +++ b/arkindex_worker/worker/element.py @@ -316,8 +316,9 @@ class ElementMixin(object): isinstance(coord, (int, float)) for point in polygon for coord in point ), "polygon points should be lists of two numbers" - if (confidence := kwargs.get("confidence")) is not None: - assert ( + if "confidence" in kwargs: + confidence = kwargs["confidence"] + assert confidence is None or ( isinstance(confidence, float) and 0 <= confidence <= 1 ), "confidence should be None or a float in [0..1] range" diff --git a/tests/test_elements_worker/test_elements.py b/tests/test_elements_worker/test_elements.py index 28aa6454..ec61d238 100644 --- a/tests/test_elements_worker/test_elements.py +++ b/tests/test_elements_worker/test_elements.py @@ -1222,9 +1222,11 @@ def test_create_elements_integrity_error( {"element": "not element type"}, "element shouldn't be null and should be an Element or CachedElement", ), - - )) -def test_partial_update_element_wrong_param_element(mock_elements_worker, payload, error): + ), +) +def test_partial_update_element_wrong_param_element( + mock_elements_worker, payload, error +): api_payload = { "element": Element({"zone": None}), **payload, @@ -1256,12 +1258,13 @@ def test_partial_update_element_wrong_param_type(mock_elements_worker, payload, ) assert str(e.value) == error + @pytest.mark.parametrize( "payload, error", ( # Name ({"name": 1234}, "name should be a str"), - ) + ), ) def test_partial_update_element_wrong_param_name(mock_elements_worker, payload, error): api_payload = { @@ -1294,9 +1297,11 @@ def test_partial_update_element_wrong_param_name(mock_elements_worker, payload, {"polygon": [["not a coord", 1], [2, 2], [2, 1], [1, 2]]}, "polygon points should be lists of two numbers", ), - ) + ), ) -def test_partial_update_element_wrong_param_polygon(mock_elements_worker, payload, error): +def test_partial_update_element_wrong_param_polygon( + mock_elements_worker, payload, error +): api_payload = { "element": Element({"zone": None}), **payload, @@ -1321,7 +1326,7 @@ def test_partial_update_element_wrong_param_polygon(mock_elements_worker, payloa {"confidence": float("inf")}, "confidence should be None or a float in [0..1] range", ), - ) + ), ) def test_partial_update_element_wrong_param_conf(mock_elements_worker, payload, error): api_payload = { @@ -1343,7 +1348,7 @@ def test_partial_update_element_wrong_param_conf(mock_elements_worker, payload, ({"rotation_angle": "lol"}, "rotation_angle should be a positive integer"), ({"rotation_angle": -1}, "rotation_angle should be a positive integer"), ({"rotation_angle": 0.5}, "rotation_angle should be a positive integer"), - ) + ), ) def test_partial_update_element_wrong_param_rota(mock_elements_worker, payload, error): api_payload = { @@ -1364,7 +1369,7 @@ def test_partial_update_element_wrong_param_rota(mock_elements_worker, payload, # Mirrored ({"mirrored": "lol"}, "mirrored should be a boolean"), ({"mirrored": 1234}, "mirrored should be a boolean"), - ) + ), ) def test_partial_update_element_wrong_param_mir(mock_elements_worker, payload, error): api_payload = { @@ -1379,7 +1384,6 @@ def test_partial_update_element_wrong_param_mir(mock_elements_worker, payload, e assert str(e.value) == error - @pytest.mark.parametrize( "payload, error", ( @@ -1506,13 +1510,14 @@ def test_partial_update_element( assert getattr(cached_element, param) == elt_response[param] +@pytest.mark.parametrize("confidence", (None, 0.42)) def test_partial_update_element_confidence( - responses, mock_elements_worker_with_cache, mock_cached_elements + responses, mock_elements_worker_with_cache, mock_cached_elements, confidence ): elt = CachedElement.select().first() elt_response = { "polygon": [[10, 10], [20, 20], [20, 10], [10, 20]], - "confidence": 0.42, + "confidence": confidence, } responses.add( responses.PATCH, @@ -1540,7 +1545,7 @@ def test_partial_update_element_confidence( cached_element = CachedElement.get(CachedElement.id == elt.id) assert cached_element.polygon == str(elt_response["polygon"]) - assert cached_element.confidence == elt_response["confidence"] + assert cached_element.confidence == confidence def test_list_element_children_wrong_element(mock_elements_worker): -- GitLab