kangaroo 0.0.1.pre

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 (68) hide show
  1. data/.gitignore +1 -0
  2. data/.rspec +2 -0
  3. data/.yardopts +6 -0
  4. data/Gemfile +2 -0
  5. data/Gemfile.lock +66 -0
  6. data/LICENSE +22 -0
  7. data/README.md +65 -0
  8. data/Rakefile +36 -0
  9. data/config/kangaroo.yml.sample +12 -0
  10. data/docs/AdditionalServices.md +3 -0
  11. data/docs/Architecture.md +50 -0
  12. data/docs/Installation.md +73 -0
  13. data/docs/Usage.md +161 -0
  14. data/features/connection.feature +5 -0
  15. data/features/env.rb +8 -0
  16. data/features/step_definitions/basic_steps.rb +24 -0
  17. data/features/step_definitions/connection_steps.rb +13 -0
  18. data/features/support/test.yml +11 -0
  19. data/features/utility_services.feature +39 -0
  20. data/kangaroo.gemspec +29 -0
  21. data/lib/kangaroo.rb +6 -0
  22. data/lib/kangaroo/exception.rb +7 -0
  23. data/lib/kangaroo/model/attributes.rb +124 -0
  24. data/lib/kangaroo/model/base.rb +70 -0
  25. data/lib/kangaroo/model/condition_normalizer.rb +63 -0
  26. data/lib/kangaroo/model/default_attributes.rb +22 -0
  27. data/lib/kangaroo/model/field.rb +20 -0
  28. data/lib/kangaroo/model/finder.rb +92 -0
  29. data/lib/kangaroo/model/inspector.rb +55 -0
  30. data/lib/kangaroo/model/open_object_orm.rb +117 -0
  31. data/lib/kangaroo/model/persistence.rb +180 -0
  32. data/lib/kangaroo/model/relation.rb +212 -0
  33. data/lib/kangaroo/model/remote_execute.rb +29 -0
  34. data/lib/kangaroo/railtie.rb +13 -0
  35. data/lib/kangaroo/ruby_adapter/base.rb +28 -0
  36. data/lib/kangaroo/ruby_adapter/class_definition.rb +46 -0
  37. data/lib/kangaroo/ruby_adapter/fields.rb +18 -0
  38. data/lib/kangaroo/util/client.rb +59 -0
  39. data/lib/kangaroo/util/configuration.rb +82 -0
  40. data/lib/kangaroo/util/database.rb +92 -0
  41. data/lib/kangaroo/util/loader.rb +98 -0
  42. data/lib/kangaroo/util/loader/model.rb +21 -0
  43. data/lib/kangaroo/util/loader/namespace.rb +15 -0
  44. data/lib/kangaroo/util/proxy.rb +35 -0
  45. data/lib/kangaroo/util/proxy/common.rb +111 -0
  46. data/lib/kangaroo/util/proxy/db.rb +34 -0
  47. data/lib/kangaroo/util/proxy/object.rb +153 -0
  48. data/lib/kangaroo/util/proxy/report.rb +24 -0
  49. data/lib/kangaroo/util/proxy/superadmin.rb +71 -0
  50. data/lib/kangaroo/util/proxy/wizard.rb +25 -0
  51. data/lib/kangaroo/util/proxy/workflow.rb +14 -0
  52. data/lib/kangaroo/version.rb +3 -0
  53. data/spec/model/attributes_spec.rb +70 -0
  54. data/spec/model/base_spec.rb +19 -0
  55. data/spec/model/default_attributes_spec.rb +37 -0
  56. data/spec/model/finder_spec.rb +104 -0
  57. data/spec/model/inspector_spec.rb +56 -0
  58. data/spec/model/open_object_orm_spec.rb +134 -0
  59. data/spec/model/persistence_spec.rb +53 -0
  60. data/spec/model/relation_spec.rb +122 -0
  61. data/spec/ruby_adapter/class_definition_spec.rb +51 -0
  62. data/spec/server_helper.rb +167 -0
  63. data/spec/spec_helper.rb +14 -0
  64. data/spec/test_env/test.yml +11 -0
  65. data/spec/util/configuration_spec.rb +36 -0
  66. data/spec/util/loader_spec.rb +50 -0
  67. data/spec/util/proxy_spec.rb +61 -0
  68. metadata +260 -0
@@ -0,0 +1,50 @@
1
+ require 'spec_helper'
2
+ require 'server_helper'
3
+
4
+ require 'kangaroo/util/loader'
5
+
6
+ module Kangaroo
7
+ module Util
8
+ describe Loader do
9
+ # include TestServerHelper
10
+
11
+ def config_file
12
+ File.join File.dirname(__FILE__), '..', 'test_env', 'test.yml'
13
+ end
14
+
15
+ it "replaces wildcards in model names" do
16
+ loader = Loader.new ['res.*']
17
+
18
+ loader.model_names.should == ['res.%']
19
+ end
20
+
21
+ it "uses global wildcard if model_names = :all" do
22
+ loader = Loader.new :all
23
+
24
+ loader.model_names.should == ['%']
25
+ end
26
+
27
+ it 'raises error if model_names = nil or empty' do
28
+ lambda { Loader.new nil }.should raise_error
29
+ lambda { Loader.new [] }.should raise_error
30
+ end
31
+
32
+ it 'loads matching models from OpenERP' do
33
+ loader = Loader.new ['res.*']
34
+
35
+ loaded_model = mock 'loaded_model'
36
+ loaded_model.stub!('length_of_model_name').and_return(1)
37
+ ruby_adapter = mock 'ruby_adapter'
38
+ ruby_adapter.stub! 'to_ruby'
39
+ RubyAdapter::Base.should_receive(:new).with(loaded_model).and_return(ruby_adapter)
40
+
41
+ Oo::Ir::Model = mock 'model'
42
+ relation = mock 'relation'
43
+ relation.should_receive(:all).and_return([loaded_model])
44
+ Oo::Ir::Model.should_receive(:where).with(/res\.%/).and_return(relation)
45
+
46
+ loader.load!
47
+ end
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,61 @@
1
+ require 'spec_helper'
2
+ require 'server_helper'
3
+
4
+ require 'kangaroo/util/proxy'
5
+
6
+ module Kangaroo
7
+ module Util
8
+ describe Proxy do
9
+ include TestServerHelper
10
+
11
+ it 'proxies method calls' do
12
+ proxy = Proxy.new client('common')
13
+
14
+ common_service.should_receive(:xmlrpc_call).with('some_method')
15
+ proxy.some_method
16
+ end
17
+
18
+ it 'curries predefined arguments' do
19
+ proxy = Proxy.new client('common'), 'a', 'b'
20
+
21
+ common_service.should_receive(:xmlrpc_call).with('some_method', 'a', 'b', 'd')
22
+ proxy.some_method 'd'
23
+ end
24
+
25
+ describe Proxy::Object do
26
+ it 'sends method calls via #execute to object service' do
27
+ proxy = Proxy::Object.new client('object'), 'model'
28
+
29
+ object_service.should_receive(:xmlrpc_call).with('execute', 'model', 'some_method', 'a')
30
+ proxy.some_method 'a'
31
+ end
32
+
33
+ it 'curries database authentication' do
34
+ proxy = Proxy::Object.new client('object'), 'some_db', 'a_user', 'my_password', 'model'
35
+
36
+ object_service.should_receive(:xmlrpc_call).with('execute', 'some_db', 'a_user', 'my_password',
37
+ 'model', 'some_method', 'a')
38
+ proxy.some_method 'a'
39
+ end
40
+ end
41
+
42
+ describe Proxy::Db do
43
+ it 'sends method calls to db service' do
44
+ proxy = Proxy::Db.new client('db')
45
+
46
+ db_service.should_receive(:xmlrpc_call).with('list')
47
+ proxy.list
48
+ end
49
+ end
50
+
51
+ describe Proxy::Superadmin do
52
+ it 'curries pre-set superadmin password on method calls' do
53
+ proxy = Proxy::Superadmin.new client('db'), 'superpw'
54
+
55
+ db_service.should_receive(:xmlrpc_call).with('rename', 'superpw', 'oldname', 'newname')
56
+ proxy.rename 'oldname', 'newname'
57
+ end
58
+ end
59
+ end
60
+ end
61
+ end
metadata ADDED
@@ -0,0 +1,260 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: kangaroo
3
+ version: !ruby/object:Gem::Version
4
+ hash: 961915968
5
+ prerelease: 6
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 1
10
+ - pre
11
+ version: 0.0.1.pre
12
+ platform: ruby
13
+ authors:
14
+ - Michael Eickenberg
15
+ - Marian Theisen
16
+ autorequire:
17
+ bindir: bin
18
+ cert_chain: []
19
+
20
+ date: 2011-02-13 00:00:00 +01:00
21
+ default_executable:
22
+ dependencies:
23
+ - !ruby/object:Gem::Dependency
24
+ name: rapuncel
25
+ prerelease: false
26
+ requirement: &id001 !ruby/object:Gem::Requirement
27
+ none: false
28
+ requirements:
29
+ - - ~>
30
+ - !ruby/object:Gem::Version
31
+ hash: 27
32
+ segments:
33
+ - 0
34
+ - 0
35
+ - 2
36
+ version: 0.0.2
37
+ type: :runtime
38
+ version_requirements: *id001
39
+ - !ruby/object:Gem::Dependency
40
+ name: activerecord
41
+ prerelease: false
42
+ requirement: &id002 !ruby/object:Gem::Requirement
43
+ none: false
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ hash: 7
48
+ segments:
49
+ - 3
50
+ - 0
51
+ - 0
52
+ version: 3.0.0
53
+ type: :runtime
54
+ version_requirements: *id002
55
+ - !ruby/object:Gem::Dependency
56
+ name: activesupport
57
+ prerelease: false
58
+ requirement: &id003 !ruby/object:Gem::Requirement
59
+ none: false
60
+ requirements:
61
+ - - ">="
62
+ - !ruby/object:Gem::Version
63
+ hash: 7
64
+ segments:
65
+ - 3
66
+ - 0
67
+ - 0
68
+ version: 3.0.0
69
+ type: :runtime
70
+ version_requirements: *id003
71
+ - !ruby/object:Gem::Dependency
72
+ name: yard
73
+ prerelease: false
74
+ requirement: &id004 !ruby/object:Gem::Requirement
75
+ none: false
76
+ requirements:
77
+ - - ">="
78
+ - !ruby/object:Gem::Version
79
+ hash: 3
80
+ segments:
81
+ - 0
82
+ version: "0"
83
+ type: :development
84
+ version_requirements: *id004
85
+ - !ruby/object:Gem::Dependency
86
+ name: rspec
87
+ prerelease: false
88
+ requirement: &id005 !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ">="
92
+ - !ruby/object:Gem::Version
93
+ hash: 3
94
+ segments:
95
+ - 0
96
+ version: "0"
97
+ type: :development
98
+ version_requirements: *id005
99
+ - !ruby/object:Gem::Dependency
100
+ name: ruby-debug
101
+ prerelease: false
102
+ requirement: &id006 !ruby/object:Gem::Requirement
103
+ none: false
104
+ requirements:
105
+ - - ">="
106
+ - !ruby/object:Gem::Version
107
+ hash: 3
108
+ segments:
109
+ - 0
110
+ version: "0"
111
+ type: :development
112
+ version_requirements: *id006
113
+ - !ruby/object:Gem::Dependency
114
+ name: cucumber
115
+ prerelease: false
116
+ requirement: &id007 !ruby/object:Gem::Requirement
117
+ none: false
118
+ requirements:
119
+ - - ">="
120
+ - !ruby/object:Gem::Version
121
+ hash: 3
122
+ segments:
123
+ - 0
124
+ version: "0"
125
+ type: :development
126
+ version_requirements: *id007
127
+ description: ActiveRecord-ish OpenObject Wrapper
128
+ email: marian@cice-online.net
129
+ executables: []
130
+
131
+ extensions: []
132
+
133
+ extra_rdoc_files: []
134
+
135
+ files:
136
+ - .gitignore
137
+ - .rspec
138
+ - .yardopts
139
+ - Gemfile
140
+ - Gemfile.lock
141
+ - LICENSE
142
+ - README.md
143
+ - Rakefile
144
+ - config/kangaroo.yml.sample
145
+ - docs/AdditionalServices.md
146
+ - docs/Architecture.md
147
+ - docs/Installation.md
148
+ - docs/Usage.md
149
+ - features/connection.feature
150
+ - features/env.rb
151
+ - features/step_definitions/basic_steps.rb
152
+ - features/step_definitions/connection_steps.rb
153
+ - features/support/test.yml
154
+ - features/utility_services.feature
155
+ - kangaroo.gemspec
156
+ - lib/kangaroo.rb
157
+ - lib/kangaroo/exception.rb
158
+ - lib/kangaroo/model/attributes.rb
159
+ - lib/kangaroo/model/base.rb
160
+ - lib/kangaroo/model/condition_normalizer.rb
161
+ - lib/kangaroo/model/default_attributes.rb
162
+ - lib/kangaroo/model/field.rb
163
+ - lib/kangaroo/model/finder.rb
164
+ - lib/kangaroo/model/inspector.rb
165
+ - lib/kangaroo/model/open_object_orm.rb
166
+ - lib/kangaroo/model/persistence.rb
167
+ - lib/kangaroo/model/relation.rb
168
+ - lib/kangaroo/model/remote_execute.rb
169
+ - lib/kangaroo/railtie.rb
170
+ - lib/kangaroo/ruby_adapter/base.rb
171
+ - lib/kangaroo/ruby_adapter/class_definition.rb
172
+ - lib/kangaroo/ruby_adapter/fields.rb
173
+ - lib/kangaroo/util/client.rb
174
+ - lib/kangaroo/util/configuration.rb
175
+ - lib/kangaroo/util/database.rb
176
+ - lib/kangaroo/util/loader.rb
177
+ - lib/kangaroo/util/loader/model.rb
178
+ - lib/kangaroo/util/loader/namespace.rb
179
+ - lib/kangaroo/util/proxy.rb
180
+ - lib/kangaroo/util/proxy/common.rb
181
+ - lib/kangaroo/util/proxy/db.rb
182
+ - lib/kangaroo/util/proxy/object.rb
183
+ - lib/kangaroo/util/proxy/report.rb
184
+ - lib/kangaroo/util/proxy/superadmin.rb
185
+ - lib/kangaroo/util/proxy/wizard.rb
186
+ - lib/kangaroo/util/proxy/workflow.rb
187
+ - lib/kangaroo/version.rb
188
+ - spec/model/attributes_spec.rb
189
+ - spec/model/base_spec.rb
190
+ - spec/model/default_attributes_spec.rb
191
+ - spec/model/finder_spec.rb
192
+ - spec/model/inspector_spec.rb
193
+ - spec/model/open_object_orm_spec.rb
194
+ - spec/model/persistence_spec.rb
195
+ - spec/model/relation_spec.rb
196
+ - spec/ruby_adapter/class_definition_spec.rb
197
+ - spec/server_helper.rb
198
+ - spec/spec_helper.rb
199
+ - spec/test_env/test.yml
200
+ - spec/util/configuration_spec.rb
201
+ - spec/util/loader_spec.rb
202
+ - spec/util/proxy_spec.rb
203
+ has_rdoc: true
204
+ homepage: http://github.com/cice/kangARoo
205
+ licenses: []
206
+
207
+ post_install_message:
208
+ rdoc_options: []
209
+
210
+ require_paths:
211
+ - lib
212
+ required_ruby_version: !ruby/object:Gem::Requirement
213
+ none: false
214
+ requirements:
215
+ - - ">="
216
+ - !ruby/object:Gem::Version
217
+ hash: 3
218
+ segments:
219
+ - 0
220
+ version: "0"
221
+ required_rubygems_version: !ruby/object:Gem::Requirement
222
+ none: false
223
+ requirements:
224
+ - - ">"
225
+ - !ruby/object:Gem::Version
226
+ hash: 25
227
+ segments:
228
+ - 1
229
+ - 3
230
+ - 1
231
+ version: 1.3.1
232
+ requirements: []
233
+
234
+ rubyforge_project:
235
+ rubygems_version: 1.5.0
236
+ signing_key:
237
+ specification_version: 3
238
+ summary: Kang! ActiveRecord-ish OpenObject
239
+ test_files:
240
+ - features/connection.feature
241
+ - features/env.rb
242
+ - features/step_definitions/basic_steps.rb
243
+ - features/step_definitions/connection_steps.rb
244
+ - features/support/test.yml
245
+ - features/utility_services.feature
246
+ - spec/model/attributes_spec.rb
247
+ - spec/model/base_spec.rb
248
+ - spec/model/default_attributes_spec.rb
249
+ - spec/model/finder_spec.rb
250
+ - spec/model/inspector_spec.rb
251
+ - spec/model/open_object_orm_spec.rb
252
+ - spec/model/persistence_spec.rb
253
+ - spec/model/relation_spec.rb
254
+ - spec/ruby_adapter/class_definition_spec.rb
255
+ - spec/server_helper.rb
256
+ - spec/spec_helper.rb
257
+ - spec/test_env/test.yml
258
+ - spec/util/configuration_spec.rb
259
+ - spec/util/loader_spec.rb
260
+ - spec/util/proxy_spec.rb