Merge branch 'develop' into dtluna/pleroma-refactor/1
[akkoma] / test / web / twitter_api / representers / user_representer_test.exs
index f08e392f93bef60adac93db256e325d8d23a5a81..77f0659483f3ba1e851727d9d5bd3f82c760c0ab 100644 (file)
@@ -3,21 +3,36 @@ defmodule Pleroma.Web.TwitterAPI.Representers.UserRepresenterTest do
 
   alias Pleroma.User
   alias Pleroma.Web.TwitterAPI.Representers.UserRepresenter
+  alias Pleroma.Builders.UserBuilder
+
+  import Pleroma.Factory
 
   setup do
-    user = %User{
-      email: "test@example.org",
-      name: "Test Name",
-      nickname: "testname",
-      password_hash: Comeonin.Pbkdf2.hashpwsalt("test"),
-      bio: "A tester."
-    }
-    user = Repo.insert!(user)
+    user = insert(:user)
     [user: user]
   end
 
-  test "A user", %{user: user} do
+  test "A user with an avatar object", %{user: user} do
+    image = "image"
+    user = %{ user | avatar: %{ "url" => [%{"href" => image}] }}
+    represented = UserRepresenter.to_map(user)
+    assert represented["profile_image_url"] == image
+  end
+
+  test "A user" do
+    note_activity = insert(:note_activity)
+    user = User.get_cached_by_ap_id(note_activity.data["actor"])
+    follower = insert(:user)
+    second_follower = insert(:user)
+
+    User.follow(follower, user)
+    User.follow(second_follower, user)
+    User.follow(user, follower)
+
+    user = Repo.get!(User, user.id)
+
     image = "https://placehold.it/48x48"
+
     represented = %{
       "id" => user.id,
       "name" => user.name,
@@ -25,17 +40,43 @@ defmodule Pleroma.Web.TwitterAPI.Representers.UserRepresenterTest do
       "description" => user.bio,
       # Fake fields
       "favourites_count" => 0,
-      "statuses_count" => 0,
-      "friends_count" => 0,
-      "followers_count" => 0,
+      "statuses_count" => 1,
+      "friends_count" => 1,
+      "followers_count" => 2,
       "profile_image_url" => image,
       "profile_image_url_https" => image,
       "profile_image_url_profile_size" => image,
       "profile_image_url_original" => image,
       "following" => false,
-      "rights" => %{}
+      "rights" => %{},
+      "statusnet_profile_url" => user.ap_id
     }
 
     assert represented == UserRepresenter.to_map(user)
   end
+
+  test "A user for a given other follower", %{user: user} do
+    {:ok, follower} = UserBuilder.insert(%{following: [User.ap_followers(user)]})
+    image = "https://placehold.it/48x48"
+    represented = %{
+      "id" => user.id,
+      "name" => user.name,
+      "screen_name" => user.nickname,
+      "description" => user.bio,
+      # Fake fields
+      "favourites_count" => 0,
+      "statuses_count" => 0,
+      "friends_count" => 0,
+      "followers_count" => 1,
+      "profile_image_url" => image,
+      "profile_image_url_https" => image,
+      "profile_image_url_profile_size" => image,
+      "profile_image_url_original" => image,
+      "following" => true,
+      "rights" => %{},
+      "statusnet_profile_url" => user.ap_id
+    }
+
+    assert represented == UserRepresenter.to_map(user, %{for: follower})
+  end
 end