Added a query method for querying bounding boxes, times and users of changesets....
[rails.git] / test / functional / way_controller_test.rb
index 895e7532fcfb5ebb1e1e11f6ce7df9977e9137f2..be4c41a394fb9318b091a5b7756eceaac1690143 100644 (file)
@@ -1,18 +1,9 @@
 require File.dirname(__FILE__) + '/../test_helper'
 require 'way_controller'
 
-# Re-raise errors caught by the controller.
-class WayController; def rescue_action(e) raise e end; end
-
-class WayControllerTest < Test::Unit::TestCase
+class WayControllerTest < ActionController::TestCase
   api_fixtures
 
-  def setup
-    @controller = WayController.new
-    @request    = ActionController::TestRequest.new
-    @response   = ActionController::TestResponse.new
-  end
-
   def basic_authorization(user, pass)
     @request.env["HTTP_AUTHORIZATION"] = "Basic %s" % Base64.encode64("#{user}:#{pass}")
   end
@@ -42,19 +33,30 @@ class WayControllerTest < Test::Unit::TestCase
   ##
   # check the "full" mode
   def test_full
-    get :full, :id => current_ways(:visible_way).id
-    assert_response :success
-    # FIXME check whether this contains the stuff we want!
-    #print @response.body
-    # Check the way is correctly returned
-    way = current_ways(:visible_way)
-    assert_select "osm way[id=#{way.id}][version=#{way.version}][visible=#{way.visible}]", 1
-    assert_select "osm way nd[ref=#{way.way_nodes[0].node_id}]", 1
-    # Check that the node is correctly returned
-    nd = current_ways(:visible_way).nodes
-    assert_equal 1, nd.count
-    nda = nd[0]
-    assert_select "osm node[id=#{nda.id}][version=#{nda.version}][lat=#{nda.lat}][lon=#{nda.lon}]", 1 
+    Way.find(:all).each do |way|
+      get :full, :id => way.id
+
+      # full call should say "gone" for non-visible ways...
+      unless way.visible
+        assert_response :gone
+        next
+      end
+
+      # otherwise it should say success
+      assert_response :success
+      
+      # Check the way is correctly returned
+      assert_select "osm way[id=#{way.id}][version=#{way.version}][visible=#{way.visible}]", 1
+      
+      # check that each node in the way appears once in the output as a 
+      # reference and as the node element. note the slightly dodgy assumption
+      # that nodes appear only once. this is currently the case with the
+      # fixtures, but it doesn't have to be.
+      way.nodes.each do |n|
+        assert_select "osm way nd[ref=#{n.id}]", 1
+        assert_select "osm node[id=#{n.id}][version=#{n.version}][lat=#{n.lat}][lon=#{n.lon}]", 1
+      end
+    end
   end
 
   # -------------------------------------