Patch #17602 ยป include_issue_categories_trackers_enabled_modules_in_projects_api.patch
| app/helpers/projects_helper.rb | ||
|---|---|---|
| 91 | 91 |
sharing = 'none' unless Version::VERSION_SHARINGS.include?(sharing) |
| 92 | 92 |
l("label_version_sharing_#{sharing}")
|
| 93 | 93 |
end |
| 94 | ||
| 95 |
def render_api_includes(project, api) |
|
| 96 |
api.array :trackers do |
|
| 97 |
project.trackers.each do |tracker| |
|
| 98 |
api.tracker(:id => tracker.id, :name => tracker.name) |
|
| 99 |
end |
|
| 100 |
end if include_in_api_response?('trackers')
|
|
| 101 | ||
| 102 |
api.array :issue_categories do |
|
| 103 |
project.issue_categories.each do |category| |
|
| 104 |
api.issue_category(:id => category.id, :name => category.name) |
|
| 105 |
end |
|
| 106 |
end if include_in_api_response?('issue_categories')
|
|
| 107 | ||
| 108 |
api.array :enabled_modules do |
|
| 109 |
project.enabled_modules.each do |enabled_module| |
|
| 110 |
api.enabled_module(:id => enabled_module.id, :name => enabled_module.name) |
|
| 111 |
end |
|
| 112 |
end if include_in_api_response?('enabled_modules')
|
|
| 113 | ||
| 114 |
end |
|
| 94 | 115 |
end |
| app/views/projects/index.api.rsb | ||
|---|---|---|
| 9 | 9 |
api.status project.status |
| 10 | 10 | |
| 11 | 11 |
render_api_custom_values project.visible_custom_field_values, api |
| 12 |
render_api_includes(project, api) |
|
| 12 | 13 | |
| 13 | 14 |
api.created_on project.created_on |
| 14 | 15 |
api.updated_on project.updated_on |
| app/views/projects/show.api.rsb | ||
|---|---|---|
| 8 | 8 |
api.status @project.status |
| 9 | 9 | |
| 10 | 10 |
render_api_custom_values @project.visible_custom_field_values, api |
| 11 |
render_api_includes(@project, api) |
|
| 11 | 12 | |
| 12 | 13 |
api.created_on @project.created_on |
| 13 | 14 |
api.updated_on @project.updated_on |
| 14 | ||
| 15 |
api.array :trackers do |
|
| 16 |
@project.trackers.each do |tracker| |
|
| 17 |
api.tracker(:id => tracker.id, :name => tracker.name) |
|
| 18 |
end |
|
| 19 |
end if include_in_api_response?('trackers')
|
|
| 20 | ||
| 21 |
api.array :issue_categories do |
|
| 22 |
@project.issue_categories.each do |category| |
|
| 23 |
api.issue_category(:id => category.id, :name => category.name) |
|
| 24 |
end |
|
| 25 |
end if include_in_api_response?('issue_categories')
|
|
| 26 | 15 |
end |
| test/integration/api_test/projects_test.rb | ||
|---|---|---|
| 65 | 65 |
assert json['projects'].first.has_key?('id')
|
| 66 | 66 |
end |
| 67 | 67 | |
| 68 |
test "GET /projects.xml with include=issue_categories should return categories" do |
|
| 69 |
get '/projects.xml?include=issue_categories' |
|
| 70 |
assert_response :success |
|
| 71 |
assert_equal 'application/xml', @response.content_type |
|
| 72 | ||
| 73 |
assert_tag 'issue_categories', |
|
| 74 |
:attributes => {:type => 'array'},
|
|
| 75 |
:child => {
|
|
| 76 |
:tag => 'issue_category', |
|
| 77 |
:attributes => {
|
|
| 78 |
:id => '2', |
|
| 79 |
:name => 'Recipes' |
|
| 80 |
} |
|
| 81 |
} |
|
| 82 |
end |
|
| 83 | ||
| 84 |
test "GET /projects.xml with include=trackers should return trackers" do |
|
| 85 |
get '/projects.xml?include=trackers' |
|
| 86 |
assert_response :success |
|
| 87 |
assert_equal 'application/xml', @response.content_type |
|
| 88 | ||
| 89 |
assert_tag 'trackers', |
|
| 90 |
:attributes => {:type => 'array'},
|
|
| 91 |
:child => {
|
|
| 92 |
:tag => 'tracker', |
|
| 93 |
:attributes => {
|
|
| 94 |
:id => '2', |
|
| 95 |
:name => 'Feature request' |
|
| 96 |
} |
|
| 97 |
} |
|
| 98 |
end |
|
| 99 | ||
| 100 |
test "GET /projects.xml with include=enabled_modules should return enabled modules" do |
|
| 101 |
get '/projects.xml?include=enabled_modules' |
|
| 102 |
assert_response :success |
|
| 103 |
assert_equal 'application/xml', @response.content_type |
|
| 104 | ||
| 105 |
assert_tag 'enabled_modules', |
|
| 106 |
:attributes => {:type => 'array'},
|
|
| 107 |
:child => {
|
|
| 108 |
:tag => 'enabled_module', |
|
| 109 |
:attributes => {
|
|
| 110 |
:name => 'issue_tracking' |
|
| 111 |
} |
|
| 112 |
} |
|
| 113 |
end |
|
| 114 | ||
| 68 | 115 |
test "GET /projects/:id.xml should return the project" do |
| 69 | 116 |
get '/projects/1.xml' |
| 70 | 117 |
assert_response :success |
| ... | ... | |
| 130 | 177 |
} |
| 131 | 178 |
end |
| 132 | 179 | |
| 180 |
test "GET /projects/:id.xml with include=enabled_modules should return enabled modules" do |
|
| 181 |
get '/projects/1.xml?include=enabled_modules' |
|
| 182 |
assert_response :success |
|
| 183 |
assert_equal 'application/xml', @response.content_type |
|
| 184 | ||
| 185 |
assert_tag 'enabled_modules', |
|
| 186 |
:attributes => {:type => 'array'},
|
|
| 187 |
:child => {
|
|
| 188 |
:tag => 'enabled_module', |
|
| 189 |
:attributes => {
|
|
| 190 |
:name => 'issue_tracking' |
|
| 191 |
} |
|
| 192 |
} |
|
| 193 |
end |
|
| 194 | ||
| 133 | 195 |
test "POST /projects.xml with valid parameters should create the project" do |
| 134 | 196 |
Setting.default_projects_modules = ['issue_tracking', 'repository'] |
| 135 | 197 | |