aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlambda <pleromagit@rogerbraun.net>2018-12-17 19:38:24 +0000
committerlambda <pleromagit@rogerbraun.net>2018-12-17 19:38:24 +0000
commitc6d5f189d9847b0c23d8150f41c05d87402680eb (patch)
tree9b1e162be62e33ca5db733676a63af783e470efd
parent98c31deaa960392184da4f34ddc9e3eecbce3f4c (diff)
parent0f67c1d487e65c851bafbf53e9ca744db9d84def (diff)
downloadpleroma-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.yml1
-rw-r--r--lib/pleroma/user.ex5
-rw-r--r--test/user_test.exs17
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()