backlog 0.0.4 → 0.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (170) hide show
  1. data/History.txt +10 -0
  2. data/Rakefile +2 -1
  3. data/app/controllers/application.rb +55 -8
  4. data/app/controllers/groups_controller.rb +62 -0
  5. data/app/controllers/periods_controller.rb +13 -55
  6. data/app/controllers/tasks_controller.rb +9 -5
  7. data/app/controllers/works_controller.rb +43 -6
  8. data/app/helpers/application_helper.rb +20 -2
  9. data/app/helpers/groups_helper.rb +2 -0
  10. data/app/models/backlog.rb +19 -10
  11. data/app/models/estimate.rb +2 -1
  12. data/app/models/group.rb +11 -0
  13. data/app/models/party.rb +3 -0
  14. data/app/models/period.rb +43 -6
  15. data/app/models/task.rb +27 -14
  16. data/app/models/user.rb +37 -8
  17. data/app/models/work.rb +4 -6
  18. data/app/views/backlogs/_name_list.rhtml +5 -0
  19. data/app/views/backlogs/show.rhtml +4 -4
  20. data/app/views/groups/_form.rhtml +7 -0
  21. data/app/views/groups/edit.rhtml +31 -0
  22. data/app/views/groups/list.rhtml +27 -0
  23. data/app/views/groups/new.rhtml +8 -0
  24. data/app/views/layouts/wide.rhtml +2 -2
  25. data/app/views/periods/_burn_down_chart.rhtml +1 -1
  26. data/app/views/periods/_form.rhtml +13 -9
  27. data/app/views/periods/_show_active.rhtml +6 -12
  28. data/app/views/periods/_title.rhtml +4 -5
  29. data/app/views/periods/edit.rhtml +1 -1
  30. data/app/views/periods/new.rhtml +1 -1
  31. data/app/views/periods/show.rhtml +10 -6
  32. data/app/views/tasks/_backlog_header.rhtml +22 -0
  33. data/app/views/tasks/_description_list.rhtml +5 -0
  34. data/app/views/tasks/_form.rhtml +26 -7
  35. data/app/views/tasks/_task.rhtml +4 -4
  36. data/app/views/tasks/edit.rhtml +2 -3
  37. data/app/views/tasks/list_started.rhtml +1 -0
  38. data/app/views/tasks/new.rhtml +2 -2
  39. data/app/views/works/_buttons.rhtml +3 -0
  40. data/app/views/works/_form.rhtml +15 -10
  41. data/app/views/works/daily_work_sheet.rhtml +30 -18
  42. data/app/views/works/edit.rhtml +4 -4
  43. data/app/views/works/list.rhtml +2 -2
  44. data/app/views/works/new.rhtml +3 -2
  45. data/app/views/works/weekly_work_sheet.rhtml +2 -2
  46. data/bin/backlog +2 -0
  47. data/bin/backlog_init.d_kubosch_production +27 -0
  48. data/bin/copy_production2development.rb +33 -0
  49. data/config/database.yml +13 -7
  50. data/config/deploy_kubosch.rb +1 -0
  51. data/config/environment.rb +2 -0
  52. data/config/environments/development_mysql.rb +27 -0
  53. data/config/environments/kubosch_production_mysql.rb +21 -0
  54. data/config/routes.rb +1 -1
  55. data/db/migrate/{001_tasks.rb → 001_create_tasks.rb} +1 -1
  56. data/db/migrate/{002_backlogs.rb → 002_create_backlogs.rb} +2 -2
  57. data/db/migrate/003_add_estimation_points.rb +1 -1
  58. data/db/migrate/004_add_period.rb +2 -2
  59. data/db/migrate/013_create_estimates.rb +1 -1
  60. data/db/migrate/015_add_user_option.rb +9 -5
  61. data/db/migrate/017_insert_datek_projects.rb +13 -10
  62. data/db/migrate/018_create_groups.rb +115 -0
  63. data/db/schema.rb +72 -12
  64. data/lang/en.yaml +7 -0
  65. data/lang/no.yaml +7 -0
  66. data/lib/big_decimal_yaml_fix.rb +27 -0
  67. data/lib/class_table_inheritance.rb +163 -0
  68. data/lib/tasks/backup.rake +92 -0
  69. data/public/images/person.org.png +0 -0
  70. data/public/images/person.png +0 -0
  71. data/public/stylesheets/backlog.css +3 -1
  72. data/public/stylesheets/mwrt002.css +1 -1
  73. data/test/fixtures/groups.yml +6 -0
  74. data/test/fixtures/parties.yml +31 -0
  75. data/test/fixtures/periods.yml +2 -2
  76. data/test/fixtures/tasks.yml +2 -0
  77. data/test/fixtures/users.yml +6 -6
  78. data/test/functional/backlogs_controller_test.rb +1 -1
  79. data/test/functional/groups_controller_test.rb +120 -0
  80. data/test/functional/periods_controller_test.rb +1 -1
  81. data/test/functional/tasks_controller_test.rb +16 -1
  82. data/test/functional/user_controller_test.rb +8 -2
  83. data/test/test_helper.rb +5 -0
  84. data/test/unit/big_decimal_yaml_fix_test.rb +14 -0
  85. data/test/unit/estimate_test.rb +1 -1
  86. data/test/unit/group_test.rb +10 -0
  87. data/test/unit/user_test.rb +56 -44
  88. data/tmp/sessions/ruby_sess.22dec3e9df47fb4e +0 -0
  89. data/tmp/sessions/ruby_sess.8037e0ab58cbcf1a +0 -0
  90. data/vendor/plugins/activerecord_foreign_key_extensions/lib/active_record_extensions.rb +35 -0
  91. data/vendor/rails/actionmailer/test/fixtures/test_mailer/implicitly_multipart_example.rhtml.bak +1 -0
  92. data/vendor/rails/{actionwebservice/lib/action_web_service/templates/scaffolds/layout.rhtml → railties/configs/empty.log} +0 -0
  93. metadata +36 -105
  94. data/backlog.gemspec +0 -21
  95. data/vendor/rails/actionwebservice/CHANGELOG +0 -265
  96. data/vendor/rails/actionwebservice/MIT-LICENSE +0 -21
  97. data/vendor/rails/actionwebservice/README +0 -364
  98. data/vendor/rails/actionwebservice/Rakefile +0 -171
  99. data/vendor/rails/actionwebservice/TODO +0 -32
  100. data/vendor/rails/actionwebservice/examples/googlesearch/README +0 -143
  101. data/vendor/rails/actionwebservice/examples/googlesearch/autoloading/google_search_api.rb +0 -50
  102. data/vendor/rails/actionwebservice/examples/googlesearch/autoloading/google_search_controller.rb +0 -57
  103. data/vendor/rails/actionwebservice/examples/googlesearch/delegated/google_search_service.rb +0 -108
  104. data/vendor/rails/actionwebservice/examples/googlesearch/delegated/search_controller.rb +0 -7
  105. data/vendor/rails/actionwebservice/examples/googlesearch/direct/google_search_api.rb +0 -50
  106. data/vendor/rails/actionwebservice/examples/googlesearch/direct/search_controller.rb +0 -58
  107. data/vendor/rails/actionwebservice/examples/metaWeblog/README +0 -17
  108. data/vendor/rails/actionwebservice/examples/metaWeblog/apis/blogger_api.rb +0 -60
  109. data/vendor/rails/actionwebservice/examples/metaWeblog/apis/blogger_service.rb +0 -34
  110. data/vendor/rails/actionwebservice/examples/metaWeblog/apis/meta_weblog_api.rb +0 -67
  111. data/vendor/rails/actionwebservice/examples/metaWeblog/apis/meta_weblog_service.rb +0 -48
  112. data/vendor/rails/actionwebservice/examples/metaWeblog/controllers/xmlrpc_controller.rb +0 -16
  113. data/vendor/rails/actionwebservice/install.rb +0 -30
  114. data/vendor/rails/actionwebservice/lib/action_web_service.rb +0 -66
  115. data/vendor/rails/actionwebservice/lib/action_web_service/api.rb +0 -301
  116. data/vendor/rails/actionwebservice/lib/action_web_service/base.rb +0 -42
  117. data/vendor/rails/actionwebservice/lib/action_web_service/casting.rb +0 -138
  118. data/vendor/rails/actionwebservice/lib/action_web_service/client.rb +0 -3
  119. data/vendor/rails/actionwebservice/lib/action_web_service/client/base.rb +0 -28
  120. data/vendor/rails/actionwebservice/lib/action_web_service/client/soap_client.rb +0 -113
  121. data/vendor/rails/actionwebservice/lib/action_web_service/client/xmlrpc_client.rb +0 -58
  122. data/vendor/rails/actionwebservice/lib/action_web_service/container.rb +0 -3
  123. data/vendor/rails/actionwebservice/lib/action_web_service/container/action_controller_container.rb +0 -93
  124. data/vendor/rails/actionwebservice/lib/action_web_service/container/delegated_container.rb +0 -86
  125. data/vendor/rails/actionwebservice/lib/action_web_service/container/direct_container.rb +0 -69
  126. data/vendor/rails/actionwebservice/lib/action_web_service/dispatcher.rb +0 -2
  127. data/vendor/rails/actionwebservice/lib/action_web_service/dispatcher/abstract.rb +0 -207
  128. data/vendor/rails/actionwebservice/lib/action_web_service/dispatcher/action_controller_dispatcher.rb +0 -379
  129. data/vendor/rails/actionwebservice/lib/action_web_service/invocation.rb +0 -202
  130. data/vendor/rails/actionwebservice/lib/action_web_service/protocol.rb +0 -4
  131. data/vendor/rails/actionwebservice/lib/action_web_service/protocol/abstract.rb +0 -112
  132. data/vendor/rails/actionwebservice/lib/action_web_service/protocol/discovery.rb +0 -37
  133. data/vendor/rails/actionwebservice/lib/action_web_service/protocol/soap_protocol.rb +0 -176
  134. data/vendor/rails/actionwebservice/lib/action_web_service/protocol/soap_protocol/marshaler.rb +0 -235
  135. data/vendor/rails/actionwebservice/lib/action_web_service/protocol/xmlrpc_protocol.rb +0 -122
  136. data/vendor/rails/actionwebservice/lib/action_web_service/scaffolding.rb +0 -283
  137. data/vendor/rails/actionwebservice/lib/action_web_service/struct.rb +0 -68
  138. data/vendor/rails/actionwebservice/lib/action_web_service/support/class_inheritable_options.rb +0 -26
  139. data/vendor/rails/actionwebservice/lib/action_web_service/support/signature_types.rb +0 -226
  140. data/vendor/rails/actionwebservice/lib/action_web_service/templates/scaffolds/layout.erb +0 -65
  141. data/vendor/rails/actionwebservice/lib/action_web_service/templates/scaffolds/methods.erb +0 -6
  142. data/vendor/rails/actionwebservice/lib/action_web_service/templates/scaffolds/methods.rhtml +0 -0
  143. data/vendor/rails/actionwebservice/lib/action_web_service/templates/scaffolds/parameters.erb +0 -29
  144. data/vendor/rails/actionwebservice/lib/action_web_service/templates/scaffolds/parameters.rhtml +0 -0
  145. data/vendor/rails/actionwebservice/lib/action_web_service/templates/scaffolds/result.erb +0 -30
  146. data/vendor/rails/actionwebservice/lib/action_web_service/templates/scaffolds/result.rhtml +0 -0
  147. data/vendor/rails/actionwebservice/lib/action_web_service/test_invoke.rb +0 -110
  148. data/vendor/rails/actionwebservice/lib/action_web_service/version.rb +0 -9
  149. data/vendor/rails/actionwebservice/setup.rb +0 -1379
  150. data/vendor/rails/actionwebservice/test/abstract_client.rb +0 -183
  151. data/vendor/rails/actionwebservice/test/abstract_dispatcher.rb +0 -551
  152. data/vendor/rails/actionwebservice/test/abstract_unit.rb +0 -45
  153. data/vendor/rails/actionwebservice/test/api_test.rb +0 -102
  154. data/vendor/rails/actionwebservice/test/apis/auto_load_api.rb +0 -3
  155. data/vendor/rails/actionwebservice/test/apis/broken_auto_load_api.rb +0 -2
  156. data/vendor/rails/actionwebservice/test/base_test.rb +0 -42
  157. data/vendor/rails/actionwebservice/test/casting_test.rb +0 -86
  158. data/vendor/rails/actionwebservice/test/client_soap_test.rb +0 -153
  159. data/vendor/rails/actionwebservice/test/client_xmlrpc_test.rb +0 -152
  160. data/vendor/rails/actionwebservice/test/container_test.rb +0 -73
  161. data/vendor/rails/actionwebservice/test/dispatcher_action_controller_soap_test.rb +0 -137
  162. data/vendor/rails/actionwebservice/test/dispatcher_action_controller_xmlrpc_test.rb +0 -59
  163. data/vendor/rails/actionwebservice/test/fixtures/db_definitions/mysql.sql +0 -8
  164. data/vendor/rails/actionwebservice/test/fixtures/users.yml +0 -12
  165. data/vendor/rails/actionwebservice/test/gencov +0 -3
  166. data/vendor/rails/actionwebservice/test/invocation_test.rb +0 -185
  167. data/vendor/rails/actionwebservice/test/run +0 -6
  168. data/vendor/rails/actionwebservice/test/scaffolded_controller_test.rb +0 -146
  169. data/vendor/rails/actionwebservice/test/struct_test.rb +0 -52
  170. data/vendor/rails/actionwebservice/test/test_invoke_test.rb +0 -112
@@ -1,45 +0,0 @@
1
- ENV["RAILS_ENV"] = "test"
2
- $:.unshift(File.dirname(__FILE__) + '/../lib')
3
- $:.unshift(File.dirname(__FILE__) + '/../../activesupport/lib')
4
- $:.unshift(File.dirname(__FILE__) + '/../../actionpack/lib')
5
- $:.unshift(File.dirname(__FILE__) + '/../../activerecord/lib')
6
-
7
- require 'test/unit'
8
- require 'action_web_service'
9
- require 'action_controller'
10
- require 'action_controller/test_process'
11
-
12
- # Show backtraces for deprecated behavior for quicker cleanup.
13
- ActiveSupport::Deprecation.debug = true
14
-
15
-
16
- ActionController::Base.logger = Logger.new("debug.log")
17
- ActionController::Base.ignore_missing_templates = true
18
-
19
- begin
20
- PATH_TO_AR = File.dirname(__FILE__) + '/../../activerecord'
21
- require "#{PATH_TO_AR}/lib/active_record" unless Object.const_defined?(:ActiveRecord)
22
- require "#{PATH_TO_AR}/lib/active_record/fixtures" unless Object.const_defined?(:Fixtures)
23
- rescue LoadError => e
24
- fail "\nFailed to load activerecord: #{e}"
25
- end
26
-
27
- ActiveRecord::Base.configurations = {
28
- 'mysql' => {
29
- :adapter => "mysql",
30
- :username => "rails",
31
- :encoding => "utf8",
32
- :database => "actionwebservice_unittest"
33
- }
34
- }
35
-
36
- ActiveRecord::Base.establish_connection 'mysql'
37
-
38
- Test::Unit::TestCase.fixture_path = "#{File.dirname(__FILE__)}/fixtures/"
39
-
40
- # restore default raw_post functionality
41
- class ActionController::TestRequest
42
- def raw_post
43
- super
44
- end
45
- end
@@ -1,102 +0,0 @@
1
- require File.dirname(__FILE__) + '/abstract_unit'
2
-
3
- module APITest
4
- class API < ActionWebService::API::Base
5
- api_method :void
6
- api_method :expects_and_returns, :expects_and_returns => [:string]
7
- api_method :expects, :expects => [:int, :bool]
8
- api_method :returns, :returns => [:int, [:string]]
9
- api_method :named_signature, :expects => [{:appkey=>:int}, {:publish=>:bool}]
10
- api_method :string_types, :expects => ['int', 'string', 'bool', 'base64']
11
- api_method :class_types, :expects => [TrueClass, Bignum, String]
12
- end
13
- end
14
-
15
- class TC_API < Test::Unit::TestCase
16
- API = APITest::API
17
-
18
- def test_api_method_declaration
19
- %w(
20
- void
21
- expects_and_returns
22
- expects
23
- returns
24
- named_signature
25
- string_types
26
- class_types
27
- ).each do |name|
28
- name = name.to_sym
29
- public_name = API.public_api_method_name(name)
30
- assert(API.has_api_method?(name))
31
- assert(API.has_public_api_method?(public_name))
32
- assert(API.api_method_name(public_name) == name)
33
- assert(API.api_methods.has_key?(name))
34
- end
35
- end
36
-
37
- def test_signature_canonicalization
38
- assert_equal(nil, API.api_methods[:void].expects)
39
- assert_equal(nil, API.api_methods[:void].returns)
40
- assert_equal([String], API.api_methods[:expects_and_returns].expects.map{|x| x.type_class})
41
- assert_equal([String], API.api_methods[:expects_and_returns].returns.map{|x| x.type_class})
42
- assert_equal([Integer, TrueClass], API.api_methods[:expects].expects.map{|x| x.type_class})
43
- assert_equal(nil, API.api_methods[:expects].returns)
44
- assert_equal(nil, API.api_methods[:returns].expects)
45
- assert_equal([Integer, [String]], API.api_methods[:returns].returns.map{|x| x.array?? [x.element_type.type_class] : x.type_class})
46
- assert_equal([[:appkey, Integer], [:publish, TrueClass]], API.api_methods[:named_signature].expects.map{|x| [x.name, x.type_class]})
47
- assert_equal(nil, API.api_methods[:named_signature].returns)
48
- assert_equal([Integer, String, TrueClass, ActionWebService::Base64], API.api_methods[:string_types].expects.map{|x| x.type_class})
49
- assert_equal(nil, API.api_methods[:string_types].returns)
50
- assert_equal([TrueClass, Integer, String], API.api_methods[:class_types].expects.map{|x| x.type_class})
51
- assert_equal(nil, API.api_methods[:class_types].returns)
52
- end
53
-
54
- def test_not_instantiable
55
- assert_raises(NoMethodError) do
56
- API.new
57
- end
58
- end
59
-
60
- def test_api_errors
61
- assert_raises(ActionWebService::ActionWebServiceError) do
62
- klass = Class.new(ActionWebService::API::Base) do
63
- api_method :test, :expects => [ActiveRecord::Base]
64
- end
65
- end
66
- klass = Class.new(ActionWebService::API::Base) do
67
- allow_active_record_expects true
68
- api_method :test2, :expects => [ActiveRecord::Base]
69
- end
70
- assert_raises(ActionWebService::ActionWebServiceError) do
71
- klass = Class.new(ActionWebService::API::Base) do
72
- api_method :test, :invalid => [:int]
73
- end
74
- end
75
- end
76
-
77
- def test_parameter_names
78
- method = API.api_methods[:named_signature]
79
- assert_equal 0, method.expects_index_of(:appkey)
80
- assert_equal 1, method.expects_index_of(:publish)
81
- assert_equal 1, method.expects_index_of('publish')
82
- assert_equal 0, method.expects_index_of('appkey')
83
- assert_equal -1, method.expects_index_of('blah')
84
- assert_equal -1, method.expects_index_of(:missing)
85
- assert_equal -1, API.api_methods[:void].expects_index_of('test')
86
- end
87
-
88
- def test_parameter_hash
89
- method = API.api_methods[:named_signature]
90
- hash = method.expects_to_hash([5, false])
91
- assert_equal({:appkey => 5, :publish => false}, hash)
92
- end
93
-
94
- def test_api_methods_compat
95
- sig = API.api_methods[:named_signature][:expects]
96
- assert_equal [{:appkey=>Integer}, {:publish=>TrueClass}], sig
97
- end
98
-
99
- def test_to_s
100
- assert_equal 'void Expects(int param0, bool param1)', APITest::API.api_methods[:expects].to_s
101
- end
102
- end
@@ -1,3 +0,0 @@
1
- class AutoLoadAPI < ActionWebService::API::Base
2
- api_method :void
3
- end
@@ -1,42 +0,0 @@
1
- require File.dirname(__FILE__) + '/abstract_unit'
2
-
3
- module BaseTest
4
- class API < ActionWebService::API::Base
5
- api_method :add, :expects => [:int, :int], :returns => [:int]
6
- api_method :void
7
- end
8
-
9
- class PristineAPI < ActionWebService::API::Base
10
- inflect_names false
11
-
12
- api_method :add
13
- api_method :under_score
14
- end
15
-
16
- class Service < ActionWebService::Base
17
- web_service_api API
18
-
19
- def add(a, b)
20
- end
21
-
22
- def void
23
- end
24
- end
25
-
26
- class PristineService < ActionWebService::Base
27
- web_service_api PristineAPI
28
-
29
- def add
30
- end
31
-
32
- def under_score
33
- end
34
- end
35
- end
36
-
37
- class TC_Base < Test::Unit::TestCase
38
- def test_options
39
- assert(BaseTest::PristineService.web_service_api.inflect_names == false)
40
- assert(BaseTest::Service.web_service_api.inflect_names == true)
41
- end
42
- end
@@ -1,86 +0,0 @@
1
- require File.dirname(__FILE__) + '/abstract_unit'
2
-
3
- module CastingTest
4
- class API < ActionWebService::API::Base
5
- api_method :int, :expects => [:int]
6
- api_method :str, :expects => [:string]
7
- api_method :base64, :expects => [:base64]
8
- api_method :bool, :expects => [:bool]
9
- api_method :float, :expects => [:float]
10
- api_method :time, :expects => [:time]
11
- api_method :datetime, :expects => [:datetime]
12
- api_method :date, :expects => [:date]
13
-
14
- api_method :int_array, :expects => [[:int]]
15
- api_method :str_array, :expects => [[:string]]
16
- api_method :bool_array, :expects => [[:bool]]
17
- end
18
- end
19
-
20
- class TC_Casting < Test::Unit::TestCase
21
- include CastingTest
22
-
23
- def test_base_type_casting_valid
24
- assert_equal 10000, cast_expects(:int, '10000')[0]
25
- assert_equal '10000', cast_expects(:str, 10000)[0]
26
- base64 = cast_expects(:base64, 10000)[0]
27
- assert_equal '10000', base64
28
- assert_instance_of ActionWebService::Base64, base64
29
- [1, '1', 'true', 'y', 'yes'].each do |val|
30
- assert_equal true, cast_expects(:bool, val)[0]
31
- end
32
- [0, '0', 'false', 'n', 'no'].each do |val|
33
- assert_equal false, cast_expects(:bool, val)[0]
34
- end
35
- assert_equal 3.14159, cast_expects(:float, '3.14159')[0]
36
- now = Time.at(Time.now.tv_sec)
37
- casted = cast_expects(:time, now.to_s)[0]
38
- assert_equal now, casted
39
- now = DateTime.now
40
- assert_equal now.to_s, cast_expects(:datetime, now.to_s)[0].to_s
41
- today = Date.today
42
- assert_equal today, cast_expects(:date, today.to_s)[0]
43
- end
44
-
45
- def test_base_type_casting_invalid
46
- assert_raises ArgumentError do
47
- cast_expects(:int, 'this is not a number')
48
- end
49
- assert_raises ActionWebService::Casting::CastingError do
50
- # neither true or false ;)
51
- cast_expects(:bool, 'i always lie')
52
- end
53
- assert_raises ArgumentError do
54
- cast_expects(:float, 'not a float')
55
- end
56
- assert_raises ArgumentError do
57
- cast_expects(:time, '111111111111111111111111111111111')
58
- end
59
- assert_raises ArgumentError do
60
- cast_expects(:datetime, '-1')
61
- end
62
- assert_raises ArgumentError do
63
- cast_expects(:date, '')
64
- end
65
- end
66
-
67
- def test_array_type_casting
68
- assert_equal [1, 2, 3213992, 4], cast_expects(:int_array, ['1', '2', '3213992', '4'])[0]
69
- assert_equal ['one', 'two', '5.0', '200', nil, 'true'], cast_expects(:str_array, [:one, 'two', 5.0, 200, nil, true])[0]
70
- assert_equal [true, nil, true, true, false], cast_expects(:bool_array, ['1', nil, 'y', true, 'false'])[0]
71
- end
72
-
73
- def test_array_type_casting_failure
74
- assert_raises ActionWebService::Casting::CastingError do
75
- cast_expects(:bool_array, ['false', 'blahblah'])
76
- end
77
- assert_raises ArgumentError do
78
- cast_expects(:int_array, ['1', '2.021', '4'])
79
- end
80
- end
81
-
82
- private
83
- def cast_expects(method_name, *args)
84
- API.api_method_instance(method_name.to_sym).cast_expects([*args])
85
- end
86
- end
@@ -1,153 +0,0 @@
1
- require File.dirname(__FILE__) + '/abstract_client'
2
-
3
-
4
- module ClientSoapTest
5
- PORT = 8998
6
-
7
- class SoapClientLet < ClientTest::AbstractClientLet
8
- def do_POST(req, res)
9
- test_request = ActionController::TestRequest.new
10
- test_request.request_parameters['action'] = req.path.gsub(/^\//, '').split(/\//)[1]
11
- test_request.env['REQUEST_METHOD'] = "POST"
12
- test_request.env['HTTP_CONTENTTYPE'] = 'text/xml'
13
- test_request.env['HTTP_SOAPACTION'] = req.header['soapaction'][0]
14
- test_request.env['RAW_POST_DATA'] = req.body
15
- response = ActionController::TestResponse.new
16
- @controller.process(test_request, response)
17
- res.header['content-type'] = 'text/xml'
18
- res.body = response.body
19
- rescue Exception => e
20
- $stderr.puts e.message
21
- $stderr.puts e.backtrace.join("\n")
22
- end
23
- end
24
-
25
- class ClientContainer < ActionController::Base
26
- web_client_api :client, :soap, "http://localhost:#{PORT}/client/api", :api => ClientTest::API
27
- web_client_api :invalid, :null, "", :api => true
28
-
29
- def get_client
30
- client
31
- end
32
-
33
- def get_invalid
34
- invalid
35
- end
36
- end
37
-
38
- class SoapServer < ClientTest::AbstractServer
39
- def create_clientlet(controller)
40
- SoapClientLet.new(controller)
41
- end
42
-
43
- def server_port
44
- PORT
45
- end
46
- end
47
- end
48
-
49
- class TC_ClientSoap < Test::Unit::TestCase
50
- include ClientTest
51
- include ClientSoapTest
52
-
53
- fixtures :users
54
-
55
- def setup
56
- @server = SoapServer.instance
57
- @container = @server.container
58
- @client = ActionWebService::Client::Soap.new(API, "http://localhost:#{@server.server_port}/client/api")
59
- end
60
-
61
- def test_void
62
- assert(@container.value_void.nil?)
63
- @client.void
64
- assert(!@container.value_void.nil?)
65
- end
66
-
67
- def test_normal
68
- assert(@container.value_normal.nil?)
69
- assert_equal(5, @client.normal(5, 6))
70
- assert_equal([5, 6], @container.value_normal)
71
- assert_equal(5, @client.normal("7", "8"))
72
- assert_equal([7, 8], @container.value_normal)
73
- assert_equal(5, @client.normal(true, false))
74
- end
75
-
76
- def test_array_return
77
- assert(@container.value_array_return.nil?)
78
- new_person = Person.new
79
- new_person.firstnames = ["one", "two"]
80
- new_person.lastname = "last"
81
- assert_equal([new_person], @client.array_return)
82
- assert_equal([new_person], @container.value_array_return)
83
- end
84
-
85
- def test_struct_pass
86
- assert(@container.value_struct_pass.nil?)
87
- new_person = Person.new
88
- new_person.firstnames = ["one", "two"]
89
- new_person.lastname = "last"
90
- assert_equal(true, @client.struct_pass([new_person]))
91
- assert_equal([[new_person]], @container.value_struct_pass)
92
- end
93
-
94
- def test_nil_struct_return
95
- assert_nil @client.nil_struct_return
96
- end
97
-
98
- def test_inner_nil
99
- outer = @client.inner_nil
100
- assert_equal 'outer', outer.name
101
- assert_nil outer.inner
102
- end
103
-
104
- def test_client_container
105
- assert_equal(50, ClientContainer.new.get_client.client_container)
106
- assert(ClientContainer.new.get_invalid.nil?)
107
- end
108
-
109
- def test_named_parameters
110
- assert(@container.value_named_parameters.nil?)
111
- assert(@client.named_parameters("key", 5).nil?)
112
- assert_equal(["key", 5], @container.value_named_parameters)
113
- end
114
-
115
- def test_capitalized_method_name
116
- @container.value_normal = nil
117
- assert_equal(5, @client.Normal(5, 6))
118
- assert_equal([5, 6], @container.value_normal)
119
- @container.value_normal = nil
120
- end
121
-
122
- def test_model_return
123
- user = @client.user_return
124
- assert_equal 1, user.id
125
- assert_equal 'Kent', user.name
126
- assert user.active?
127
- assert_kind_of Date, user.created_on
128
- assert_equal Date.today, user.created_on
129
- assert_equal BigDecimal('12.2'), user.balance
130
- end
131
-
132
- def test_with_model
133
- with_model = @client.with_model_return
134
- assert_equal 'Kent', with_model.user.name
135
- assert_equal 2, with_model.users.size
136
- with_model.users.each do |user|
137
- assert_kind_of User, user
138
- end
139
- end
140
-
141
- def test_scoped_model_return
142
- scoped_model = @client.scoped_model_return
143
- assert_kind_of Accounting::User, scoped_model
144
- assert_equal 'Kent', scoped_model.name
145
- end
146
-
147
- def test_multi_dim_return
148
- md_struct = @client.multi_dim_return
149
- assert_kind_of Array, md_struct.pref
150
- assert_equal 2, md_struct.pref.size
151
- assert_kind_of Array, md_struct.pref[0]
152
- end
153
- end
@@ -1,152 +0,0 @@
1
- require File.dirname(__FILE__) + '/abstract_client'
2
-
3
-
4
- module ClientXmlRpcTest
5
- PORT = 8999
6
-
7
- class XmlRpcClientLet < ClientTest::AbstractClientLet
8
- def do_POST(req, res)
9
- test_request = ActionController::TestRequest.new
10
- test_request.request_parameters['action'] = req.path.gsub(/^\//, '').split(/\//)[1]
11
- test_request.env['REQUEST_METHOD'] = "POST"
12
- test_request.env['HTTP_CONTENT_TYPE'] = 'text/xml'
13
- test_request.env['RAW_POST_DATA'] = req.body
14
- response = ActionController::TestResponse.new
15
- @controller.process(test_request, response)
16
- res.header['content-type'] = 'text/xml'
17
- res.body = response.body
18
- # puts res.body
19
- rescue Exception => e
20
- $stderr.puts e.message
21
- $stderr.puts e.backtrace.join("\n")
22
- end
23
- end
24
-
25
- class ClientContainer < ActionController::Base
26
- web_client_api :client, :xmlrpc, "http://localhost:#{PORT}/client/api", :api => ClientTest::API
27
-
28
- def get_client
29
- client
30
- end
31
- end
32
-
33
- class XmlRpcServer < ClientTest::AbstractServer
34
- def create_clientlet(controller)
35
- XmlRpcClientLet.new(controller)
36
- end
37
-
38
- def server_port
39
- PORT
40
- end
41
- end
42
- end
43
-
44
- class TC_ClientXmlRpc < Test::Unit::TestCase
45
- include ClientTest
46
- include ClientXmlRpcTest
47
-
48
- fixtures :users
49
-
50
- def setup
51
- @server = XmlRpcServer.instance
52
- @container = @server.container
53
- @client = ActionWebService::Client::XmlRpc.new(API, "http://localhost:#{@server.server_port}/client/api")
54
- end
55
-
56
- def test_void
57
- assert(@container.value_void.nil?)
58
- @client.void
59
- assert(!@container.value_void.nil?)
60
- end
61
-
62
- def test_normal
63
- assert(@container.value_normal.nil?)
64
- assert_equal(5, @client.normal(5, 6))
65
- assert_equal([5, 6], @container.value_normal)
66
- assert_equal(5, @client.normal("7", "8"))
67
- assert_equal([7, 8], @container.value_normal)
68
- assert_equal(5, @client.normal(true, false))
69
- end
70
-
71
- def test_array_return
72
- assert(@container.value_array_return.nil?)
73
- new_person = Person.new
74
- new_person.firstnames = ["one", "two"]
75
- new_person.lastname = "last"
76
- assert_equal([new_person], @client.array_return)
77
- assert_equal([new_person], @container.value_array_return)
78
- end
79
-
80
- def test_struct_pass
81
- assert(@container.value_struct_pass.nil?)
82
- new_person = Person.new
83
- new_person.firstnames = ["one", "two"]
84
- new_person.lastname = "last"
85
- assert_equal(true, @client.struct_pass([new_person]))
86
- assert_equal([[new_person]], @container.value_struct_pass)
87
- end
88
-
89
- def test_nil_struct_return
90
- assert_equal false, @client.nil_struct_return
91
- end
92
-
93
- def test_inner_nil
94
- outer = @client.inner_nil
95
- assert_equal 'outer', outer.name
96
- assert_nil outer.inner
97
- end
98
-
99
- def test_client_container
100
- assert_equal(50, ClientContainer.new.get_client.client_container)
101
- end
102
-
103
- def test_named_parameters
104
- assert(@container.value_named_parameters.nil?)
105
- assert_equal(false, @client.named_parameters("xxx", 7))
106
- assert_equal(["xxx", 7], @container.value_named_parameters)
107
- end
108
-
109
- def test_exception
110
- assert_raises(ActionWebService::Client::ClientError) do
111
- assert(@client.thrower)
112
- end
113
- end
114
-
115
- def test_invalid_signature
116
- assert_raises(ArgumentError) do
117
- @client.normal
118
- end
119
- end
120
-
121
- def test_model_return
122
- user = @client.user_return
123
- assert_equal 1, user.id
124
- assert_equal 'Kent', user.name
125
- assert user.active?
126
- assert_kind_of Time, user.created_on
127
- assert_equal Time.utc(Time.now.year, Time.now.month, Time.now.day), user.created_on
128
- assert_equal BigDecimal('12.2'), user.balance
129
- end
130
-
131
- def test_with_model
132
- with_model = @client.with_model_return
133
- assert_equal 'Kent', with_model.user.name
134
- assert_equal 2, with_model.users.size
135
- with_model.users.each do |user|
136
- assert_kind_of User, user
137
- end
138
- end
139
-
140
- def test_scoped_model_return
141
- scoped_model = @client.scoped_model_return
142
- assert_kind_of Accounting::User, scoped_model
143
- assert_equal 'Kent', scoped_model.name
144
- end
145
-
146
- def test_multi_dim_return
147
- md_struct = @client.multi_dim_return
148
- assert_kind_of Array, md_struct.pref
149
- assert_equal 2, md_struct.pref.size
150
- assert_kind_of Array, md_struct.pref[0]
151
- end
152
- end