M app/models/account_filter.rb => app/models/account_filter.rb +1 -1
@@ 55,7 55,7 @@ class AccountFilter
when 'by_domain'
Account.where(domain: value.to_s.strip)
when 'username'
- Account.matches_username(value.to_s.strip)
+ Account.matches_username(value.to_s.strip.delete_prefix('@'))
when 'display_name'
Account.matches_display_name(value.to_s.strip)
when 'email'
M spec/models/account_filter_spec.rb => spec/models/account_filter_spec.rb +19 -0
@@ 44,4 44,23 @@ describe AccountFilter do
expect(filter.results).to match_array [remote_account_one]
end
end
+
+ describe 'with username' do
+ let!(:local_account) { Fabricate(:account, domain: nil, username: 'validUserName') }
+
+ it 'works with @ at the beginning of the username' do
+ filter = described_class.new(username: '@validUserName')
+ expect(filter.results).to match_array [local_account]
+ end
+
+ it 'does not work with more than one @ at the beginning of the username' do
+ filter = described_class.new(username: '@@validUserName')
+ expect(filter.results).to_not match_array [local_account]
+ end
+
+ it 'does not work with @ outside the beginning of the username' do
+ filter = described_class.new(username: 'validUserName@')
+ expect(filter.results).to_not match_array [local_account]
+ end
+ end
end