File size: 2,420 Bytes
8aa7d2f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
f53eca9
8aa7d2f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
f53eca9
8aa7d2f
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
import json
from unittest.mock import MagicMock, patch

from surf_spot_finder.tools import openstreetmap


def test_get_area_lat_lon():
    with patch("requests.get") as mock_get:
        mock_response = MagicMock()
        mock_response.status_code = 200
        mock_response.content.decode.return_value = json.dumps(
            [{"lat": "40.0", "lon": "-3.0"}]
        )
        mock_get.return_value = mock_response

        lat, lon = openstreetmap.get_area_lat_lon("Madrid")
        assert lat == "40.0"
        assert lon == "-3.0"


def test_driving_hours_to_meters():
    assert openstreetmap.driving_hours_to_meters(1) == 70000


def test_get_lat_lon_center():
    bounds = {"minlat": 40.0, "minlon": -3.0, "maxlat": 41.0, "maxlon": -2.0}
    lat, lon = openstreetmap.get_lat_lon_center(bounds)
    assert lat == 40.5
    assert lon == -2.5


def test_get_surfing_spots():
    with patch("requests.get") as mock_get:
        mock_response = MagicMock()
        mock_response.status_code = 200
        mock_response.json.return_value = {
            "elements": [
                {
                    "tags": {"name": "Surf Spot 1", "sport": "surfing"},
                    "bounds": {
                        "minlat": 40.0,
                        "minlon": -3.0,
                        "maxlat": 40.1,
                        "maxlon": -2.9,
                    },
                },
                {
                    "tags": {"name": "Beach 2", "sport": "swimming"},
                    "bounds": {
                        "minlat": 41.0,
                        "minlon": -4.0,
                        "maxlat": 41.1,
                        "maxlon": -3.9,
                    },
                },
                {
                    "tags": {"name": "Surf Spot 3", "sport": "surfing"},
                    "bounds": {
                        "minlat": 42.0,
                        "minlon": -5.0,
                        "maxlat": 42.1,
                        "maxlon": -4.9,
                    },
                },
            ]
        }
        mock_get.return_value = mock_response

        results = openstreetmap.get_surfing_spots(lat=40.5, lon=-3.5, radius=10000)
        assert len(results) == 2
        assert results[0][0] == "Surf Spot 1"
        assert results[0][1] == (40.05, -2.95)
        assert results[1][0] == "Surf Spot 3"
        assert results[1][1] == (42.05, -4.95)