Implement search engine & service in backend

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
This commit is contained in:
Thomas Citharel
2019-10-22 10:25:28 +02:00
parent 59caac86a1
commit b5f9518faf
10 changed files with 226 additions and 45 deletions

View File

@@ -46,13 +46,13 @@ defmodule MobilizonWeb.API.SearchTest do
test "search events" do
with_mock Events,
build_events_by_name: fn "toto", 1, 10 ->
build_events_for_search: fn "toto", 1, 10 ->
%Page{total: 1, elements: [%Event{title: "super toto event"}]}
end do
assert {:ok, %{total: 1, elements: [%Event{title: "super toto event"}]}} =
Search.search_events("toto", 1, 10)
assert_called(Events.build_events_by_name("toto", 1, 10))
assert_called(Events.build_events_for_search("toto", 1, 10))
end
end
end

View File

@@ -2,6 +2,7 @@ defmodule MobilizonWeb.Resolvers.SearchResolverTest do
use MobilizonWeb.ConnCase
alias MobilizonWeb.AbsintheHelpers
import Mobilizon.Factory
alias Mobilizon.Service.Search
setup %{conn: conn} do
user = insert(:user)
@@ -16,6 +17,7 @@ defmodule MobilizonWeb.Resolvers.SearchResolverTest do
insert(:actor, user: user, preferred_username: "test_person")
insert(:actor, type: :Group, preferred_username: "test_group")
event = insert(:event, title: "test_event")
Search.insert_search_event(event)
query = """
{
@@ -48,7 +50,8 @@ defmodule MobilizonWeb.Resolvers.SearchResolverTest do
} do
actor = insert(:actor, user: user, preferred_username: "test_person")
insert(:actor, type: :Group, preferred_username: "test_group")
insert(:event, title: "test_event")
event = insert(:event, title: "test_event")
Search.insert_search_event(event)
query = """
{
@@ -80,7 +83,8 @@ defmodule MobilizonWeb.Resolvers.SearchResolverTest do
} do
insert(:actor, user: user, preferred_username: "test_person")
group = insert(:actor, type: :Group, preferred_username: "test_group")
insert(:event, title: "test_event")
event = insert(:event, title: "test_event")
Search.insert_search_event(event)
query = """
{
@@ -111,9 +115,12 @@ defmodule MobilizonWeb.Resolvers.SearchResolverTest do
user: user
} do
insert(:actor, user: user, preferred_username: "person", name: "I like pineapples")
insert(:event, title: "Pineapple fashion week")
insert(:event, title: "I love pineAPPLE")
insert(:event, title: "Hello")
event1 = insert(:event, title: "Pineapple fashion week")
event2 = insert(:event, title: "I love pineAPPLE")
event3 = insert(:event, title: "Hello")
Search.insert_search_event(event1)
Search.insert_search_event(event2)
Search.insert_search_event(event3)
query = """
{
@@ -140,8 +147,8 @@ defmodule MobilizonWeb.Resolvers.SearchResolverTest do
assert json_response(res, 200)["data"]["search_events"]["elements"]
|> Enum.map(& &1["title"]) == [
"I love pineAPPLE",
"Pineapple fashion week"
"Pineapple fashion week",
"I love pineAPPLE"
]
end
@@ -151,9 +158,12 @@ defmodule MobilizonWeb.Resolvers.SearchResolverTest do
} do
actor = insert(:actor, user: user, preferred_username: "person", name: "I like pineapples")
insert(:actor, preferred_username: "group", type: :Group, name: "pineapple group")
insert(:event, title: "Pineapple fashion week")
insert(:event, title: "I love pineAPPLE")
insert(:event, title: "Hello")
event1 = insert(:event, title: "Pineapple fashion week")
event2 = insert(:event, title: "I love pineAPPLE")
event3 = insert(:event, title: "Hello")
Search.insert_search_event(event1)
Search.insert_search_event(event2)
Search.insert_search_event(event3)
query = """
{
@@ -188,6 +198,7 @@ defmodule MobilizonWeb.Resolvers.SearchResolverTest do
insert(:actor, user: user, preferred_username: "person", name: "Torréfaction du Kafé")
insert(:actor, type: :Group, preferred_username: "group", name: "Kafé group")
event = insert(:event, title: "Tour du monde des Kafés")
Search.insert_search_event(event)
# Elaborate query
query = """
@@ -218,7 +229,8 @@ defmodule MobilizonWeb.Resolvers.SearchResolverTest do
} do
insert(:actor, user: user, preferred_username: "person", name: "Torréfaction du Kafé")
group = insert(:actor, type: :Group, preferred_username: "group", name: "Kafé group")
insert(:event, title: "Tour du monde des Kafés")
event = insert(:event, title: "Tour du monde des Kafés")
Search.insert_search_event(event)
# Elaborate query
query = """