Improve functional tests for notes#search
authorTom Hughes <tom@compton.nu>
Wed, 24 Apr 2013 19:21:18 +0000 (20:21 +0100)
committerTom Hughes <tom@compton.nu>
Wed, 24 Apr 2013 19:21:18 +0000 (20:21 +0100)
test/functional/notes_controller_test.rb

index fbc03ccdf2d26bf9f9f215ea8ed11ba06bd31964..ab56ba2d82b7ab8fc868277a13f1f7d32e3c69e3 100644 (file)
@@ -521,18 +521,66 @@ class NotesControllerTest < ActionController::TestCase
     get :search, {:q => 'note 1', :format => 'xml'}
     assert_response :success
     assert_equal "application/xml", @response.content_type
+    assert_select "osm", :count => 1 do
+      assert_select "note", :count => 1
+    end
 
     get :search, {:q => 'note 1', :format => 'json'}
     assert_response :success
     assert_equal "application/json", @response.content_type
+    js = ActiveSupport::JSON.decode(@response.body)
+    assert_not_nil js
+    assert_equal "FeatureCollection", js["type"]
+    assert_equal 1, js["features"].count
 
     get :search, {:q => 'note 1', :format => 'rss'}
     assert_response :success
     assert_equal "application/rss+xml", @response.content_type
+    assert_select "rss", :count => 1 do
+      assert_select "channel", :count => 1 do
+        assert_select "item", :count => 1
+      end
+    end
 
     get :search, {:q => 'note 1', :format => 'gpx'}
     assert_response :success
     assert_equal "application/gpx+xml", @response.content_type
+    assert_select "gpx", :count => 1 do
+      assert_select "wpt", :count => 1
+    end
+  end
+
+  def test_search_no_match
+    get :search, {:q => 'no match', :format => 'xml'}
+    assert_response :success
+    assert_equal "application/xml", @response.content_type
+    assert_select "osm", :count => 1 do
+      assert_select "note", :count => 0
+    end
+
+    get :search, {:q => 'no match', :format => 'json'}
+    assert_response :success
+    assert_equal "application/json", @response.content_type
+    js = ActiveSupport::JSON.decode(@response.body)
+    assert_not_nil js
+    assert_equal "FeatureCollection", js["type"]
+    assert_equal 0, js["features"].count
+
+    get :search, {:q => 'no match', :format => 'rss'}
+    assert_response :success
+    assert_equal "application/rss+xml", @response.content_type
+    assert_select "rss", :count => 1 do
+      assert_select "channel", :count => 1 do
+        assert_select "item", :count => 0
+      end
+    end
+
+    get :search, {:q => 'no match', :format => 'gpx'}
+    assert_response :success
+    assert_equal "application/gpx+xml", @response.content_type
+    assert_select "gpx", :count => 1 do
+      assert_select "wpt", :count => 0
+    end
   end
 
   def test_search_bad_params