merged cont.
[opensuse:yast-rest-service.git] / webservice / test / functional / resources_route_test.rb
1 #--
2 # Webyast Webservice framework
3 #
4 # Copyright (C) 2009, 2010 Novell, Inc. 
5 #   This library is free software; you can redistribute it and/or modify
6 # it only under the terms of version 2.1 of the GNU Lesser General Public
7 # License as published by the Free Software Foundation. 
8 #
9 #   This library is distributed in the hope that it will be useful, but WITHOUT
10 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
11 # FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more 
12 # details. 
13 #
14 #   You should have received a copy of the GNU Lesser General Public
15 # License along with this library; if not, write to the Free Software 
16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17 #++
18
19 #
20 # test/functional/resource_route_test.rb
21 #
22 # This tests route creation from the resource database
23 #
24 class TestPlugin
25   attr_reader :directory
26   def initialize path
27     @directory = File.join(File.dirname(__FILE__), "..", path)
28   end
29 end
30
31 unless defined? RESOURCE_REGISTRATION_TESTING
32   RESOURCE_REGISTRATION_TESTING = true # prevent plugin registration in environment.rb
33 end
34
35 require File.join(File.dirname(__FILE__), "..", "test_helper")
36 require File.join(File.dirname(__FILE__), "..", "..", "lib", "resource_registration")
37
38 class ResourceRouteTest < ActiveSupport::TestCase
39
40   # See http://pennysmalls.com/2009/03/04/rails-23-breakage-and-fixage/
41   include ActionController::Assertions::RoutingAssertions
42   
43   # config/initializers/resource_registration.rb sets it up
44   
45   test "resource route initialization" do
46     
47     plugin = TestPlugin.new "resource_fixtures/good"
48     ResourceRegistration.reset
49     ResourceRegistration.register_plugin plugin
50     ResourceRegistration.route ResourceRegistration.resources
51
52 #    $stderr.puts ActionController::Routing::Routes.routes
53     
54     # root URI links to ResourcesController.index
55     assert_recognizes( { :controller => "resources", :action => "index" }, "/" )
56     # as does /resources
57     assert_routing( { :path => "/resources", :method => :get }, { :controller => "resources", :action => "index" } )
58     
59     # Ensure there is a route for every resource
60     ResourceRegistration.resources.each do |interface,implementations|
61       implementations.each do |implementation|
62         if implementation[:singular]
63           assert_generates "#{implementation[:controller]}", { :controller => "#{implementation[:controller]}", :action => :show }
64         else
65           assert_generates "#{implementation[:controller]}", { :controller => "#{implementation[:controller]}", :action => :index }
66         end
67       end
68     end
69   end
70   
71 end