diff --git a/app/views/users/show.api.rsb b/app/views/users/show.api.rsb index 26d8a998ab5b128ea911db9397fc914805316715..b7d23ca973a1dd8448bd489ffa60b97e0ee4fe24 100644 --- a/app/views/users/show.api.rsb +++ b/app/views/users/show.api.rsb @@ -12,10 +12,15 @@ api.user do api.array :memberships do @memberships.each do |membership| api.membership do + api.id membership.id api.project :id => membership.project.id, :name => membership.project.name api.array :roles do - membership.roles.each do |role| - api.role :id => role.id, :name => role.name + membership.member_roles.each do |member_role| + if member_role.role + attrs = {:id => member_role.role.id, :name => member_role.role.name} + attrs.merge!(:inherited => true) if member_role.inherited_from.present? + api.role attrs + end end end end if membership.project diff --git a/test/integration/api_test/users_test.rb b/test/integration/api_test/users_test.rb index 744a09ee40e973820c1edecb0f10b1df590c3ab5..3986669857af09d1dc5c4265e202c6655cfa904e 100644 --- a/test/integration/api_test/users_test.rb +++ b/test/integration/api_test/users_test.rb @@ -34,20 +34,48 @@ class ApiTest::UsersTest < ActionController::IntegrationTest should "return requested user" do get '/users/2.xml' + assert_response :success assert_tag :tag => 'user', :child => {:tag => 'id', :content => '2'} end + + context "with include=memberships" do + should "include memberships" do + get '/users/2.xml?include=memberships' + + assert_response :success + assert_tag :tag => 'memberships', + :parent => {:tag => 'user'}, + :children => {:count => 1} + end + end end context ".json" do should "return requested user" do get '/users/2.json' + assert_response :success json = ActiveSupport::JSON.decode(response.body) assert_kind_of Hash, json assert_kind_of Hash, json['user'] assert_equal 2, json['user']['id'] end + + context "with include=memberships" do + should "include memberships" do + get '/users/2.json?include=memberships' + + assert_response :success + json = ActiveSupport::JSON.decode(response.body) + assert_kind_of Array, json['user']['memberships'] + assert_equal [{ + "id"=>1, + "project"=>{"name"=>"eCookbook", "id"=>1}, + "roles"=>[{"name"=>"Manager", "id"=>1}] + }], json['user']['memberships'] + end + end end end