+
+ test "it works for incoming update activities" do
+ data = File.read!("test/fixtures/mastodon-post-activity.json") |> Poison.decode!
+
+ {:ok, %Activity{data: data, local: false}} = Transmogrifier.handle_incoming(data)
+ update_data = File.read!("test/fixtures/mastodon-update.json") |> Poison.decode!
+ object = update_data["object"]
+ |> Map.put("actor", data["actor"])
+ |> Map.put("id", data["actor"])
+
+ update_data = update_data
+ |> Map.put("actor", data["actor"])
+ |> Map.put("object", object)
+
+ {:ok, %Activity{data: data, local: false}} = Transmogrifier.handle_incoming(update_data)
+
+ user = User.get_cached_by_ap_id(data["actor"])
+ assert user.name == "gargle"
+ assert user.avatar["url"] == [%{"href" => "https://cd.niu.moe/accounts/avatars/000/033/323/original/fd7f8ae0b3ffedc9.jpeg"}]
+ assert user.info["banner"]["url"] == [%{"href" => "https://cd.niu.moe/accounts/headers/000/033/323/original/850b3448fa5fd477.png"}]
+ assert user.bio == "<p>Some bio</p>"
+ end
+
+ test "it works for incoming deletes" do
+ activity = insert(:note_activity)
+ data = File.read!("test/fixtures/mastodon-delete.json")
+ |> Poison.decode!
+
+ object = data["object"]
+ |> Map.put("id", activity.data["object"]["id"])
+
+ data = data
+ |> Map.put("object", object)
+ |> Map.put("actor", activity.data["actor"])
+
+ {:ok, %Activity{data: data, local: false}} = Transmogrifier.handle_incoming(data)
+
+ refute Repo.get(Activity, activity.id)
+ end