Redesign admin accounts index (#9340)
* Improve overview of accounts in admin UI - Display suspended status, role, last activity and IP prominently - Default to showing local accounts - Default to not showing suspended accounts * Remove unused strings * Fix tests * Allow filtering accounts by IP mask
This commit is contained in:
@ -2,10 +2,10 @@ require 'rails_helper'
|
||||
|
||||
describe AccountFilter do
|
||||
describe 'with empty params' do
|
||||
it 'defaults to recent account list' do
|
||||
it 'defaults to recent local not-suspended account list' do
|
||||
filter = described_class.new({})
|
||||
|
||||
expect(filter.results).to eq Account.recent
|
||||
expect(filter.results).to eq Account.local.recent.without_suspended
|
||||
end
|
||||
end
|
||||
|
||||
@ -17,23 +17,6 @@ describe AccountFilter do
|
||||
end
|
||||
end
|
||||
|
||||
describe 'when an IP address is provided' do
|
||||
it 'filters with IP when valid' do
|
||||
filter = described_class.new(ip: '127.0.0.1')
|
||||
allow(User).to receive(:with_recent_ip_address).and_return(User.none)
|
||||
|
||||
filter.results
|
||||
expect(User).to have_received(:with_recent_ip_address).with('127.0.0.1')
|
||||
end
|
||||
|
||||
it 'skips IP when invalid' do
|
||||
filter = described_class.new(ip: '345.678.901.234')
|
||||
expect(User).not_to receive(:with_recent_ip_address)
|
||||
|
||||
filter.results
|
||||
end
|
||||
end
|
||||
|
||||
describe 'with valid params' do
|
||||
it 'combines filters on Account' do
|
||||
filter = described_class.new(
|
||||
@ -60,13 +43,13 @@ describe AccountFilter do
|
||||
end
|
||||
|
||||
describe 'that call account methods' do
|
||||
%i(local remote silenced alphabetic suspended).each do |option|
|
||||
%i(local remote silenced suspended).each do |option|
|
||||
it "delegates the #{option} option" do
|
||||
allow(Account).to receive(option).and_return(Account.none)
|
||||
filter = described_class.new({ option => true })
|
||||
filter.results
|
||||
|
||||
expect(Account).to have_received(option)
|
||||
expect(Account).to have_received(option).at_least(1)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -89,18 +89,6 @@ RSpec.describe User, type: :model do
|
||||
expect(User.matches_email('specified')).to match_array([specified])
|
||||
end
|
||||
end
|
||||
|
||||
describe 'with_recent_ip_address' do
|
||||
it 'returns a relation of users who is, or was at last time, online with the given IP address' do
|
||||
specifieds = [
|
||||
Fabricate(:user, current_sign_in_ip: '0.0.0.42', last_sign_in_ip: '0.0.0.0'),
|
||||
Fabricate(:user, current_sign_in_ip: nil, last_sign_in_ip: '0.0.0.42')
|
||||
]
|
||||
Fabricate(:user, current_sign_in_ip: '0.0.0.0', last_sign_in_ip: '0.0.0.0')
|
||||
|
||||
expect(User.with_recent_ip_address('0.0.0.42')).to match_array(specifieds)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
let(:account) { Fabricate(:account, username: 'alice') }
|
||||
|
Reference in New Issue
Block a user