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

@@ -7,6 +7,7 @@ defmodule Mobilizon.EventsTest do
alias Mobilizon.Events
alias Mobilizon.Events.{Comment, Event, Participant, Session, Tag, TagRelation, Track}
alias Mobilizon.Storage.Page
alias Mobilizon.Service.Search
@event_valid_attrs %{
begins_on: "2010-04-17 14:00:00Z",
@@ -22,6 +23,7 @@ defmodule Mobilizon.EventsTest do
setup do
actor = insert(:actor)
event = insert(:event, organizer_actor: actor, visibility: :public)
Search.insert_search_event(event)
{:ok, actor: actor, event: event}
end
@@ -55,22 +57,31 @@ defmodule Mobilizon.EventsTest do
assert Events.get_event_with_preload!(event.id).participants == []
end
test "build_events_by_name/1 returns events for a given name", %{
test "build_events_for_search/1 returns events for a given name", %{
event: %Event{title: title} = event
} do
assert title == hd(Events.build_events_by_name(event.title).elements).title
assert title == hd(Events.build_events_for_search(event.title).elements).title
%Event{} = event2 = insert(:event, title: "Special event")
Search.insert_search_event(event2)
assert event2.title ==
Events.build_events_by_name("Special").elements |> hd() |> Map.get(:title)
Events.build_events_for_search("Special").elements |> hd() |> Map.get(:title)
assert event2.title ==
Events.build_events_by_name(" Special ").elements
Events.build_events_for_search(" Spécïal ").elements
|> hd()
|> Map.get(:title)
assert %Page{elements: [], total: 0} == Events.build_events_by_name("")
tag1 = insert(:tag, title: "coucou")
tag2 = insert(:tag, title: "hola")
%Event{} = event3 = insert(:event, title: "Nothing like it", tags: [tag1, tag2])
Search.insert_search_event(event3)
assert event3.title ==
Events.build_events_for_search("hola").elements |> hd() |> Map.get(:title)
assert %Page{elements: [], total: 0} == Events.build_events_for_search("")
end
test "find_close_events/3 returns events in the area" do