X-Git-Url: http://git.squeep.com/?a=blobdiff_plain;f=test%2Fuser_test.exs;h=097d7d98e9740a727071232f6c22405fc27f02d4;hb=fc85c9f086cd5dd73effa28cb68fb245a554fa98;hp=b87d3186266c94d19e636c05de67e8dd94e32f21;hpb=118c572006dd96e6718035e5859aa339aa254476;p=akkoma diff --git a/test/user_test.exs b/test/user_test.exs index b87d31862..097d7d98e 100644 --- a/test/user_test.exs +++ b/test/user_test.exs @@ -37,6 +37,9 @@ defmodule Pleroma.UserTest do user = Repo.get(User, user.id) + followed = User.get_by_ap_id(followed.ap_id) + assert followed.info["follower_count"] == 1 + assert user.following == [User.ap_followers(followed)] end @@ -103,6 +106,7 @@ defmodule Pleroma.UserTest do assert is_binary(changeset.changes[:password_hash]) assert changeset.changes[:ap_id] == User.ap_id(%User{nickname: @full_user_data.nickname}) assert changeset.changes[:following] == [User.ap_followers(%User{nickname: @full_user_data.nickname})] + assert changeset.changes.follower_address == "#{changeset.changes.ap_id}/followers" end end @@ -114,6 +118,13 @@ defmodule Pleroma.UserTest do assert user == fetched_user end + test "gets an existing user, case insensitive" do + user = insert(:user, nickname: "nick") + fetched_user = User.get_or_fetch_by_nickname("NICK") + + assert user == fetched_user + end + test "fetches an external user via ostatus if no user exists" do fetched_user = User.get_or_fetch_by_nickname("shp@social.heldscal.la") assert fetched_user.nickname == "shp@social.heldscal.la" @@ -155,6 +166,12 @@ defmodule Pleroma.UserTest do assert cs.valid? end + test "it sets the follower_adress" do + cs = User.remote_user_creation(@valid_remote) + # remote users get a fake local follower address + assert cs.changes.follower_address == User.ap_followers(%User{ nickname: @valid_remote[:nickname] }) + end + test "it enforces the fqn format for nicknames" do cs = User.remote_user_creation(%{@valid_remote | nickname: "bla"}) assert cs.changes.local == false @@ -171,7 +188,7 @@ defmodule Pleroma.UserTest do end test "it restricts some sizes" do - [bio: 1000, name: 100] + [bio: 5000, name: 100] |> Enum.each(fn ({field, size}) -> string = String.pad_leading(".", size) cs = User.remote_user_creation(Map.put(@valid_remote, field, string)) @@ -183,5 +200,64 @@ defmodule Pleroma.UserTest do end) end end + + describe "followers and friends" do + test "gets all followers for a given user" do + user = insert(:user) + follower_one = insert(:user) + follower_two = insert(:user) + not_follower = insert(:user) + + {:ok, follower_one} = User.follow(follower_one, user) + {:ok, follower_two} = User.follow(follower_two, user) + + {:ok, res} = User.get_followers(user) + + assert res == [follower_one, follower_two] + end + + test "gets all friends (followed users) for a given user" do + user = insert(:user) + followed_one = insert(:user) + followed_two = insert(:user) + not_followed = insert(:user) + + {:ok, user} = User.follow(user, followed_one) + {:ok, user} = User.follow(user, followed_two) + + {:ok, res} = User.get_friends(user) + + followed_one = User.get_by_ap_id(followed_one.ap_id) + followed_two = User.get_by_ap_id(followed_two.ap_id) + assert res == [followed_one, followed_two] + end + end + + describe "updating note and follower count" do + test "it sets the info->note_count property" do + note = insert(:note) + + user = User.get_by_ap_id(note.data["actor"]) + + assert user.info["note_count"] == nil + + {:ok, user} = User.update_note_count(user) + + assert user.info["note_count"] == 1 + end + + test "it sets the info->follower_count property" do + user = insert(:user) + follower = insert(:user) + + User.follow(follower, user) + + assert user.info["follower_count"] == nil + + {:ok, user} = User.update_follower_count(user) + + assert user.info["follower_count"] == 1 + end + end end