Add ability to search on Group, Person or Event

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
This commit is contained in:
Chocobozzz
2019-04-12 15:04:32 +02:00
committed by Thomas Citharel
parent 20a4f7244c
commit d66bbc5414
10 changed files with 385 additions and 173 deletions

View File

@@ -184,19 +184,26 @@ defmodule Mobilizon.ActorsTest do
assert MapSet.new([actor_found_id, actor2_found_id]) == MapSet.new([actor.id, actor2.id])
end
test "test find_actors_by_username_or_name/1 returns actors with similar usernames", %{
actor: %Actor{id: actor_id}
} do
test "test find_and_count_actors_by_username_or_name/4 returns actors with similar usernames",
%{
actor: %Actor{id: actor_id}
} do
use_cassette "actors/remote_actor_mastodon_tcit" do
with {:ok, %Actor{id: actor2_id}} <- Actors.get_or_fetch_by_url(@remote_account_url) do
actors_ids = Actors.find_actors_by_username_or_name("tcit") |> Enum.map(& &1.id)
%{total: 2, elements: actors} =
Actors.find_and_count_actors_by_username_or_name("tcit", [:Person])
actors_ids = actors |> Enum.map(& &1.id)
assert MapSet.new(actors_ids) == MapSet.new([actor2_id, actor_id])
end
end
end
test "test find_actors_by_username_or_name/1 returns actors with similar names" do
actors = Actors.find_actors_by_username_or_name("ohno")
test "test find_and_count_actors_by_username_or_name/4 returns actors with similar names" do
%{total: 0, elements: actors} =
Actors.find_and_count_actors_by_username_or_name("ohno", [:Person])
assert actors == []
end

View File

@@ -54,18 +54,22 @@ defmodule Mobilizon.EventsTest do
assert Events.get_event_full!(event.id).participants == []
end
test "find_events_by_name/1 returns events for a given name", %{
test "find_and_count_events_by_name/1 returns events for a given name", %{
event: %Event{title: title} = event
} do
assert title == hd(Events.find_events_by_name(event.title)).title
assert title == hd(Events.find_and_count_events_by_name(event.title).elements).title
%Event{title: title2} = event2 = insert(:event, title: "Special event")
assert event2.title == Events.find_events_by_name("Special") |> hd() |> Map.get(:title)
%Event{} = event2 = insert(:event, title: "Special event")
assert event2.title == Events.find_events_by_name(" Special ") |> hd() |> Map.get(:title)
assert event2.title ==
Events.find_and_count_events_by_name("Special").elements |> hd() |> Map.get(:title)
assert title == Events.find_events_by_name("") |> hd() |> Map.get(:title)
assert title2 == Events.find_events_by_name("") |> tl |> hd() |> Map.get(:title)
assert event2.title ==
Events.find_and_count_events_by_name(" Special ").elements
|> hd()
|> Map.get(:title)
assert %{elements: [], total: 0} == Events.find_and_count_events_by_name("")
end
test "find_close_events/3 returns events in the area" do