From 842f84723e4f83ea271c60978b7f3ecc6333fce6 Mon Sep 17 00:00:00 2001 From: index-git Date: Tue, 26 Sep 2023 09:28:58 +0200 Subject: [PATCH] Test map thumbnail --- .../map_layer_relation_test.py | 17 +++++++++++++++++ .../map_liberec_hranice_thumbnail.png | Bin 0 -> 21535 bytes .../map_liberec_thumbnail.png | Bin 0 -> 5627 bytes 3 files changed, 17 insertions(+) create mode 100644 tests/dynamic_data/publications/map_layer_relation/map_liberec_hranice_thumbnail.png create mode 100644 tests/dynamic_data/publications/map_layer_relation/map_liberec_thumbnail.png diff --git a/tests/dynamic_data/publications/map_layer_relation/map_layer_relation_test.py b/tests/dynamic_data/publications/map_layer_relation/map_layer_relation_test.py index 7202cd5f8..f4eae3a45 100644 --- a/tests/dynamic_data/publications/map_layer_relation/map_layer_relation_test.py +++ b/tests/dynamic_data/publications/map_layer_relation/map_layer_relation_test.py @@ -30,6 +30,7 @@ 'exp_before_rest_method': { 'map_layers': None, 'operates_on': None, + 'thumbnail': None, }, 'rest_method': base_test_classes.RestMethodAll.POST, 'rest_args': { @@ -43,6 +44,7 @@ (LAYER_HRANICE, 3, True), }, 'operates_on': [LAYER_HRANICE], + 'thumbnail': os.path.join(DIRECTORY, 'map_liberec_hranice_thumbnail.png'), }, }, 'delete': { @@ -56,12 +58,14 @@ (LAYER_HRANICE, 3, True), }, 'operates_on': [LAYER_HRANICE], + 'thumbnail': os.path.join(DIRECTORY, 'map_liberec_hranice_thumbnail.png'), }, 'rest_method': base_test_classes.RestMethodAll.DELETE, 'rest_args': {}, 'exp_after_rest_method': { 'map_layers': None, 'operates_on': None, + 'thumbnail': None, }, }, 'patch_map_with_unauthorized_layer': { @@ -71,14 +75,17 @@ 'exp_before_rest_method': { 'map_layers': [(LAYER_HRANICE_PRIVATE, 1, True)], 'operates_on': [], + 'thumbnail': os.path.join(DIRECTORY, 'map_liberec_thumbnail.png'), }, 'rest_method': base_test_classes.RestMethodAll.PATCH, 'rest_args': { + 'file_paths': [os.path.join(DIRECTORY, 'internal_hranice_private.json')], 'actor_name': PRIVATE_WORKSPACE, }, 'exp_after_rest_method': { 'map_layers': [(LAYER_HRANICE_PRIVATE, 1, True)], 'operates_on': [LAYER_HRANICE_PRIVATE], + 'thumbnail': os.path.join(DIRECTORY, 'map_liberec_hranice_thumbnail.png'), }, }, 'patch_map_with_different_layers': { @@ -93,6 +100,7 @@ (LAYER_HRANICE, 3, True), }, 'operates_on': [LAYER_HRANICE], + 'thumbnail': os.path.join(DIRECTORY, 'map_liberec_hranice_thumbnail.png'), }, 'rest_method': base_test_classes.RestMethodAll.PATCH, 'rest_args': { @@ -102,6 +110,7 @@ 'exp_after_rest_method': { 'map_layers': [(LAYER_HRANICE_PRIVATE, 1, True)], 'operates_on': [LAYER_HRANICE_PRIVATE], + 'thumbnail': os.path.join(DIRECTORY, 'map_liberec_hranice_thumbnail.png'), }, }, } @@ -195,6 +204,12 @@ def assert_exp_layer_maps(layer, map_operates_on_tuples): ] assert found_layer_maps == exp_layer_maps + @staticmethod + def assert_exp_map_thumbnail(map, exp_thumbnail): + if exp_thumbnail: + asserts_publ.internal.thumbnail_equals(map.workspace, map.type, map.name, exp_thumbnail, + max_diffs=0) + def test_publication(self, map, rest_method, rest_args, params): exp = params['exp_before_rest_method'] self.assert_exp_map_layers(map, exp['map_layers'], exp['operates_on'], http_method=REQUEST_METHOD_POST, @@ -203,6 +218,7 @@ def test_publication(self, map, rest_method, rest_args, params): (MAP_HRANICE, MAP_HRANICE_OPERATES_ON), (map, exp['operates_on'] or []), ]) + self.assert_exp_map_thumbnail(map, exp['thumbnail']) rest_method.fn(map, args=rest_args) if rest_method.enum_item in [base_test_classes.RestMethodAll.POST, base_test_classes.RestMethodAll.PATCH]: @@ -217,3 +233,4 @@ def test_publication(self, map, rest_method, rest_args, params): (MAP_HRANICE, MAP_HRANICE_OPERATES_ON), (map, exp['operates_on'] or []), ]) + self.assert_exp_map_thumbnail(map, exp['thumbnail']) diff --git a/tests/dynamic_data/publications/map_layer_relation/map_liberec_hranice_thumbnail.png b/tests/dynamic_data/publications/map_layer_relation/map_liberec_hranice_thumbnail.png new file mode 100644 index 0000000000000000000000000000000000000000..a53cd1c77370e0f37c54d26c851c8ca09cb86808 GIT binary patch literal 21535 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ℑ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