wash_out 0.3.4 → 0.3.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.
- data/CHANGELOG.md +4 -0
- data/Gemfile +2 -0
- data/Gemfile.lock +8 -0
- data/lib/wash_out/dispatcher.rb +14 -8
- data/lib/wash_out/version.rb +1 -1
- data/spec/wash_out_spec.rb +94 -0
- metadata +12 -12
data/CHANGELOG.md
CHANGED
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -29,6 +29,7 @@ GEM
|
|
29
29
|
bundler
|
30
30
|
rake
|
31
31
|
builder (3.0.0)
|
32
|
+
coderay (1.0.5)
|
32
33
|
diff-lcs (1.1.3)
|
33
34
|
erubis (2.7.0)
|
34
35
|
gyoku (0.4.4)
|
@@ -40,10 +41,15 @@ GEM
|
|
40
41
|
journey (1.0.3)
|
41
42
|
json (1.6.5)
|
42
43
|
json (1.6.5-java)
|
44
|
+
method_source (0.7.1)
|
43
45
|
multi_json (1.1.0)
|
44
46
|
nokogiri (1.5.0)
|
45
47
|
nokogiri (1.5.0-java)
|
46
48
|
nori (1.1.0)
|
49
|
+
pry (0.9.8.4)
|
50
|
+
coderay (~> 1.0.5)
|
51
|
+
method_source (~> 0.7.1)
|
52
|
+
slop (>= 2.4.4, < 3)
|
47
53
|
rack (1.4.1)
|
48
54
|
rack-cache (1.1)
|
49
55
|
rack (>= 0.4)
|
@@ -82,6 +88,7 @@ GEM
|
|
82
88
|
nokogiri (>= 1.4.0)
|
83
89
|
nori (~> 1.1)
|
84
90
|
wasabi (~> 2.1)
|
91
|
+
slop (2.4.4)
|
85
92
|
sprockets (2.1.2)
|
86
93
|
hike (~> 1.2)
|
87
94
|
rack (~> 1.0)
|
@@ -98,6 +105,7 @@ PLATFORMS
|
|
98
105
|
|
99
106
|
DEPENDENCIES
|
100
107
|
appraisal
|
108
|
+
pry
|
101
109
|
rspec-rails
|
102
110
|
savon
|
103
111
|
tzinfo
|
data/lib/wash_out/dispatcher.rb
CHANGED
@@ -82,21 +82,27 @@ module WashOut
|
|
82
82
|
result = { 'value' => result } unless result.is_a? Hash
|
83
83
|
result = HashWithIndifferentAccess.new(result)
|
84
84
|
|
85
|
-
inject = lambda {|data,
|
86
|
-
|
85
|
+
inject = lambda {|data, map|
|
86
|
+
result_spec = []
|
87
87
|
|
88
|
-
|
88
|
+
map.each_with_index do |param, i|
|
89
|
+
result_spec[i] = param.flat_copy
|
90
|
+
|
91
|
+
# Inline complex structure
|
89
92
|
if param.struct? && !param.multiplied
|
90
|
-
|
93
|
+
result_spec[i].map = inject.call(data[param.name], param.map)
|
94
|
+
|
95
|
+
# Inline array of complex structures
|
91
96
|
elsif param.struct? && param.multiplied
|
92
|
-
|
97
|
+
result_spec[i].map = data[param.name].map{|e| inject.call(e, param.map)}
|
98
|
+
|
93
99
|
else
|
94
|
-
|
95
|
-
|
100
|
+
result_spec[i].value = data[param.name]
|
101
|
+
|
96
102
|
end
|
97
103
|
end
|
98
104
|
|
99
|
-
return
|
105
|
+
return result_spec
|
100
106
|
}
|
101
107
|
|
102
108
|
render :template => 'wash_with_soap/response',
|
data/lib/wash_out/version.rb
CHANGED
data/spec/wash_out_spec.rb
CHANGED
@@ -361,4 +361,98 @@ describe WashOut do
|
|
361
361
|
}
|
362
362
|
end
|
363
363
|
|
364
|
+
it "should handle return of structs in structs in arrays" do
|
365
|
+
mock_controller do
|
366
|
+
soap_action "rumba",
|
367
|
+
:args => nil,
|
368
|
+
:return => [{:rumbas => {:zombies => :integer}}]
|
369
|
+
|
370
|
+
def rumba
|
371
|
+
render :soap => [{:rumbas => {:zombies => 100000}}, {:rumbas => {:zombies => 2}}]
|
372
|
+
end
|
373
|
+
end
|
374
|
+
|
375
|
+
savon_instance.request(:rumba)[:rumba_response].should == {
|
376
|
+
:value => [
|
377
|
+
{
|
378
|
+
:rumbas => {
|
379
|
+
:zombies => "100000",
|
380
|
+
:"@xsi:type" => "tns:rumbas"
|
381
|
+
},
|
382
|
+
:"@xsi:type" => "tns:value"
|
383
|
+
},
|
384
|
+
{
|
385
|
+
:rumbas => {
|
386
|
+
:zombies => "2",
|
387
|
+
:"@xsi:type" => "tns:rumbas"
|
388
|
+
},
|
389
|
+
:"@xsi:type"=>"tns:value"
|
390
|
+
}
|
391
|
+
]
|
392
|
+
}
|
393
|
+
end
|
394
|
+
|
395
|
+
it "should handle complex structs/arrays" do
|
396
|
+
mock_controller do
|
397
|
+
soap_action "rumba",
|
398
|
+
:args => nil,
|
399
|
+
:return => {
|
400
|
+
:rumbas => [
|
401
|
+
{
|
402
|
+
:zombies => :string,
|
403
|
+
:puppies => [
|
404
|
+
{:kittens => :integer}
|
405
|
+
]
|
406
|
+
}
|
407
|
+
]
|
408
|
+
}
|
409
|
+
|
410
|
+
def rumba
|
411
|
+
render :soap => {
|
412
|
+
:rumbas => [
|
413
|
+
{
|
414
|
+
:zombies => "abc",
|
415
|
+
:puppies => [
|
416
|
+
{:kittens => 1},
|
417
|
+
{:kittens => 5},
|
418
|
+
]
|
419
|
+
},
|
420
|
+
{
|
421
|
+
:zombies => "def",
|
422
|
+
:puppies => [
|
423
|
+
{:kittens => 4}
|
424
|
+
]
|
425
|
+
}
|
426
|
+
]
|
427
|
+
}
|
428
|
+
end
|
429
|
+
end
|
430
|
+
|
431
|
+
savon_instance.request(:rumba)[:rumba_response].should == {
|
432
|
+
:rumbas => [
|
433
|
+
{
|
434
|
+
:zombies => "abc",
|
435
|
+
:puppies => [
|
436
|
+
{
|
437
|
+
:kittens => "1",
|
438
|
+
:"@xsi:type" => "tns:puppies"
|
439
|
+
},
|
440
|
+
{
|
441
|
+
:kittens => "5",
|
442
|
+
:"@xsi:type" => "tns:puppies"
|
443
|
+
}
|
444
|
+
],
|
445
|
+
:"@xsi:type"=>"tns:rumbas"
|
446
|
+
},
|
447
|
+
{
|
448
|
+
:zombies => "def",
|
449
|
+
:puppies => {
|
450
|
+
:kittens => "4",
|
451
|
+
:"@xsi:type" => "tns:puppies"
|
452
|
+
},
|
453
|
+
:"@xsi:type"=>"tns:rumbas"
|
454
|
+
}
|
455
|
+
]
|
456
|
+
}
|
457
|
+
end
|
364
458
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: wash_out
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.5
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,11 +10,11 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2012-03-
|
13
|
+
date: 2012-03-27 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: nori
|
17
|
-
requirement: &
|
17
|
+
requirement: &70310783969100 !ruby/object:Gem::Requirement
|
18
18
|
none: false
|
19
19
|
requirements:
|
20
20
|
- - ! '>='
|
@@ -22,10 +22,10 @@ dependencies:
|
|
22
22
|
version: '0'
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
|
-
version_requirements: *
|
25
|
+
version_requirements: *70310783969100
|
26
26
|
- !ruby/object:Gem::Dependency
|
27
27
|
name: rspec-rails
|
28
|
-
requirement: &
|
28
|
+
requirement: &70310783968680 !ruby/object:Gem::Requirement
|
29
29
|
none: false
|
30
30
|
requirements:
|
31
31
|
- - ! '>='
|
@@ -33,10 +33,10 @@ dependencies:
|
|
33
33
|
version: '0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
|
-
version_requirements: *
|
36
|
+
version_requirements: *70310783968680
|
37
37
|
- !ruby/object:Gem::Dependency
|
38
38
|
name: appraisal
|
39
|
-
requirement: &
|
39
|
+
requirement: &70310783968260 !ruby/object:Gem::Requirement
|
40
40
|
none: false
|
41
41
|
requirements:
|
42
42
|
- - ! '>='
|
@@ -44,10 +44,10 @@ dependencies:
|
|
44
44
|
version: '0'
|
45
45
|
type: :development
|
46
46
|
prerelease: false
|
47
|
-
version_requirements: *
|
47
|
+
version_requirements: *70310783968260
|
48
48
|
- !ruby/object:Gem::Dependency
|
49
49
|
name: tzinfo
|
50
|
-
requirement: &
|
50
|
+
requirement: &70310783967840 !ruby/object:Gem::Requirement
|
51
51
|
none: false
|
52
52
|
requirements:
|
53
53
|
- - ! '>='
|
@@ -55,10 +55,10 @@ dependencies:
|
|
55
55
|
version: '0'
|
56
56
|
type: :development
|
57
57
|
prerelease: false
|
58
|
-
version_requirements: *
|
58
|
+
version_requirements: *70310783967840
|
59
59
|
- !ruby/object:Gem::Dependency
|
60
60
|
name: savon
|
61
|
-
requirement: &
|
61
|
+
requirement: &70310783967400 !ruby/object:Gem::Requirement
|
62
62
|
none: false
|
63
63
|
requirements:
|
64
64
|
- - ! '>='
|
@@ -66,7 +66,7 @@ dependencies:
|
|
66
66
|
version: '0'
|
67
67
|
type: :development
|
68
68
|
prerelease: false
|
69
|
-
version_requirements: *
|
69
|
+
version_requirements: *70310783967400
|
70
70
|
description: Dead simple Rails 3 SOAP server library
|
71
71
|
email: boris@roundlake.ru
|
72
72
|
executables: []
|