Correctly handle event update
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
This commit is contained in:
@@ -9,6 +9,7 @@ defmodule Mobilizon.Service.ActivityPub.ActivityPubTest do
|
||||
import Mobilizon.Factory
|
||||
|
||||
alias Mobilizon.Events
|
||||
alias Mobilizon.Events.Event
|
||||
alias Mobilizon.Actors.Actor
|
||||
alias Mobilizon.Actors
|
||||
alias Mobilizon.Service.HTTPSignatures.Signature
|
||||
@@ -137,11 +138,14 @@ defmodule Mobilizon.Service.ActivityPub.ActivityPubTest do
|
||||
end
|
||||
|
||||
describe "update" do
|
||||
@updated_actor_summary "This is an updated actor"
|
||||
|
||||
test "it creates an update activity with the new actor data" do
|
||||
actor = insert(:actor)
|
||||
actor_data = MobilizonWeb.ActivityPub.ActorView.render("actor.json", %{actor: actor})
|
||||
actor_data = Map.put(actor_data, "summary", @updated_actor_summary)
|
||||
|
||||
{:ok, update, _} =
|
||||
{:ok, update, updated_actor} =
|
||||
ActivityPub.update(%{
|
||||
actor: actor_data["url"],
|
||||
to: [actor.url <> "/followers"],
|
||||
@@ -153,6 +157,42 @@ defmodule Mobilizon.Service.ActivityPub.ActivityPubTest do
|
||||
assert update.data["to"] == [actor.url <> "/followers"]
|
||||
assert update.data["object"]["id"] == actor_data["id"]
|
||||
assert update.data["object"]["type"] == actor_data["type"]
|
||||
assert update.data["object"]["summary"] == @updated_actor_summary
|
||||
|
||||
refute updated_actor.summary == actor.summary
|
||||
|
||||
{:ok, %Actor{} = database_actor} = Mobilizon.Actors.get_actor_by_url(actor.url)
|
||||
assert database_actor.summary == @updated_actor_summary
|
||||
assert database_actor.preferred_username == actor.preferred_username
|
||||
end
|
||||
|
||||
@updated_start_time DateTime.utc_now() |> DateTime.truncate(:second)
|
||||
|
||||
test "it creates an update activity with the new event data" do
|
||||
actor = insert(:actor)
|
||||
event = insert(:event, organizer_actor: actor)
|
||||
event_data = Mobilizon.Service.ActivityPub.Converters.Event.model_to_as(event)
|
||||
event_data = Map.put(event_data, "startTime", @updated_start_time)
|
||||
|
||||
{:ok, update, updated_event} =
|
||||
ActivityPub.update(%{
|
||||
actor: actor.url,
|
||||
to: [actor.url <> "/followers"],
|
||||
cc: [],
|
||||
object: event_data
|
||||
})
|
||||
|
||||
assert update.data["actor"] == actor.url
|
||||
assert update.data["to"] == [actor.url <> "/followers"]
|
||||
assert update.data["object"]["id"] == event_data["id"]
|
||||
assert update.data["object"]["type"] == event_data["type"]
|
||||
assert update.data["object"]["startTime"] == @updated_start_time
|
||||
|
||||
refute updated_event.begins_on == event.begins_on
|
||||
|
||||
%Event{} = database_event = Mobilizon.Events.get_event_by_url(event.url)
|
||||
assert database_event.begins_on == @updated_start_time
|
||||
assert database_event.title == event.title
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user