From 6748a5acb1fc0e4652dde1ee6544d4ae2d6d4f26 Mon Sep 17 00:00:00 2001 From: Taras Gogol Date: Fri, 8 May 2020 21:17:16 +0300 Subject: [PATCH] Fix followings list order | Issue #13538 (#13676) --- app/models/relationship_filter.rb | 2 +- spec/models/relationship_filter_spec.rb | 37 +++++++++++++++++++++++++ 2 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 spec/models/relationship_filter_spec.rb diff --git a/app/models/relationship_filter.rb b/app/models/relationship_filter.rb index e6859bf3dd..9135ff144c 100644 --- a/app/models/relationship_filter.rb +++ b/app/models/relationship_filter.rb @@ -23,7 +23,7 @@ class RelationshipFilter scope = scope_for('relationship', params['relationship'].to_s.strip) params.each do |key, value| - next if key.to_s == 'page' + next if %w(relationship page).include?(key) scope.merge!(scope_for(key.to_s, value.to_s.strip)) if value.present? end diff --git a/spec/models/relationship_filter_spec.rb b/spec/models/relationship_filter_spec.rb new file mode 100644 index 0000000000..7c0f37a06f --- /dev/null +++ b/spec/models/relationship_filter_spec.rb @@ -0,0 +1,37 @@ +# frozen_string_literal: true + +require 'rails_helper' + +describe RelationshipFilter do + let(:account) { Fabricate(:account) } + + describe '#results' do + context 'when default params are used' do + let(:subject) do + RelationshipFilter.new(account, 'order' => 'active').results + end + + before do + add_following_account_with(last_status_at: 7.days.ago) + add_following_account_with(last_status_at: 1.day.ago) + add_following_account_with(last_status_at: 3.days.ago) + end + + it 'returns followings ordered by last activity' do + expected_result = account.following.eager_load(:account_stat).reorder(nil).by_recent_status + + expect(subject).to eq expected_result + end + end + end + + def add_following_account_with(last_status_at:) + following_account = Fabricate(:account) + Fabricate(:account_stat, account: following_account, + last_status_at: last_status_at, + statuses_count: 1, + following_count: 0, + followers_count: 0) + Fabricate(:follow, account: account, target_account: following_account).account + end +end