diff --git a/lib/routes_upgrader.rb b/lib/routes_upgrader.rb index 9d98643..033c082 100644 --- a/lib/routes_upgrader.rb +++ b/lib/routes_upgrader.rb @@ -251,11 +251,15 @@ module Rails if @options[:conditions] @options[:via] = @options.delete(:conditions).delete(:method) end - + + if @options[:method] + @options[:via] = @options.delete(:method).to_s + end + @options ||= {} base = (base % [@path, @options.delete(:controller), (@options.delete(:action) || "index")]) opts = opts_to_string(@options) - + route_pieces = ([base] + extra_options + [opts]) route_pieces.delete("") diff --git a/test/routes_upgrader_test.rb b/test/routes_upgrader_test.rb index eda8135..bd438e4 100644 --- a/test/routes_upgrader_test.rb +++ b/test/routes_upgrader_test.rb @@ -145,6 +145,7 @@ end assert_equal new_routes_code, result end + def test_preserves_resources_except_option route = Rails::Upgrading::FakeResourceRoute.new("hats", :except => [:index]) assert_equal "resources :hats, :except => [:index]", route.to_route_code @@ -154,4 +155,22 @@ end route = Rails::Upgrading::FakeResourceRoute.new("hats", :only => :show) assert_equal "resources :hats, :only => :show", route.to_route_code end + + def test_generates_code_for_delete_route + routes_code = %Q{ + ActionController::Routing::Routes.draw do |map| + map.sign_out '/sign_out', :controller => 'sessions', :action => 'destroy', :method => :delete + end + } + + new_routes_code = %Q{ + MyApplication::Application.routes.draw do + match '/sign_out' => 'sessions#destroy', :as => :sign_out, :via => 'delete' + end + } + + upgrader = Rails::Upgrading::RoutesUpgrader.new + upgrader.routes_code = routes_code + assert_equal new_routes_code, upgrader.generate_new_routes + end end \ No newline at end of file