diff options
3 files changed, 24 insertions, 2 deletions
diff --git a/app/controllers/api/v1/accounts/relationships_controller.rb b/app/controllers/api/v1/accounts/relationships_controller.rb index 6cc3da498..70236d1a8 100644 --- a/app/controllers/api/v1/accounts/relationships_controller.rb +++ b/app/controllers/api/v1/accounts/relationships_controller.rb @@ -21,6 +21,6 @@ class Api::V1::Accounts::RelationshipsController < Api::BaseController end def account_ids - @_account_ids ||= Array(params[:id]).map(&:to_i) + Array(params[:id]).map(&:to_i) end end diff --git a/app/presenters/account_relationships_presenter.rb b/app/presenters/account_relationships_presenter.rb index d27fb7b01..b1e99b31b 100644 --- a/app/presenters/account_relationships_presenter.rb +++ b/app/presenters/account_relationships_presenter.rb @@ -45,7 +45,7 @@ class AccountRelationshipsPresenter maps_for_account = Rails.cache.read("relationship:#{@current_account_id}:#{account_id}") if maps_for_account.is_a?(Hash) - @cached.merge!(maps_for_account) + @cached.deep_merge!(maps_for_account) else @uncached_account_ids << account_id end diff --git a/spec/controllers/api/v1/accounts/relationships_controller_spec.rb b/spec/controllers/api/v1/accounts/relationships_controller_spec.rb index 508415fc8..e0de790c8 100644 --- a/spec/controllers/api/v1/accounts/relationships_controller_spec.rb +++ b/spec/controllers/api/v1/accounts/relationships_controller_spec.rb @@ -66,6 +66,28 @@ describe Api::V1::Accounts::RelationshipsController do expect(json.second[:requested]).to be false expect(json.second[:domain_blocking]).to be false end + + it 'returns JSON with correct data on cached requests too' do + get :index, params: { id: [simon.id] } + + json = body_as_json + + expect(json).to be_a Enumerable + expect(json.first[:following]).to be true + expect(json.first[:showing_reblogs]).to be true + end + + it 'returns JSON with correct data after change too' do + user.account.unfollow!(simon) + + get :index, params: { id: [simon.id] } + + json = body_as_json + + expect(json).to be_a Enumerable + expect(json.first[:following]).to be false + expect(json.first[:showing_reblogs]).to be false + end end end end |