Add GraphQL methods and test
Signed-off-by: Thomas Citharel <tcit@tcit.fr> Finish Signed-off-by: Thomas Citharel <tcit@tcit.fr> Fix tests Signed-off-by: Thomas Citharel <tcit@tcit.fr>
This commit is contained in:
65
test/mobilizon_web/resolvers/address_resolver_test.exs
Normal file
65
test/mobilizon_web/resolvers/address_resolver_test.exs
Normal file
@@ -0,0 +1,65 @@
|
||||
defmodule MobilizonWeb.Resolvers.AddressResolverTest do
|
||||
use MobilizonWeb.ConnCase
|
||||
alias MobilizonWeb.AbsintheHelpers
|
||||
import Mobilizon.Factory
|
||||
|
||||
describe "Address Resolver" do
|
||||
test "search/3 search for addresses", %{conn: conn} do
|
||||
address = insert(:address, description: "10 rue Jangot, Lyon")
|
||||
|
||||
query = """
|
||||
{
|
||||
searchAddress(query: "10 Rue Jangot") {
|
||||
description,
|
||||
geom
|
||||
}
|
||||
}
|
||||
"""
|
||||
|
||||
res =
|
||||
conn
|
||||
|> get("/api", AbsintheHelpers.query_skeleton(query, "address"))
|
||||
|
||||
json_response(res, 200)["data"]["searchAddress"]
|
||||
|> Enum.each(fn addr -> assert Map.get(addr, "description") == address.description end)
|
||||
end
|
||||
|
||||
test "geocode/3 reverse geocodes coordinates", %{conn: conn} do
|
||||
address =
|
||||
insert(:address,
|
||||
description: "10 rue Jangot, Lyon"
|
||||
)
|
||||
|
||||
query = """
|
||||
{
|
||||
reverseGeocode(longitude: -23.01, latitude: 30.01) {
|
||||
description,
|
||||
geom
|
||||
}
|
||||
}
|
||||
"""
|
||||
|
||||
res =
|
||||
conn
|
||||
|> get("/api", AbsintheHelpers.query_skeleton(query, "address"))
|
||||
|
||||
assert json_response(res, 200)["data"]["reverseGeocode"] == []
|
||||
|
||||
query = """
|
||||
{
|
||||
reverseGeocode(longitude: 45.75, latitude: 4.85) {
|
||||
description,
|
||||
geom
|
||||
}
|
||||
}
|
||||
"""
|
||||
|
||||
res =
|
||||
conn
|
||||
|> get("/api", AbsintheHelpers.query_skeleton(query, "address"))
|
||||
|
||||
assert json_response(res, 200)["data"]["reverseGeocode"] |> hd |> Map.get("description") ==
|
||||
address.description
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -70,7 +70,7 @@ defmodule Mobilizon.Factory do
|
||||
def address_factory do
|
||||
%Mobilizon.Addresses.Address{
|
||||
description: sequence("MyAddress"),
|
||||
geom: %Geo.Point{coordinates: {30, -90}, srid: 4326},
|
||||
geom: %Geo.Point{coordinates: {45.75, 4.85}, srid: 4326},
|
||||
floor: "Myfloor",
|
||||
addressCountry: "My Country",
|
||||
addressLocality: "My Locality",
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
defmodule Mobilizon.Mobilizon.Service.Geospatial.Mock do
|
||||
defmodule Mobilizon.Service.Geospatial.Mock do
|
||||
@moduledoc """
|
||||
Mock for Geospatial Provider implementations
|
||||
"""
|
||||
@@ -8,8 +8,8 @@ defmodule Mobilizon.Mobilizon.Service.Geospatial.Mock do
|
||||
@behaviour Provider
|
||||
|
||||
@impl Provider
|
||||
def geocode(_lon, _lat, _options \\ []), do: [%Address{}]
|
||||
def geocode(_lon, _lat, _options \\ []), do: []
|
||||
|
||||
@impl Provider
|
||||
def search(_q, _options \\ []), do: [%Address{}]
|
||||
def search(_q, _options \\ []), do: [%Address{description: "10 rue Jangot, Lyon"}]
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user