@@ -0,0 +1,11 | |||||
|
1 | api.array :relations do | |||
|
2 | @relations.each do |relation| | |||
|
3 | api.relation do | |||
|
4 | api.id relation.id | |||
|
5 | api.issue_id relation.issue_from_id | |||
|
6 | api.issue_to_id relation.issue_to_id | |||
|
7 | api.relation_type relation.relation_type | |||
|
8 | api.delay relation.delay | |||
|
9 | end | |||
|
10 | end | |||
|
11 | end |
@@ -17,7 +17,16 | |||||
17 |
|
17 | |||
18 | class IssueRelationsController < ApplicationController |
|
18 | class IssueRelationsController < ApplicationController | |
19 | before_filter :find_issue, :find_project_from_association, :authorize |
|
19 | before_filter :find_issue, :find_project_from_association, :authorize | |
20 | accept_key_auth :show, :create, :destroy |
|
20 | accept_key_auth :index, :show, :create, :destroy | |
|
21 | ||||
|
22 | def index | |||
|
23 | @relations = @issue.relations | |||
|
24 | ||||
|
25 | respond_to do |format| | |||
|
26 | format.html { render :nothing => true } | |||
|
27 | format.api | |||
|
28 | end | |||
|
29 | end | |||
21 |
|
30 | |||
22 | def show |
|
31 | def show | |
23 | @relation = @issue.find_relation(params[:id]) |
|
32 | @relation = @issue.find_relation(params[:id]) |
@@ -27,7 +27,7 api.issue do | |||||
27 |
|
27 | |||
28 | api.array :relations do |
|
28 | api.array :relations do | |
29 | @relations.each do |relation| |
|
29 | @relations.each do |relation| | |
30 |
api.relation(:id => relation.id, :issue_id => relation.issue_from_id, :issue_to_id => relation.issue_to_id, :relation_type => relation.relation_type |
|
30 | api.relation(:id => relation.id, :issue_id => relation.issue_from_id, :issue_to_id => relation.issue_to_id, :relation_type => relation.relation_type, :delay => relation.delay) | |
31 | end |
|
31 | end | |
32 | end if include_in_api_response?('relations') && @relations.present? |
|
32 | end if include_in_api_response?('relations') && @relations.present? | |
33 |
|
33 |
@@ -110,7 +110,7 ActionController::Routing::Routes.draw do |map| | |||||
110 |
|
110 | |||
111 | map.resources :issues, :member => { :edit => :post }, :collection => {} do |issues| |
|
111 | map.resources :issues, :member => { :edit => :post }, :collection => {} do |issues| | |
112 | issues.resources :time_entries, :controller => 'timelog' |
|
112 | issues.resources :time_entries, :controller => 'timelog' | |
113 | issues.resources :relations, :controller => 'issue_relations', :only => [:show, :create, :destroy] |
|
113 | issues.resources :relations, :controller => 'issue_relations', :only => [:index, :show, :create, :destroy] | |
114 | end |
|
114 | end | |
115 |
|
115 | |||
116 | map.resources :issues, :path_prefix => '/projects/:project_id', :collection => { :create => :post } do |issues| |
|
116 | map.resources :issues, :path_prefix => '/projects/:project_id', :collection => { :create => :post } do |issues| |
@@ -69,7 +69,7 Redmine::AccessControl.map do |map| | |||||
69 | :reports => [:issue_report, :issue_report_details]} |
|
69 | :reports => [:issue_report, :issue_report_details]} | |
70 | map.permission :add_issues, {:issues => [:new, :create, :update_form]} |
|
70 | map.permission :add_issues, {:issues => [:new, :create, :update_form]} | |
71 | map.permission :edit_issues, {:issues => [:edit, :update, :bulk_edit, :bulk_update, :update_form], :journals => [:new]} |
|
71 | map.permission :edit_issues, {:issues => [:edit, :update, :bulk_edit, :bulk_update, :update_form], :journals => [:new]} | |
72 | map.permission :manage_issue_relations, {:issue_relations => [:show, :create, :destroy]} |
|
72 | map.permission :manage_issue_relations, {:issue_relations => [:index, :show, :create, :destroy]} | |
73 | map.permission :manage_subtasks, {} |
|
73 | map.permission :manage_subtasks, {} | |
74 | map.permission :set_issues_private, {} |
|
74 | map.permission :set_issues_private, {} | |
75 | map.permission :set_own_issues_private, {}, :require => :loggedin |
|
75 | map.permission :set_own_issues_private, {}, :require => :loggedin |
@@ -25,6 +25,25 class ApiTest::IssueRelationsTest < ActionController::IntegrationTest | |||||
25 | end |
|
25 | end | |
26 |
|
26 | |||
27 | context "/issues/:issue_id/relations" do |
|
27 | context "/issues/:issue_id/relations" do | |
|
28 | context "GET" do | |||
|
29 | should "return issue relations" do | |||
|
30 | get '/issues/9/relations.xml', {}, :authorization => credentials('jsmith') | |||
|
31 | ||||
|
32 | assert_response :success | |||
|
33 | assert_equal 'application/xml', @response.content_type | |||
|
34 | ||||
|
35 | assert_tag :tag => 'relations', | |||
|
36 | :attributes => { :type => 'array' }, | |||
|
37 | :child => { | |||
|
38 | :tag => 'relation', | |||
|
39 | :child => { | |||
|
40 | :tag => 'id', | |||
|
41 | :content => '1' | |||
|
42 | } | |||
|
43 | } | |||
|
44 | end | |||
|
45 | end | |||
|
46 | ||||
28 | context "POST" do |
|
47 | context "POST" do | |
29 | should "create a relation" do |
|
48 | should "create a relation" do | |
30 | assert_difference('IssueRelation.count') do |
|
49 | assert_difference('IssueRelation.count') do |
@@ -118,6 +118,10 class RoutingTest < ActionController::IntegrationTest | |||||
118 | end |
|
118 | end | |
119 |
|
119 | |||
120 | context "issue relations" do |
|
120 | context "issue relations" do | |
|
121 | should_route :get, "/issues/1/relations", :controller => 'issue_relations', :action => 'index', :issue_id => '1' | |||
|
122 | should_route :get, "/issues/1/relations.xml", :controller => 'issue_relations', :action => 'index', :issue_id => '1', :format => 'xml' | |||
|
123 | should_route :get, "/issues/1/relations.json", :controller => 'issue_relations', :action => 'index', :issue_id => '1', :format => 'json' | |||
|
124 | ||||
121 | should_route :post, "/issues/1/relations", :controller => 'issue_relations', :action => 'create', :issue_id => '1' |
|
125 | should_route :post, "/issues/1/relations", :controller => 'issue_relations', :action => 'create', :issue_id => '1' | |
122 | should_route :post, "/issues/1/relations.xml", :controller => 'issue_relations', :action => 'create', :issue_id => '1', :format => 'xml' |
|
126 | should_route :post, "/issues/1/relations.xml", :controller => 'issue_relations', :action => 'create', :issue_id => '1', :format => 'xml' | |
123 | should_route :post, "/issues/1/relations.json", :controller => 'issue_relations', :action => 'create', :issue_id => '1', :format => 'json' |
|
127 | should_route :post, "/issues/1/relations.json", :controller => 'issue_relations', :action => 'create', :issue_id => '1', :format => 'json' |
General Comments 0
You need to be logged in to leave comments.
Login now