@@ -0,0 +1,5 | |||||
|
1 | Element.update('relations', '<%= escape_javascript(render :partial => 'issues/relations') %>'); | |||
|
2 | <% if @relation.errors.empty? %> | |||
|
3 | $('relation_delay').value = '' | |||
|
4 | $('relation_issue_to_id').value = '' | |||
|
5 | <% end %> |
@@ -0,0 +1,1 | |||||
|
1 | Element.remove('<%= "relation-#{@relation.id}" %>'); |
@@ -49,16 +49,9 class IssueRelationsController < ApplicationController | |||||
49 |
|
49 | |||
50 | respond_to do |format| |
|
50 | respond_to do |format| | |
51 | format.html { redirect_to :controller => 'issues', :action => 'show', :id => @issue } |
|
51 | format.html { redirect_to :controller => 'issues', :action => 'show', :id => @issue } | |
52 |
format.js |
|
52 | format.js { | |
53 | @relations = @issue.relations.select {|r| r.other_issue(@issue) && r.other_issue(@issue).visible? } |
|
53 | @relations = @issue.relations.select {|r| r.other_issue(@issue) && r.other_issue(@issue).visible? } | |
54 | render :update do |page| |
|
54 | } | |
55 | page.replace_html "relations", :partial => 'issues/relations' |
|
|||
56 | if @relation.errors.empty? |
|
|||
57 | page << "$('relation_delay').value = ''" |
|
|||
58 | page << "$('relation_issue_to_id').value = ''" |
|
|||
59 | end |
|
|||
60 | end |
|
|||
61 | end |
|
|||
62 | format.api { |
|
55 | format.api { | |
63 | if saved |
|
56 | if saved | |
64 | render :action => 'show', :status => :created, :location => relation_url(@relation) |
|
57 | render :action => 'show', :status => :created, :location => relation_url(@relation) | |
@@ -75,7 +68,7 class IssueRelationsController < ApplicationController | |||||
75 |
|
68 | |||
76 | respond_to do |format| |
|
69 | respond_to do |format| | |
77 | format.html { redirect_to issue_path } # TODO : does this really work since @issue is always nil? What is it useful to? |
|
70 | format.html { redirect_to issue_path } # TODO : does this really work since @issue is always nil? What is it useful to? | |
78 | format.js { render(:update) {|page| page.remove "relation-#{@relation.id}"} } |
|
71 | format.js | |
79 | format.api { render_api_ok } |
|
72 | format.api { render_api_ok } | |
80 | end |
|
73 | end | |
81 | end |
|
74 | end |
@@ -57,17 +57,16 class IssueRelationsControllerTest < ActionController::TestCase | |||||
57 | def test_create_xhr |
|
57 | def test_create_xhr | |
58 | assert_difference 'IssueRelation.count' do |
|
58 | assert_difference 'IssueRelation.count' do | |
59 | @request.session[:user_id] = 3 |
|
59 | @request.session[:user_id] = 3 | |
60 | xhr :post, :create, |
|
60 | xhr :post, :create, :issue_id => 3, :relation => {:issue_to_id => '1', :relation_type => 'relates', :delay => ''} | |
61 | :issue_id => 3, |
|
61 | assert_response :success | |
62 | :relation => {:issue_to_id => '1', :relation_type => 'relates', :delay => ''} |
|
62 | assert_template 'create' | |
63 | assert_select_rjs 'relations' do |
|
63 | assert_equal 'text/javascript', response.content_type | |
64 | assert_select 'table', 1 |
|
|||
65 | assert_select 'tr', 2 # relations |
|
|||
66 | end |
|
|||
67 | end |
|
64 | end | |
68 | relation = IssueRelation.first(:order => 'id DESC') |
|
65 | relation = IssueRelation.first(:order => 'id DESC') | |
69 | assert_equal 3, relation.issue_from_id |
|
66 | assert_equal 3, relation.issue_from_id | |
70 | assert_equal 1, relation.issue_to_id |
|
67 | assert_equal 1, relation.issue_to_id | |
|
68 | ||||
|
69 | assert_match /Bug #1/, response.body | |||
71 | end |
|
70 | end | |
72 |
|
71 | |||
73 | def test_create_should_accept_id_with_hash |
|
72 | def test_create_should_accept_id_with_hash | |
@@ -113,6 +112,19 class IssueRelationsControllerTest < ActionController::TestCase | |||||
113 |
|
112 | |||
114 | should "prevent relation creation when there's a circular dependency" |
|
113 | should "prevent relation creation when there's a circular dependency" | |
115 |
|
114 | |||
|
115 | def test_create_xhr_with_failure | |||
|
116 | assert_no_difference 'IssueRelation.count' do | |||
|
117 | @request.session[:user_id] = 3 | |||
|
118 | xhr :post, :create, :issue_id => 3, :relation => {:issue_to_id => '999', :relation_type => 'relates', :delay => ''} | |||
|
119 | ||||
|
120 | assert_response :success | |||
|
121 | assert_template 'create' | |||
|
122 | assert_equal 'text/javascript', response.content_type | |||
|
123 | end | |||
|
124 | ||||
|
125 | assert_match /errorExplanation/, response.body | |||
|
126 | end | |||
|
127 | ||||
116 | def test_destroy |
|
128 | def test_destroy | |
117 | assert_difference 'IssueRelation.count', -1 do |
|
129 | assert_difference 'IssueRelation.count', -1 do | |
118 | @request.session[:user_id] = 3 |
|
130 | @request.session[:user_id] = 3 | |
@@ -129,7 +141,11 class IssueRelationsControllerTest < ActionController::TestCase | |||||
129 | assert_difference 'IssueRelation.count', -1 do |
|
141 | assert_difference 'IssueRelation.count', -1 do | |
130 | @request.session[:user_id] = 3 |
|
142 | @request.session[:user_id] = 3 | |
131 | xhr :delete, :destroy, :id => '2' |
|
143 | xhr :delete, :destroy, :id => '2' | |
132 | assert_select_rjs :remove, 'relation-2' |
|
144 | ||
|
145 | assert_response :success | |||
|
146 | assert_template 'destroy' | |||
|
147 | assert_equal 'text/javascript', response.content_type | |||
|
148 | assert_match /relation-2/, response.body | |||
133 | end |
|
149 | end | |
134 | end |
|
150 | end | |
135 | end |
|
151 | end |
General Comments 0
You need to be logged in to leave comments.
Login now