Rebased from #103 Co-authored-by: Tusooa Zhu <tusooa@kazv.moe> Co-authored-by: FloatingGhost <hannah@coffee-and-dreams.uk> Reviewed-on: https://akkoma.dev/AkkomaGang/akkoma/pulls/202
		
			
				
	
	
		
			76 lines
		
	
	
	
		
			2.5 KiB
		
	
	
	
		
			Elixir
		
	
	
	
	
	
			
		
		
	
	
			76 lines
		
	
	
	
		
			2.5 KiB
		
	
	
	
		
			Elixir
		
	
	
	
	
	
# Pleroma: A lightweight social networking server
 | 
						|
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
 | 
						|
# SPDX-License-Identifier: AGPL-3.0-only
 | 
						|
 | 
						|
defmodule Pleroma.Object.UpdaterTest do
 | 
						|
  use Pleroma.DataCase
 | 
						|
  use Oban.Testing, repo: Pleroma.Repo
 | 
						|
 | 
						|
  import Pleroma.Factory
 | 
						|
 | 
						|
  alias Pleroma.Object.Updater
 | 
						|
 | 
						|
  describe "make_update_object_data/3" do
 | 
						|
    setup do
 | 
						|
      note = insert(:note)
 | 
						|
      %{original_data: note.data}
 | 
						|
    end
 | 
						|
 | 
						|
    test "it makes an updated field", %{original_data: original_data} do
 | 
						|
      new_data = Map.put(original_data, "content", "new content")
 | 
						|
 | 
						|
      date = Pleroma.Web.ActivityPub.Utils.make_date()
 | 
						|
      update_object_data = Updater.make_update_object_data(original_data, new_data, date)
 | 
						|
      assert %{"updated" => ^date} = update_object_data
 | 
						|
    end
 | 
						|
 | 
						|
    test "it creates formerRepresentations", %{original_data: original_data} do
 | 
						|
      new_data = Map.put(original_data, "content", "new content")
 | 
						|
 | 
						|
      date = Pleroma.Web.ActivityPub.Utils.make_date()
 | 
						|
      update_object_data = Updater.make_update_object_data(original_data, new_data, date)
 | 
						|
 | 
						|
      history_item = original_data |> Map.drop(["id", "formerRepresentations"])
 | 
						|
 | 
						|
      assert %{
 | 
						|
               "formerRepresentations" => %{
 | 
						|
                 "totalItems" => 1,
 | 
						|
                 "orderedItems" => [^history_item]
 | 
						|
               }
 | 
						|
             } = update_object_data
 | 
						|
    end
 | 
						|
  end
 | 
						|
 | 
						|
  describe "make_new_object_data_from_update_object/2" do
 | 
						|
    test "it reuses formerRepresentations if it exists" do
 | 
						|
      %{data: original_data} = insert(:note)
 | 
						|
 | 
						|
      new_data =
 | 
						|
        original_data
 | 
						|
        |> Map.put("content", "edited")
 | 
						|
 | 
						|
      date = Pleroma.Web.ActivityPub.Utils.make_date()
 | 
						|
      update_object_data = Updater.make_update_object_data(original_data, new_data, date)
 | 
						|
 | 
						|
      history = update_object_data["formerRepresentations"]["orderedItems"]
 | 
						|
 | 
						|
      update_object_data =
 | 
						|
        update_object_data
 | 
						|
        |> put_in(
 | 
						|
          ["formerRepresentations", "orderedItems"],
 | 
						|
          history ++ [Map.put(original_data, "summary", "additional summary")]
 | 
						|
        )
 | 
						|
        |> put_in(["formerRepresentations", "totalItems"], length(history) + 1)
 | 
						|
 | 
						|
      %{
 | 
						|
        updated_data: updated_data,
 | 
						|
        updated: updated,
 | 
						|
        used_history_in_new_object?: used_history_in_new_object?
 | 
						|
      } = Updater.make_new_object_data_from_update_object(original_data, update_object_data)
 | 
						|
 | 
						|
      assert updated
 | 
						|
      assert used_history_in_new_object?
 | 
						|
      assert updated_data["formerRepresentations"] == update_object_data["formerRepresentations"]
 | 
						|
    end
 | 
						|
  end
 | 
						|
end
 |