2019-03-12 11:52:28 +01:00
defmodule Mobilizon.Service.Geospatial.NominatimTest do
2019-09-22 16:26:23 +02:00
use ExVCR.Mock , adapter : ExVCR.Adapter.Hackney
2019-03-12 11:52:28 +01:00
use Mobilizon.DataCase , async : false
import Mock
2019-09-22 16:26:23 +02:00
alias Mobilizon.Addresses.Address
alias Mobilizon.Service.Geospatial.Nominatim
2019-10-11 17:20:03 +02:00
alias Mobilizon.Config
@httpoison_headers [
{ " User-Agent " ,
" #{ Config . instance_name ( ) } #{ Config . instance_hostname ( ) } - Mobilizon #{
Mix.Project . config ( ) [ :version ]
} " }
]
2019-03-12 11:52:28 +01:00
describe " search address " do
test " produces a valid search address with options " do
with_mock HTTPoison ,
2019-10-11 17:20:03 +02:00
get : fn _url , _headers ->
2019-03-12 11:52:28 +01:00
{ :ok , % HTTPoison.Response { status_code : 200 , body : " [] " } }
end do
Nominatim . search ( " 10 Rue Jangot " ,
limit : 5 ,
lang : " fr "
)
assert_called (
HTTPoison . get (
2019-10-11 17:20:03 +02:00
" https://nominatim.openstreetmap.org/search?format=jsonv2&q=10%20Rue%20Jangot&limit=5&accept-language=fr&addressdetails=1 " ,
@httpoison_headers
2019-03-12 11:52:28 +01:00
)
)
end
end
test " returns a valid address from search " do
use_cassette " geospatial/nominatim/search " do
assert % Address {
2019-03-22 15:51:23 +01:00
locality : " Lyon " ,
2019-03-12 11:52:28 +01:00
description :
" 10, Rue Jangot, La Guillotière, Lyon 7e Arrondissement, Lyon, Métropole de Lyon, Departemental constituency of Rhône, Auvergne-Rhône-Alpes, Metropolitan France, 69007, France " ,
2019-03-22 15:51:23 +01:00
region : " Auvergne-Rhône-Alpes " ,
country : " France " ,
postal_code : " 69007 " ,
street : " 10 Rue Jangot " ,
2019-03-12 11:52:28 +01:00
geom : % Geo.Point {
coordinates : { 4.8425657 , 45.7517141 } ,
properties : %{ } ,
srid : 4326
2019-08-22 15:57:44 +02:00
} ,
origin_id : " osm:3078260611 "
2019-03-12 11:52:28 +01:00
} == Nominatim . search ( " 10 rue Jangot " ) |> hd
end
end
test " returns a valid address from reverse geocode " do
use_cassette " geospatial/nominatim/geocode " do
assert % Address {
2019-03-22 15:51:23 +01:00
locality : " Lyon " ,
2019-03-12 11:52:28 +01:00
description :
" 10, Rue Jangot, La Guillotière, Lyon 7e Arrondissement, Lyon, Métropole de Lyon, Circonscription départementale du Rhône, Auvergne-Rhône-Alpes, France métropolitaine, 69007, France " ,
2019-03-22 15:51:23 +01:00
region : " Auvergne-Rhône-Alpes " ,
country : " France " ,
postal_code : " 69007 " ,
street : " 10 Rue Jangot " ,
2019-03-12 11:52:28 +01:00
geom : % Geo.Point {
coordinates : { 4.8425657 , 45.7517141 } ,
properties : %{ } ,
srid : 4326
2019-08-22 15:57:44 +02:00
} ,
origin_id : " osm:3078260611 "
2019-03-12 11:52:28 +01:00
} ==
Nominatim . geocode ( 4.842569 , 45.751718 )
|> hd
end
end
end
end