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:
Thomas Citharel
2019-03-14 18:31:14 +01:00
parent 98b7618338
commit 6ca0b5f915
8 changed files with 192 additions and 10 deletions

View 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

View File

@@ -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",

View File

@@ -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