fix flaky test_user_relationship_test.exs:81
authorilja <git@ilja.space>
Sun, 23 Oct 2022 11:31:01 +0000 (13:31 +0200)
committerilja <git@ilja.space>
Sun, 23 Oct 2022 11:31:01 +0000 (13:31 +0200)
The problem was double. On the one hand, the function didn't actually return what was in the DB.
On the other hand the test was flaky because it used NaiveDateTime.utc_now() so test could fail or pass depending on a difference of microseconds.

Both are fixed now.

lib/pleroma/user_relationship.ex
test/pleroma/user_relationship_test.exs

index a467e9b65ad23c6366286387028341af4a59bd53..2f77697d4db18b4e1b6ae9b78177f7286e4fbe6f 100644 (file)
@@ -67,8 +67,9 @@ defmodule Pleroma.UserRelationship do
       target_id: target.id
     })
     |> Repo.insert(
-      on_conflict: {:replace_all_except, [:id]},
-      conflict_target: [:source_id, :relationship_type, :target_id]
+      on_conflict: {:replace_all_except, [:id, :inserted_at]},
+      conflict_target: [:source_id, :relationship_type, :target_id],
+      returning: true
     )
   end
 
index b2b07460748d69dd8f017604721eb1fea71e3899..b3a0dbe37ef8f99be9879d90eda56bba3aa7886a 100644 (file)
@@ -5,8 +5,9 @@
 defmodule Pleroma.UserRelationshipTest do
   alias Pleroma.UserRelationship
 
-  use Pleroma.DataCase, async: true
+  use Pleroma.DataCase, async: false
 
+  import Mock
   import Pleroma.Factory
 
   describe "*_exists?/2" do
@@ -79,7 +80,12 @@ defmodule Pleroma.UserRelationshipTest do
     end
 
     test "if record already exists, returns it", %{users: [user1, user2]} do
-      user_block = UserRelationship.create_block(user1, user2)
+      user_block =
+        with_mock NaiveDateTime, [:passthrough], utc_now: fn -> ~N[2017-03-17 17:09:58] end do
+          {:ok, %{inserted_at: ~N[2017-03-17 17:09:58]}} =
+            UserRelationship.create_block(user1, user2)
+        end
+
       assert user_block == UserRelationship.create_block(user1, user2)
     end
   end