aboutsummaryrefslogtreecommitdiffstats
path: root/actionwebservice/test/test_invoke_test.rb
diff options
context:
space:
mode:
authorLeon Breedt <bitserf@gmail.com>2005-03-04 10:07:53 +0000
committerLeon Breedt <bitserf@gmail.com>2005-03-04 10:07:53 +0000
commitd43392a50b4f7023b13747a67c4a6aa85e4036c4 (patch)
tree66203f6fceae6c4d7489a10664fddc9afd9d53be /actionwebservice/test/test_invoke_test.rb
parentb78283b3fcae6752e7f1698cc063eff6214d2104 (diff)
downloadrails-d43392a50b4f7023b13747a67c4a6aa85e4036c4.tar.gz
rails-d43392a50b4f7023b13747a67c4a6aa85e4036c4.tar.bz2
rails-d43392a50b4f7023b13747a67c4a6aa85e4036c4.zip
add action_web_service/test_invoke, will be used by for testing APIs in
a Rails project instance. git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@830 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
Diffstat (limited to 'actionwebservice/test/test_invoke_test.rb')
-rw-r--r--actionwebservice/test/test_invoke_test.rb77
1 files changed, 77 insertions, 0 deletions
diff --git a/actionwebservice/test/test_invoke_test.rb b/actionwebservice/test/test_invoke_test.rb
new file mode 100644
index 0000000000..cbfde9c3df
--- /dev/null
+++ b/actionwebservice/test/test_invoke_test.rb
@@ -0,0 +1,77 @@
+require File.dirname(__FILE__) + '/abstract_unit'
+require 'action_web_service/test_invoke'
+
+class TestInvokeAPI < ActionWebService::API::Base
+ api_method :add, :expects => [:int, :int], :returns => [:int]
+end
+
+class TestInvokeService < ActionWebService::Base
+ web_service_api TestInvokeAPI
+
+ attr :invoked
+
+ def add(a, b)
+ @invoked = true
+ a + b
+ end
+end
+
+class TestController < ActionController::Base
+ def rescue_action(e); raise e; end
+end
+
+class TestInvokeDirectController < TestController
+ web_service_api TestInvokeAPI
+
+ attr :invoked
+
+ def add
+ @invoked = true
+ @method_params[0] + @method_params[1]
+ end
+end
+
+class TestInvokeDelegatedController < TestController
+ web_service_dispatching_mode :delegated
+ web_service :service, TestInvokeService.new
+end
+
+class TestInvokeLayeredController < TestController
+ web_service_dispatching_mode :layered
+ web_service :one, TestInvokeService.new
+ web_service :two, TestInvokeService.new
+end
+
+class TestInvokeTest < Test::Unit::TestCase
+ def setup
+ @request = ActionController::TestRequest.new
+ @response = ActionController::TestResponse.new
+ end
+
+ def test_direct_add
+ @controller = TestInvokeDirectController.new
+ assert_equal nil, @controller.invoked
+ result = invoke :add, 25, 25
+ assert_equal 50, result
+ assert_equal true, @controller.invoked
+ end
+
+ def test_delegated_add
+ @controller = TestInvokeDelegatedController.new
+ assert_equal nil, @controller.web_service_object(:service).invoked
+ result = invoke_delegated :service, :add, 100, 50
+ assert_equal 150, result
+ assert_equal true, @controller.web_service_object(:service).invoked
+ end
+
+ def test_layered_add
+ @protocol = :xmlrpc
+ @controller = TestInvokeLayeredController.new
+ [:one, :two].each do |service|
+ assert_equal nil, @controller.web_service_object(service).invoked
+ result = invoke_layered service, :add, 200, -50
+ assert_equal 150, result
+ assert_equal true, @controller.web_service_object(service).invoked
+ end
+ end
+end