diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index fbceb362..07f42df1 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -107,7 +107,14 @@ class ProjectsController < ApplicationController respond_to do |format| format.html format.m &render_project_mobile - format.xml { render :xml => @project.to_xml( :except => :user_id ) } + format.xml { + render :xml => @project.to_xml(:except => :user_id) { |xml| + xml.not_done { @not_done.each { |child| child.to_xml(:builder => xml, :skip_instruct => true) } } + xml.deferred { @deferred.each { |child| child.to_xml(:builder => xml, :skip_instruct => true) } } + xml.pending { @pending.each { |child| child.to_xml(:builder => xml, :skip_instruct => true) } } + xml.done { @done.each { |child| child.to_xml(:builder => xml, :skip_instruct => true) } } + } + } end end diff --git a/test/integration/project_xml_api_test.rb b/test/integration/project_xml_api_test.rb index 4111ebb2..2d4586d1 100644 --- a/test/integration/project_xml_api_test.rb +++ b/test/integration/project_xml_api_test.rb @@ -13,6 +13,16 @@ class ProjectXmlApiTest < ActionController::IntegrationTest def setup assert_test_environment_ok end + + def test_retrieve_project + authenticated_get_xml "/projects/1", users(:admin_user).login, 'abracadabra', {} + assert_tag :tag => "project" + assert_tag :tag => "project", :child => {:tag => "not_done" } + assert_tag :tag => "project", :child => {:tag => "deferred" } + assert_tag :tag => "project", :child => {:tag => "pending" } + assert_tag :tag => "project", :child => {:tag => "done" } + assert_response 200 + end def test_fails_with_invalid_xml_format #Fails too hard for test to catch