]> git.openstreetmap.org Git - rails.git/blobdiff - test/functional/old_node_controller_test.rb
Test and fix for issue #1568. Wasn't testing for end element in the right place.
[rails.git] / test / functional / old_node_controller_test.rb
index 50d69e9a463948aeb8c287cbe7a9782e9393a25f..f1328e65091d7f7c26ac08176284db5efb080108 100644 (file)
@@ -1,18 +1,9 @@
 require File.dirname(__FILE__) + '/../test_helper'
 require 'old_node_controller'
 
-# Re-raise errors caught by the controller.
-class OldNodeController; def rescue_action(e) raise e end; end
-
-class OldNodeControllerTest < Test::Unit::TestCase
+class OldNodeControllerTest < ActionController::TestCase
   api_fixtures
 
-  def setup
-    @controller = OldNodeController.new
-    @request    = ActionController::TestRequest.new
-    @response   = ActionController::TestResponse.new
-  end
-
   #
   # TODO: test history
   #
@@ -84,17 +75,32 @@ class OldNodeControllerTest < Test::Unit::TestCase
   end
 
   ##
-  # for some reason a==b is false, but there doesn't seem to be any 
-  # difference between the nodes, so i'm checking all the attributes 
-  # manually and blaming it on ActiveRecord
-  def assert_nodes_are_equal(a, b)
-    assert_equal a.id, b.id, "node IDs"
-    assert_equal a.latitude, b.latitude, "latitude"
-    assert_equal a.longitude, b.longitude, "longitude"
-    assert_equal a.changeset_id, b.changeset_id, "changeset ID"
-    assert_equal a.visible, b.visible, "visible"
-    assert_equal a.version, b.version, "version"
-    assert_equal a.tags, b.tags, "tags"
+  # Test that getting the current version is identical to picking
+  # that version with the version URI call.
+  def test_current_version
+    check_current_version(current_nodes(:visible_node))
+    check_current_version(current_nodes(:used_node_1))
+    check_current_version(current_nodes(:used_node_2))
+    check_current_version(current_nodes(:node_used_by_relationship))
+    check_current_version(current_nodes(:node_with_versions))
+  end
+  
+  def check_current_version(node_id)
+    # get the current version of the node
+    current_node = with_controller(NodeController.new) do
+      get :read, :id => node_id
+      assert_response :success, "cant get current node #{node_id}" 
+      Node.from_xml(@response.body)
+    end
+    assert_not_nil current_node, "getting node #{node_id} returned nil"
+
+    # get the "old" version of the node from the old_node interface
+    get :version, :id => node_id, :version => current_node.version
+    assert_response :success, "cant get old node #{node_id}, v#{current_node.version}" 
+    old_node = Node.from_xml(@response.body)
+
+    # check the nodes are the same
+    assert_nodes_are_equal current_node, old_node
   end
 
   ##
@@ -124,18 +130,4 @@ class OldNodeControllerTest < Test::Unit::TestCase
     @request.env["RAW_POST_DATA"] = c.to_s
   end
 
-  ##
-  # takes a block which is executed in the context of a different 
-  # ActionController instance. this is used so that code can call methods
-  # on the node controller whilst testing the old_node controller.
-  def with_controller(new_controller)
-    controller_save = @controller
-    begin
-      @controller = new_controller
-      yield
-    ensure
-      @controller = controller_save
-    end
-  end
-
 end