Merge remote-tracking branch 'openstreetmap/pull/891'
[rails.git] / test / controllers / search_controller_test.rb
1 require "test_helper"
2
3 class SearchControllerTest < ActionController::TestCase
4   api_fixtures
5
6   ##
7   # test all routes which lead to this controller
8   def test_routes
9     assert_routing(
10       { :path => "/api/0.6/search", :method => :get },
11       { :controller => "search", :action => "search_all" }
12     )
13     assert_routing(
14       { :path => "/api/0.6/nodes/search", :method => :get },
15       { :controller => "search", :action => "search_nodes" }
16     )
17     assert_routing(
18       { :path => "/api/0.6/ways/search", :method => :get },
19       { :controller => "search", :action => "search_ways" }
20     )
21     assert_routing(
22       { :path => "/api/0.6/relations/search", :method => :get },
23       { :controller => "search", :action => "search_relations" }
24     )
25   end
26
27   ##
28   # test searching nodes
29   def test_search_nodes
30     get :search_nodes, :type => "test"
31     assert_response :service_unavailable
32     assert_equal "Searching of nodes is currently unavailable", response.headers["Error"]
33
34     get :search_nodes, :type => "test", :value => "yes"
35     assert_response :service_unavailable
36     assert_equal "Searching of nodes is currently unavailable", response.headers["Error"]
37
38     get :search_nodes, :name => "Test Node"
39     assert_response :service_unavailable
40     assert_equal "Searching of nodes is currently unavailable", response.headers["Error"]
41   end
42
43   ##
44   # test searching ways
45   def test_search_ways
46     get :search_ways, :type => "test"
47     assert_response :service_unavailable
48     assert_equal "Searching for a key without value is currently unavailable", response.headers["Error"]
49
50     get :search_ways, :type => "test", :value => "yes"
51     assert_response :success
52     assert_select "way", 3
53
54     get :search_ways, :name => "Test Way"
55     assert_response :success
56     assert_select "way", 1
57   end
58
59   ##
60   # test searching relations
61   def test_search_relations
62     get :search_relations, :type => "test"
63     assert_response :service_unavailable
64     assert_equal "Searching for a key without value is currently unavailable", response.headers["Error"]
65
66     get :search_relations, :type => "test", :value => "yes"
67     assert_response :success
68     assert_select "relation", 3
69
70     get :search_relations, :name => "Test Relation"
71     assert_response :success
72     assert_select "relation", 1
73   end
74
75   ##
76   # test searching nodes, ways and relations
77   def test_search_all
78     get :search_all, :type => "test"
79     assert_response :service_unavailable
80     assert_equal "Searching of nodes is currently unavailable", response.headers["Error"]
81
82     get :search_all, :type => "test", :value => "yes"
83     assert_response :service_unavailable
84     assert_equal "Searching of nodes is currently unavailable", response.headers["Error"]
85
86     get :search_all, :name => "Test"
87     assert_response :service_unavailable
88     assert_equal "Searching of nodes is currently unavailable", response.headers["Error"]
89   end
90 end