all developments of milestone 1

This commit is contained in:
setop
2024-04-10 12:36:21 +00:00
parent a78dc261e5
commit 7030d56864
266 changed files with 5391 additions and 2609 deletions

View File

@@ -4,11 +4,11 @@ defmodule Mobilizon.GraphQL.Resolvers.SearchTest do
import Mobilizon.Factory
alias Mobilizon.Actors.Actor
alias Mobilizon.Config
alias Mobilizon.Events.Event
alias Mobilizon.Federation.ActivityPub.Relay
alias Mobilizon.Service.Workers
alias Mobilizon.GraphQL.AbsintheHelpers
alias Mobilizon.Service.Workers
setup %{conn: conn} do
user = insert(:user)
@@ -18,8 +18,8 @@ defmodule Mobilizon.GraphQL.Resolvers.SearchTest do
describe "search events/3" do
@search_events_query """
query SearchEvents($location: String, $radius: Float, $tags: String, $term: String, $beginsOn: DateTime, $endsOn: DateTime, $searchTarget: SearchTarget) {
searchEvents(location: $location, radius: $radius, tags: $tags, term: $term, beginsOn: $beginsOn, endsOn: $endsOn, searchTarget: $searchTarget) {
query SearchEvents($location: String, $radius: Float, $tags: String, $term: String, $beginsOn: DateTime, $endsOn: DateTime, $longevents:Boolean, $searchTarget: SearchTarget) {
searchEvents(location: $location, radius: $radius, tags: $tags, term: $term, beginsOn: $beginsOn, endsOn: $endsOn, longevents: $longevents, searchTarget: $searchTarget) {
total,
elements {
id
@@ -149,6 +149,7 @@ defmodule Mobilizon.GraphQL.Resolvers.SearchTest do
end
test "finds events by begins_on and ends_on", %{conn: conn} do
Config.put([:instance, :duration_of_long_event], 0)
now = DateTime.utc_now()
# TODO
@@ -183,6 +184,214 @@ defmodule Mobilizon.GraphQL.Resolvers.SearchTest do
event.uuid
end
test "finds 4 events : long event disabled", %{conn: conn} do
Config.put([:instance, :duration_of_long_event], 0)
now = DateTime.utc_now()
event1 =
insert(:event,
title: "Cours 10j",
begins_on: DateTime.add(now, 3600 * 24 * 5),
ends_on: DateTime.add(now, 3600 * 24 * 14)
)
event2 =
insert(:event,
title: "Long 29j",
begins_on: DateTime.add(now, 3600 * 24 * 5),
ends_on: DateTime.add(now, 3600 * 24 * 33)
)
event3 =
insert(:event,
title: "Long 31j",
begins_on: DateTime.add(now, 3600 * 24 * 5),
ends_on: DateTime.add(now, 3600 * 24 * 35)
)
event4 =
insert(:event,
title: "Long 40j",
begins_on: DateTime.add(now, 3600 * 24 * 5),
ends_on: DateTime.add(now, 3600 * 24 * 44)
)
Workers.BuildSearch.insert_search_event(event1)
Workers.BuildSearch.insert_search_event(event2)
Workers.BuildSearch.insert_search_event(event3)
Workers.BuildSearch.insert_search_event(event4)
res =
AbsintheHelpers.graphql_query(conn,
query: @search_events_query,
variables: %{longevents: false}
)
assert res["errors"] == nil
assert res["data"]["searchEvents"]["total"] == 4
assert res["data"]["searchEvents"]["elements"]
|> Enum.map(& &1["uuid"]) == [
event1.uuid,
event2.uuid,
event3.uuid,
event4.uuid
]
res =
AbsintheHelpers.graphql_query(conn,
query: @search_events_query,
variables: %{longevents: true}
)
assert res["errors"] == nil
assert res["data"]["searchEvents"]["total"] == 4
assert res["data"]["searchEvents"]["elements"]
|> Enum.map(& &1["uuid"]) == [
event1.uuid,
event2.uuid,
event3.uuid,
event4.uuid
]
end
test "finds 4 events : long event enabled 30 days", %{conn: conn} do
Config.put([:instance, :duration_of_long_event], 30)
now = DateTime.utc_now()
event1 =
insert(:event,
title: "Cours 10j",
begins_on: DateTime.add(now, 3600 * 24 * 5),
ends_on: DateTime.add(now, 3600 * 24 * 15)
)
event2 =
insert(:event,
title: "Long 30j",
begins_on: DateTime.add(now, 3600 * 24 * 5),
ends_on: DateTime.add(now, 3600 * 24 * 35)
)
event3 =
insert(:event,
title: "Long 31j",
begins_on: DateTime.add(now, 3600 * 24 * 5),
ends_on: DateTime.add(now, 3600 * 24 * 36)
)
event4 =
insert(:event,
title: "Long 40j",
begins_on: DateTime.add(now, 3600 * 24 * 5),
ends_on: DateTime.add(now, 3600 * 24 * 45)
)
Workers.BuildSearch.insert_search_event(event1)
Workers.BuildSearch.insert_search_event(event2)
Workers.BuildSearch.insert_search_event(event3)
Workers.BuildSearch.insert_search_event(event4)
res =
AbsintheHelpers.graphql_query(conn,
query: @search_events_query,
variables: %{longevents: false}
)
assert res["errors"] == nil
assert res["data"]["searchEvents"]["total"] == 2
assert res["data"]["searchEvents"]["elements"]
|> Enum.map(& &1["uuid"]) == [
event1.uuid,
event2.uuid
]
res =
AbsintheHelpers.graphql_query(conn,
query: @search_events_query,
variables: %{longevents: true}
)
assert res["errors"] == nil
assert res["data"]["searchEvents"]["total"] == 2
assert res["data"]["searchEvents"]["elements"]
|> Enum.map(& &1["uuid"]) == [
event3.uuid,
event4.uuid
]
end
test "finds 4 events : long event enabled 15 days", %{conn: conn} do
Config.put([:instance, :duration_of_long_event], 15)
now = DateTime.utc_now()
event1 =
insert(:event,
title: "Cours 10j",
begins_on: DateTime.add(now, 3600 * 24 * 5),
ends_on: DateTime.add(now, 3600 * 24 * 15)
)
event2 =
insert(:event,
title: "Long 30j",
begins_on: DateTime.add(now, 3600 * 24 * 5),
ends_on: DateTime.add(now, 3600 * 24 * 35)
)
event3 =
insert(:event,
title: "Long 31j",
begins_on: DateTime.add(now, 3600 * 24 * 5),
ends_on: DateTime.add(now, 3600 * 24 * 36)
)
event4 =
insert(:event,
title: "Long 40j",
begins_on: DateTime.add(now, 3600 * 24 * 5),
ends_on: DateTime.add(now, 3600 * 24 * 45)
)
Workers.BuildSearch.insert_search_event(event1)
Workers.BuildSearch.insert_search_event(event2)
Workers.BuildSearch.insert_search_event(event3)
Workers.BuildSearch.insert_search_event(event4)
res =
AbsintheHelpers.graphql_query(conn,
query: @search_events_query,
variables: %{longevents: false}
)
assert res["errors"] == nil
assert res["data"]["searchEvents"]["total"] == 1
assert res["data"]["searchEvents"]["elements"]
|> Enum.map(& &1["uuid"]) == [
event1.uuid
]
res =
AbsintheHelpers.graphql_query(conn,
query: @search_events_query,
variables: %{longevents: true}
)
assert res["errors"] == nil
assert res["data"]["searchEvents"]["total"] == 3
assert res["data"]["searchEvents"]["elements"]
|> Enum.map(& &1["uuid"]) == [
event2.uuid,
event3.uuid,
event4.uuid
]
end
test "finds events with multiple criteria", %{conn: conn} do
{lon, lat} = {45.75, 4.85}
point = %Geo.Point{coordinates: {lon, lat}, srid: 4326}