from unittest.mock import patch import pytest from fittrackee.workouts.utils.maps import get_static_map_tile_server_url class TestGetStaticMapTileServerUrl: @pytest.mark.parametrize( 'input_tile_server_url,' 'input_tile_server_subdomains,' 'expected_tile_server_url', [ # tile server without subdomain ( 'https://tile.openstreetmap.org/{z}/{x}/{y}.png', '', 'https://tile.openstreetmap.org/{z}/{x}/{y}.png', ), ( 'https://tile.openstreetmap.org/{z}/{x}/{y}.png', 'a', 'https://tile.openstreetmap.org/{z}/{x}/{y}.png', ), # tile server with subdomain ( 'https://{s}.tile-cyclosm.openstreetmap.fr/cyclosm/' '{z}/{x}/{y}.png', 'a', 'https://a.tile-cyclosm.openstreetmap.fr/cyclosm/' '{z}/{x}/{y}.png', ), ( 'https://{s}.tile-cyclosm.openstreetmap.fr/cyclosm/' '{z}/{x}/{y}.png', '', 'https://tile-cyclosm.openstreetmap.fr/cyclosm/' '{z}/{x}/{y}.png', ), ], ) def test_it_returns_tile_server_url( self, input_tile_server_url: str, input_tile_server_subdomains: str, expected_tile_server_url: str, ) -> None: tile_config = { 'URL': input_tile_server_url, 'STATICMAP_SUBDOMAINS': input_tile_server_subdomains, } assert ( get_static_map_tile_server_url(tile_config) == expected_tile_server_url ) def test_it_returns_tile_server_url_with_random_subdomain(self) -> None: """in case multiple subdomains are provided""" tile_config = { 'URL': ( 'https://{s}.tile-cyclosm.openstreetmap.fr/cyclosm/' '{z}/{x}/{y}.png' ), 'STATICMAP_SUBDOMAINS': 'a,b,c', } with patch('random.choice', return_value='b'): assert get_static_map_tile_server_url(tile_config) == ( 'https://b.tile-cyclosm.openstreetmap.fr/cyclosm/' '{z}/{x}/{y}.png' )