Merge branch 'master' into glitch-soc/merge-upstream

Conflicts:
- app/models/status.rb

Resolved by taking both changes (not a real conflict, just changes too close
to each other).
This commit is contained in:
Thibaut Girka
2018-11-27 13:23:02 +01:00
183 changed files with 2365 additions and 697 deletions

View File

@@ -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

View File

@@ -618,9 +618,15 @@ RSpec.describe Account, type: :model do
expect(account).not_to model_have_error_on_field(:username)
end
it 'is invalid if the username doesn\'t only contains letters, numbers and underscores' do
it 'is valid even if the username contains hyphens' do
account = Fabricate.build(:account, domain: 'domain', username: 'the-doctor')
account.valid?
expect(account).to_not model_have_error_on_field(:username)
end
it 'is invalid if the username doesn\'t only contains letters, numbers, underscores and hyphens' do
account = Fabricate.build(:account, domain: 'domain', username: 'the doctor')
account.valid?
expect(account).to model_have_error_on_field(:username)
end
@@ -754,24 +760,6 @@ RSpec.describe Account, type: :model do
expect(Account.suspended).to match_array([account_1])
end
end
describe 'without_followers' do
it 'returns a relation of accounts without followers' do
account_1 = Fabricate(:account)
account_2 = Fabricate(:account)
Fabricate(:follow, account: account_1, target_account: account_2)
expect(Account.without_followers).to match_array([account_1])
end
end
describe 'with_followers' do
it 'returns a relation of accounts with followers' do
account_1 = Fabricate(:account)
account_2 = Fabricate(:account)
Fabricate(:follow, account: account_1, target_account: account_2)
expect(Account.with_followers).to match_array([account_2])
end
end
end
context 'when is local' do

View File

@@ -0,0 +1,4 @@
require 'rails_helper'
RSpec.describe AccountStat, type: :model do
end

View File

@@ -118,5 +118,15 @@ describe StatusThreadingConcern do
viewer.block_domain!('example.com')
expect(status.descendants(4, viewer)).to_not include(reply2)
end
it 'promotes self-replies to the top while leaving the rest in order' do
a = Fabricate(:status, account: alice)
d = Fabricate(:status, account: jeff, thread: a)
e = Fabricate(:status, account: bob, thread: d)
c = Fabricate(:status, account: alice, thread: a)
f = Fabricate(:status, account: bob, thread: c)
expect(a.descendants(20)).to eq [c, d, e, f]
end
end
end

View File

@@ -101,7 +101,7 @@ RSpec.describe Notification, type: :model do
before do
allow(accounts_with_ids).to receive(:[]).with(stale_account1.id).and_return(account1)
allow(accounts_with_ids).to receive(:[]).with(stale_account2.id).and_return(account2)
allow(Account).to receive_message_chain(:where, :map, :to_h).and_return(accounts_with_ids)
allow(Account).to receive_message_chain(:where, :includes, :each_with_object).and_return(accounts_with_ids)
end
let(:cached_items) do

View File

@@ -1,5 +1,4 @@
require 'rails_helper'
RSpec.describe StatusStat, type: :model do
pending "add some examples to (or delete) #{__FILE__}"
end

View File

@@ -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') }