From: Andy Allan Date: Wed, 14 Apr 2021 15:13:29 +0000 (+0100) Subject: Merge branch 'pull/3164' X-Git-Tag: live~2675 X-Git-Url: https://git.openstreetmap.org/rails.git/commitdiff_plain/28af501924c6cc30560f463fe818bb098a18b9cc?hp=26e72635cbd8fff76d28fe3d95c17913befc265e Merge branch 'pull/3164' --- diff --git a/app/controllers/api/user_preferences_controller.rb b/app/controllers/api/user_preferences_controller.rb index ddc5d7f43..40ccfccbb 100644 --- a/app/controllers/api/user_preferences_controller.rb +++ b/app/controllers/api/user_preferences_controller.rb @@ -7,12 +7,17 @@ module Api around_action :api_call_handle_error + before_action :set_request_formats + ## - # return all the preferences as an XML document + # return all the preferences def index @user_preferences = current_user.preferences - render :formats => [:xml] + respond_to do |format| + format.xml + format.json + end end ## diff --git a/app/views/api/user_preferences/index.json.jbuilder b/app/views/api/user_preferences/index.json.jbuilder new file mode 100644 index 000000000..064bf27f2 --- /dev/null +++ b/app/views/api/user_preferences/index.json.jbuilder @@ -0,0 +1,3 @@ +json.partial! "api/root_attributes" + +json.preferences @user_preferences.map { |pref| [pref.k, pref.v] }.to_h diff --git a/test/controllers/api/user_preferences_controller_test.rb b/test/controllers/api/user_preferences_controller_test.rb index 7cfc875ef..3d3f79712 100644 --- a/test/controllers/api/user_preferences_controller_test.rb +++ b/test/controllers/api/user_preferences_controller_test.rb @@ -9,6 +9,10 @@ module Api { :path => "/api/0.6/user/preferences", :method => :get }, { :controller => "api/user_preferences", :action => "index" } ) + assert_routing( + { :path => "/api/0.6/user/preferences.json", :method => :get }, + { :controller => "api/user_preferences", :action => "index", :format => "json" } + ) assert_routing( { :path => "/api/0.6/user/preferences", :method => :put }, { :controller => "api/user_preferences", :action => "update_all" } @@ -62,6 +66,16 @@ module Api assert_select "preference[k=\"#{user_preference2.k}\"][v=\"#{user_preference2.v}\"]", :count => 1 end end + + # Test json + get user_preferences_path(:format => "json"), :headers => auth_header + assert_response :success + assert_equal "application/json", @response.media_type + + js = ActiveSupport::JSON.decode(@response.body) + assert_not_nil js + assert_equal 2, js["preferences"].count + assert_equal user_preference.v, js["preferences"][user_preference.k] end ##