]> git.openstreetmap.org Git - rails.git/blob - test/controllers/search_controller_test.rb
Refactor some controller tests to use factories.
[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     first_way = create(:way_with_nodes, :nodes_count => 2)
47     deleted_way = create(:way_with_nodes, :deleted, :nodes_count => 2)
48     third_way = create(:way_with_nodes, :nodes_count => 2)
49
50     [first_way, deleted_way, third_way].each do |way|
51       create(:way_tag, :way => way, :k => "test", :v => "yes")
52     end
53     create(:way_tag, :way => third_way, :k => "name", :v => "Test Way")
54
55     get :search_ways, :type => "test"
56     assert_response :service_unavailable
57     assert_equal "Searching for a key without value is currently unavailable", response.headers["Error"]
58
59     get :search_ways, :type => "test", :value => "yes"
60     assert_response :success
61     assert_select "way", 3
62
63     get :search_ways, :name => "Test Way"
64     assert_response :success
65     assert_select "way", 1
66   end
67
68   ##
69   # test searching relations
70   def test_search_relations
71     first_relation = create(:relation)
72     deleted_relation = create(:relation)
73     third_relation = create(:relation)
74
75     [first_relation, deleted_relation, third_relation].each do |relation|
76       create(:relation_tag, :relation => relation, :k => "test", :v => "yes")
77     end
78     create(:relation_tag, :relation => third_relation, :k => "name", :v => "Test Relation")
79
80     get :search_relations, :type => "test"
81     assert_response :service_unavailable
82     assert_equal "Searching for a key without value is currently unavailable", response.headers["Error"]
83
84     get :search_relations, :type => "test", :value => "yes"
85     assert_response :success
86     assert_select "relation", 3
87
88     get :search_relations, :name => "Test Relation"
89     assert_response :success
90     assert_select "relation", 1
91   end
92
93   ##
94   # test searching nodes, ways and relations
95   def test_search_all
96     get :search_all, :type => "test"
97     assert_response :service_unavailable
98     assert_equal "Searching of nodes is currently unavailable", response.headers["Error"]
99
100     get :search_all, :type => "test", :value => "yes"
101     assert_response :service_unavailable
102     assert_equal "Searching of nodes is currently unavailable", response.headers["Error"]
103
104     get :search_all, :name => "Test"
105     assert_response :service_unavailable
106     assert_equal "Searching of nodes is currently unavailable", response.headers["Error"]
107   end
108 end