Permalink
Browse files

Fix invoke_layered since api_method didn't declare :expects. Closes #…

…4720. [Kevin Ballard <kevin@sb.org>, Kent Sibilev]

git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@4497 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
  • Loading branch information...
1 parent 236c732 commit 68a320ad2047c483b4b07cd51c5043cdef562adb Marcel Molina committed Jun 27, 2006
@@ -1,5 +1,7 @@
*SVN*
+* Fix invoke_layered since api_method didn't declare :expects. Closes #4720. [Kevin Ballard <kevin@sb.org>, Kent Sibilev]
+
* Replace alias method chaining with Module#alias_method_chain. [Marcel Molina Jr.]
* Replace Ruby's deprecated append_features in favor of included. [Marcel Molina Jr.]
@@ -52,7 +52,7 @@ def encode_rpc_call(service_name, api_method_name, *args)
end
protocol.register_api(api)
method = api.api_methods[api_method_name.to_sym]
- raise ArgumentError, "wrong number of arguments for rpc call (#{args.length} for #{method.expects.length})" unless args.length == method.expects.length
+ raise ArgumentError, "wrong number of arguments for rpc call (#{args.length} for #{method.expects.length})" if method && method.expects && args.length != method.expects.length
protocol.encode_request(public_method_name(service_name, api_method_name), args.dup, method.expects)
end
@@ -2,6 +2,7 @@
require 'action_web_service/test_invoke'
class TestInvokeAPI < ActionWebService::API::Base
+ api_method :null
api_method :add, :expects => [:int, :int], :returns => [:int]
end
@@ -14,6 +15,9 @@ def add(a, b)
@invoked = true
a + b
end
+
+ def null
+ end
end
class TestController < ActionController::Base
@@ -29,6 +33,9 @@ def add
@invoked = true
@method_params[0] + @method_params[1]
end
+
+ def null
+ end
end
class TestInvokeDelegatedController < TestController
@@ -97,4 +104,9 @@ def test_direct_fail_with_wrong_number_of_arguments
assert_raise(ArgumentError) { invoke :add, 1 }
end
+ def test_with_no_parameters_declared
+ @controller = TestInvokeDirectController.new
+ assert_nil invoke(:null)
+ end
+
end

0 comments on commit 68a320a

Please sign in to comment.