forked from e621ng/e621ng
[Users] Fix switching names not updating the cache correctly
Regressed in7df64409d6
update_cache was not updated to normalize the username
This commit is contained in:
parent
12e996dc08
commit
66c66af58c
@ -197,7 +197,7 @@ class User < ApplicationRecord
|
||||
|
||||
def update_cache
|
||||
Cache.write("uin:#{id}", name, expires_in: 4.hours)
|
||||
Cache.write("uni:#{name}", id, expires_in: 4.hours)
|
||||
Cache.write("uni:#{User.normalize_name(name)}", id, expires_in: 4.hours)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
require 'test_helper'
|
||||
require "test_helper"
|
||||
|
||||
class UserNameChangeRequestTest < ActiveSupport::TestCase
|
||||
context "in all cases" do
|
||||
@ -11,16 +11,16 @@ class UserNameChangeRequestTest < ActiveSupport::TestCase
|
||||
context "approving a request" do
|
||||
setup do
|
||||
@change_request = UserNameChangeRequest.create(
|
||||
:user_id => @requester.id,
|
||||
:original_name => @requester.name,
|
||||
:status => "pending",
|
||||
:desired_name => "abc"
|
||||
user_id: @requester.id,
|
||||
original_name: @requester.name,
|
||||
status: "pending",
|
||||
desired_name: "abc",
|
||||
)
|
||||
CurrentUser.user = @admin
|
||||
end
|
||||
|
||||
should "create a dmail" do
|
||||
assert_difference("Dmail.count", 1) do
|
||||
assert_difference(-> { Dmail.count }, 1) do
|
||||
@change_request.approve!
|
||||
end
|
||||
end
|
||||
@ -37,7 +37,7 @@ class UserNameChangeRequestTest < ActiveSupport::TestCase
|
||||
end
|
||||
|
||||
should "create mod action" do
|
||||
assert_difference("ModAction.count", 1) do
|
||||
assert_difference(-> { ModAction.count }, 1) do
|
||||
@change_request.approve!
|
||||
end
|
||||
end
|
||||
@ -45,12 +45,12 @@ class UserNameChangeRequestTest < ActiveSupport::TestCase
|
||||
|
||||
context "creating a new request" do
|
||||
should "not validate if the desired name already exists" do
|
||||
assert_difference("UserNameChangeRequest.count", 0) do
|
||||
assert_difference(-> { UserNameChangeRequest.count }, 0) do
|
||||
req = UserNameChangeRequest.create(
|
||||
:user_id => @requester.id,
|
||||
:original_name => @requester.name,
|
||||
:status => "pending",
|
||||
:desired_name => @requester.name
|
||||
user_id: @requester.id,
|
||||
original_name: @requester.name,
|
||||
status: "pending",
|
||||
desired_name: @requester.name,
|
||||
)
|
||||
assert_equal(["Desired name already exists"], req.errors.full_messages)
|
||||
end
|
||||
@ -64,4 +64,32 @@ class UserNameChangeRequestTest < ActiveSupport::TestCase
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context "when users switch names" do
|
||||
setup do
|
||||
# Uppercase usernames are relevant for the test because of normalization
|
||||
@u1 = create(:user, name: "Aaa")
|
||||
@u2 = create(:user, name: "Bbb")
|
||||
|
||||
# Fill cache with currently correct data
|
||||
User.name_to_id("aaa")
|
||||
User.name_to_id("bbb")
|
||||
|
||||
as(@u1) { UserNameChangeRequest.create(desired_name: "temporary", skip_limited_validation: true).approve! }
|
||||
@u1.reload
|
||||
|
||||
as(@u2) { UserNameChangeRequest.create(desired_name: "Aaa", skip_limited_validation: true).approve! }
|
||||
@u2.reload
|
||||
|
||||
as(@u1) { UserNameChangeRequest.create(desired_name: "Bbb", skip_limited_validation: true).approve! }
|
||||
@u1.reload
|
||||
end
|
||||
|
||||
should "update the user cache correcly" do
|
||||
assert_equal("Bbb", @u1.name)
|
||||
assert_equal("Aaa", @u2.name)
|
||||
assert_equal(@u1.id, User.name_to_id(@u1.name))
|
||||
assert_equal(@u2.id, User.name_to_id(@u2.name))
|
||||
end
|
||||
end
|
||||
end
|
||||
|
Loading…
Reference in New Issue
Block a user