end
def test_unique_display_name
- existing_user = create(:user)
- new_user = build(:user, :display_name => existing_user.display_name)
- assert_not new_user.save
- assert_includes new_user.errors[:display_name], "has already been taken"
+ create(:user, :display_name => "H\u{e9}nryIV")
+
+ %W[H\u{e9}nryIV he\u{301}nryiv H\u{c9}nry\u2163 he\u{301}nry\u2173].each do |name|
+ new_user = build(:user, :display_name => name)
+ assert_not new_user.save
+ assert_includes new_user.errors[:display_name], "has already been taken"
+ end
end
def test_email_valid
assert_not_predicate user, :valid?, "should not allow nil value"
end
+ def test_display_name_width
+ user = build(:user)
+ user.display_name = "123"
+ assert_predicate user, :valid?, "should allow 3 column name name"
+ user.display_name = "12"
+ assert_not_predicate user, :valid?, "should not allow 2 column name"
+ user.display_name = "1\u{200B}2"
+ assert_not_predicate user, :valid?, "should not allow 2 column name"
+ user.display_name = "\u{200B}\u{200B}\u{200B}"
+ assert_not_predicate user, :valid?, "should not allow 0 column name"
+ end
+
def test_display_name_valid
# Due to sanitisation in the view some of these that you might not
# expect are allowed
end
end
+ def test_display_name_user_id_new
+ existing_user = create(:user)
+ user = build(:user)
+
+ user.display_name = "user_#{existing_user.id}"
+ assert_not_predicate user, :valid?, "user_<id> name is valid for existing user id when it shouldn't be"
+
+ user.display_name = "user_#{existing_user.id + 1}"
+ assert_not_predicate user, :valid?, "user_<id> name is valid for new user id when it shouldn't be"
+ end
+
+ def test_display_name_user_id_rename
+ existing_user = create(:user)
+ user = create(:user)
+
+ user.display_name = "user_#{existing_user.id}"
+ assert_not_predicate user, :valid?, "user_<id> name is valid for existing user id when it shouldn't be"
+
+ user.display_name = "user_#{user.id}"
+ assert_predicate user, :valid?, "user_<id> name is invalid for own id, when it should be"
+ end
+
+ def test_display_name_user_id_unchanged_is_valid
+ user = build(:user, :display_name => "user_0")
+ user.save(:validate => false)
+ user.reload
+
+ assert_predicate user, :valid?, "user_0 display_name is invalid but it hasn't been changed"
+ end
+
def test_friends_with
alice = create(:user, :active)
bob = create(:user, :active)
charlie = create(:user, :active)
- create(:friendship, :befriender => alice, :befriendee => bob)
+ create(:follow, :follower => alice, :following => bob)
assert alice.friends_with?(bob)
assert_not alice.friends_with?(charlie)
def test_friends
norm = create(:user, :active)
sec = create(:user, :active)
- create(:friendship, :befriender => norm, :befriendee => sec)
+ create(:follow, :follower => norm, :following => sec)
- assert_equal [sec], norm.friends
- assert_equal 1, norm.friends.size
+ assert_equal [sec], norm.followings
+ assert_equal 1, norm.followings.size
- assert_empty sec.friends
- assert_equal 0, sec.friends.size
+ assert_empty sec.followings
+ assert_equal 0, sec.followings.size
end
def test_user_preferred_editor
assert_not_predicate user, :active?
end
- def test_soft_destroy_revokes_oauth1_tokens
- user = create(:user)
- access_token = create(:access_token, :user => user)
- assert_equal 1, user.oauth_tokens.authorized.count
-
- user.soft_destroy
-
- assert_equal 0, user.oauth_tokens.authorized.count
- access_token.reload
- assert_predicate access_token, :invalidated?
- end
-
def test_soft_destroy_revokes_oauth2_tokens
user = create(:user)
oauth_access_token = create(:oauth_access_token, :resource_owner_id => user.id)