From b3c722f2f71a7153c4928d5b572e6f920741700a Mon Sep 17 00:00:00 2001 From: Canapin Date: Wed, 2 Aug 2023 21:28:17 +0200 Subject: [PATCH] FIX: `created:@` search keyword for uppercase usernames (#22878) The filter wasn't working if the username had uppercase letters. --- lib/search.rb | 2 +- spec/lib/search_spec.rb | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/lib/search.rb b/lib/search.rb index 05f09dbff00..7edbfc7f360 100644 --- a/lib/search.rb +++ b/lib/search.rb @@ -491,7 +491,7 @@ class Search end advanced_filter(/\Acreated:@(.*)\z/i) do |posts, match| - user_id = User.where(username: match.downcase).pick(:id) + user_id = User.where(username_lower: match.downcase).pick(:id) posts.where(user_id: user_id, post_number: 1) end diff --git a/spec/lib/search_spec.rb b/spec/lib/search_spec.rb index 7bb695c2781..b7efa888f23 100644 --- a/spec/lib/search_spec.rb +++ b/spec/lib/search_spec.rb @@ -1980,6 +1980,18 @@ RSpec.describe Search do expect( Search.execute("test in:tracking", guardian: Guardian.new(topic.user)).posts.length, ).to eq(1) + + another_user = Fabricate(:user, username: "AnotherUser") + post4 = Fabricate(:post, raw: "test by uppercase username", user: another_user) + topic4 = post4.topic + topic4.update(category: public_category) + + expect( + Search + .execute("test created:@#{another_user.username}", guardian: Guardian.new()) + .posts + .length, + ).to eq(1) end it "can find posts with images" do