logo

mastofe

My custom branche(s) on git.pleroma.social/pleroma/mastofe
commit: 4bc625166e381da15aea667b968e186c11be0217
parent: 61ed133fea80041b354c78b043cec72dd8644101
Author: Eugen Rochko <eugen@zeonfederated.com>
Date:   Wed, 21 Feb 2018 23:22:12 +0100

Fix bug in relationships API introduced by #6482 (#6527)

It was merge when it needed to be deep_merge. And added some tests

Diffstat:

Mapp/controllers/api/v1/accounts/relationships_controller.rb2+-
Mapp/presenters/account_relationships_presenter.rb2+-
Mspec/controllers/api/v1/accounts/relationships_controller_spec.rb22++++++++++++++++++++++
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 @@ -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 @@ -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 @@ -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