]> source.dussan.org Git - redmine.git/commitdiff
Removes RJS from IssueRelationsController.
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Thu, 19 Jul 2012 17:06:30 +0000 (17:06 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Thu, 19 Jul 2012 17:06:30 +0000 (17:06 +0000)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10045 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/controllers/issue_relations_controller.rb
app/views/issue_relations/create.js.erb [new file with mode: 0644]
app/views/issue_relations/destroy.js.erb [new file with mode: 0644]
test/functional/issue_relations_controller_test.rb

index 0de78c366233db39382b3302324f13c3d43d4cd6..2f1165cad396b4c9eae359194e6ff3d9ab765dd8 100644 (file)
@@ -49,16 +49,9 @@ class IssueRelationsController < ApplicationController
 
     respond_to do |format|
       format.html { redirect_to :controller => 'issues', :action => 'show', :id => @issue }
-      format.js do
+      format.js {
         @relations = @issue.relations.select {|r| r.other_issue(@issue) && r.other_issue(@issue).visible? }
-        render :update do |page|
-          page.replace_html "relations", :partial => 'issues/relations'
-          if @relation.errors.empty?
-            page << "$('relation_delay').value = ''"
-            page << "$('relation_issue_to_id').value = ''"
-          end
-        end
-      end
+      }
       format.api {
         if saved
           render :action => 'show', :status => :created, :location => relation_url(@relation)
@@ -75,7 +68,7 @@ class IssueRelationsController < ApplicationController
 
     respond_to do |format|
       format.html { redirect_to issue_path } # TODO : does this really work since @issue is always nil? What is it useful to?
-      format.js   { render(:update) {|page| page.remove "relation-#{@relation.id}"} }
+      format.js
       format.api  { render_api_ok }
     end
   end
diff --git a/app/views/issue_relations/create.js.erb b/app/views/issue_relations/create.js.erb
new file mode 100644 (file)
index 0000000..a2446ab
--- /dev/null
@@ -0,0 +1,5 @@
+Element.update('relations', '<%= escape_javascript(render :partial => 'issues/relations') %>');
+<% if @relation.errors.empty? %>
+  $('relation_delay').value = ''
+  $('relation_issue_to_id').value = ''
+<% end %>
diff --git a/app/views/issue_relations/destroy.js.erb b/app/views/issue_relations/destroy.js.erb
new file mode 100644 (file)
index 0000000..f3a03d1
--- /dev/null
@@ -0,0 +1 @@
+Element.remove('<%= "relation-#{@relation.id}" %>');
index 2a265e3691d02a840602ae61dd455a85dd0d6911..b629808bb98b25a588a3dc80a567f8be4e37652f 100644 (file)
@@ -57,17 +57,16 @@ class IssueRelationsControllerTest < ActionController::TestCase
   def test_create_xhr
     assert_difference 'IssueRelation.count' do
       @request.session[:user_id] = 3
-      xhr :post, :create,
-        :issue_id => 3,
-        :relation => {:issue_to_id => '1', :relation_type => 'relates', :delay => ''}
-      assert_select_rjs 'relations' do
-        assert_select 'table', 1
-        assert_select 'tr', 2 # relations
-      end
+      xhr :post, :create, :issue_id => 3, :relation => {:issue_to_id => '1', :relation_type => 'relates', :delay => ''}
+      assert_response :success
+      assert_template 'create'
+      assert_equal 'text/javascript', response.content_type
     end
     relation = IssueRelation.first(:order => 'id DESC')
     assert_equal 3, relation.issue_from_id
     assert_equal 1, relation.issue_to_id
+
+    assert_match /Bug #1/, response.body
   end
 
   def test_create_should_accept_id_with_hash
@@ -113,6 +112,19 @@ class IssueRelationsControllerTest < ActionController::TestCase
 
   should "prevent relation creation when there's a circular dependency"
 
+  def test_create_xhr_with_failure
+    assert_no_difference 'IssueRelation.count' do
+      @request.session[:user_id] = 3
+      xhr :post, :create, :issue_id => 3, :relation => {:issue_to_id => '999', :relation_type => 'relates', :delay => ''}
+
+      assert_response :success
+      assert_template 'create'
+      assert_equal 'text/javascript', response.content_type
+    end
+
+    assert_match /errorExplanation/, response.body
+  end
+
   def test_destroy
     assert_difference 'IssueRelation.count', -1 do
       @request.session[:user_id] = 3
@@ -129,7 +141,11 @@ class IssueRelationsControllerTest < ActionController::TestCase
     assert_difference 'IssueRelation.count', -1 do
       @request.session[:user_id] = 3
       xhr :delete, :destroy, :id => '2'
-      assert_select_rjs  :remove, 'relation-2'
+
+      assert_response :success
+      assert_template 'destroy'
+      assert_equal 'text/javascript', response.content_type
+      assert_match /relation-2/, response.body
     end
   end
 end