diff options
author | lambda <pleromagit@rogerbraun.net> | 2018-12-17 19:38:24 +0000 |
---|---|---|
committer | lambda <pleromagit@rogerbraun.net> | 2018-12-17 19:38:24 +0000 |
commit | c6d5f189d9847b0c23d8150f41c05d87402680eb (patch) | |
tree | 9b1e162be62e33ca5db733676a63af783e470efd | |
parent | 98c31deaa960392184da4f34ddc9e3eecbce3f4c (diff) | |
parent | 0f67c1d487e65c851bafbf53e9ca744db9d84def (diff) | |
download | pleroma-c6d5f189d9847b0c23d8150f41c05d87402680eb.tar.gz |
Merge branch 'fix-tags' into 'develop'
Fix tagging problems for existing instances.
See merge request pleroma/pleroma!562
-rw-r--r-- | .gitlab-ci.yml | 1 | ||||
-rw-r--r-- | lib/pleroma/user.ex | 5 | ||||
-rw-r--r-- | test/user_test.exs | 17 |
3 files changed, 20 insertions, 3 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 7c240d9f1..8ea652086 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -13,7 +13,6 @@ cache: key: ${CI_COMMIT_REF_SLUG} paths: - deps - - _build stages: - lint - test diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index 49928bc13..3ad1ab87a 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -838,7 +838,7 @@ defmodule Pleroma.User do do: tag(User.get_by_nickname(nickname), tags) def tag(%User{} = user, tags), - do: update_tags(user, Enum.uniq(user.tags ++ normalize_tags(tags))) + do: update_tags(user, Enum.uniq((user.tags || []) ++ normalize_tags(tags))) def untag(user_identifiers, tags) when is_list(user_identifiers) do Repo.transaction(fn -> @@ -849,7 +849,8 @@ defmodule Pleroma.User do def untag(nickname, tags) when is_binary(nickname), do: untag(User.get_by_nickname(nickname), tags) - def untag(%User{} = user, tags), do: update_tags(user, user.tags -- normalize_tags(tags)) + def untag(%User{} = user, tags), + do: update_tags(user, (user.tags || []) -- normalize_tags(tags)) defp update_tags(%User{} = user, new_tags) do {:ok, updated_user} = diff --git a/test/user_test.exs b/test/user_test.exs index 9baa5ef24..1e73770df 100644 --- a/test/user_test.exs +++ b/test/user_test.exs @@ -11,6 +11,23 @@ defmodule Pleroma.UserTest do :ok end + describe "when tags are nil" do + test "tagging a user" do + user = insert(:user, %{tags: nil}) + user = User.tag(user, ["cool", "dude"]) + + assert "cool" in user.tags + assert "dude" in user.tags + end + + test "untagging a user" do + user = insert(:user, %{tags: nil}) + user = User.untag(user, ["cool", "dude"]) + + assert user.tags == [] + end + end + test "ap_id returns the activity pub id for the user" do user = UserBuilder.build() |