soapforce 0.2.1 → 0.3.0
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.
- checksums.yaml +5 -13
- data/CHANGELOG.md +26 -0
- data/lib/soapforce/client.rb +41 -1
- data/lib/soapforce/version.rb +1 -1
- data/spec/fixtures/merge_response.xml +13 -0
- data/spec/fixtures/merge_response_failure.xml +15 -0
- data/spec/lib/client_spec.rb +40 -0
- metadata +18 -13
checksums.yaml
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
data.tar.gz: !binary |-
|
6
|
-
Y2Q5MThhZTIzZmQ3NGRiYjQ0MzM0MmViNDM1YThlODhhNTY4OGVmNQ==
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 9ad9594a32904ff7305f9fed654cc0a71148e7e0
|
4
|
+
data.tar.gz: 0fb2ff0b93f97172a1e6ce0eb53591e91e9c3441
|
7
5
|
SHA512:
|
8
|
-
metadata.gz:
|
9
|
-
|
10
|
-
YjIzZDM1MmQ5MzYyZGU1Mjg3ZjRlYTA2MjMzZDlkNWJmMjU0OTlkYWIzZGZl
|
11
|
-
YWVlNGQ3N2FhNzY1NzlmNDk2NTU3NjNkZWIxMzJmZGU5NmYzOWE=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
ZmJkNDM4ZmY2NDJkYTNkNDQyMDcxNzMzYzlkYzExN2U3YmIwNzcwMGVkNTNk
|
14
|
-
NTYyMGY5MmU3MTJhYjc3NGU0ZDlhMjIwZjM2NDMwODdlOWNjMGI2MzJmM2Ix
|
15
|
-
OWQ3NDU0YWQzNDIyZDI1ZTM0NDE0NTUzYWM2YTkyZjIzOWQxODg=
|
6
|
+
metadata.gz: 56920bf8ee1aa09ef84d071011b39c8a9a791cb183659bad3de9924adb9f1dd5599f5373db8e64fcd8ca42437e96a42c17c16ad61373f7db916457bf51deeeca
|
7
|
+
data.tar.gz: fda094cc5420a8a8848549937f5207d31b9fbdf1cb786b8eb2361fe3fb41aea2c4005872fd909224344ba300904e3116dc9fa1fd0c8314d245edf5d96e4b8d3f
|
data/CHANGELOG.md
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
## 0.3.0 (Mar 25, 2015)
|
2
|
+
|
3
|
+
* Adds merge command.
|
4
|
+
|
5
|
+
## 0.2.1 (November 17, 2014)
|
6
|
+
|
7
|
+
* Widen Savon dependency
|
8
|
+
* Switch to TLS. SSLv3 has been disabled.
|
9
|
+
|
10
|
+
## 0.2.0 (November 16, 2014)
|
11
|
+
|
12
|
+
* Adds support for accessing sandbox or custom endpoint. #4
|
13
|
+
* Adds describe_layout operation
|
14
|
+
* Adds configurable logger. Disabled by default.
|
15
|
+
|
16
|
+
## 0.1.3 (October 25, 2014)
|
17
|
+
|
18
|
+
* Adds support for process operation (ProcessSubmitRequest and ProcessWorkItemRequest)
|
19
|
+
|
20
|
+
## 0.1.2 (September 11, 2013)
|
21
|
+
|
22
|
+
* Adds create!, update!, delete! methods that raise Exceptions on error.
|
23
|
+
|
24
|
+
## 0.1.0 (August 13, 2013)
|
25
|
+
|
26
|
+
* Initial Release
|
data/lib/soapforce/client.rb
CHANGED
@@ -339,6 +339,46 @@ module Soapforce
|
|
339
339
|
end
|
340
340
|
alias_method :destroy!, :delete
|
341
341
|
|
342
|
+
# Public: Merges records together
|
343
|
+
#
|
344
|
+
# sobject - String name of the sobject
|
345
|
+
# master_record - Hash of the master record that other records will be merged into
|
346
|
+
# ids - Array of Salesforce Ids that will be merged into the master record
|
347
|
+
#
|
348
|
+
# Examples
|
349
|
+
#
|
350
|
+
# client.merge('Account', Id: '0016000000MRatd', ['012000000000000AAA'])
|
351
|
+
#
|
352
|
+
# Returns Hash if the records were merged successfully
|
353
|
+
# Raises an exception if an error is returned from Salesforce.
|
354
|
+
def merge!(sobject_type, master_record_hash, ids)
|
355
|
+
call_soap_api(
|
356
|
+
:merge,
|
357
|
+
request: {
|
358
|
+
masterRecord: master_record_hash.merge(:'@xsi:type' => sobject_type),
|
359
|
+
recordToMergeIds: ids
|
360
|
+
}
|
361
|
+
)
|
362
|
+
end
|
363
|
+
|
364
|
+
# Public: Merges records together
|
365
|
+
#
|
366
|
+
# sobject - String name of the sobject
|
367
|
+
# master_record - Hash of the master record that other records will be merged into
|
368
|
+
# ids - Array of Salesforce Ids that will be merged into the master record
|
369
|
+
#
|
370
|
+
# Examples
|
371
|
+
#
|
372
|
+
# client.merge('Account', Id: '0016000000MRatd', ['012000000000000AAA'])
|
373
|
+
#
|
374
|
+
# Returns Hash if the records were merged successfully
|
375
|
+
# Raises an exception if an error is returned from Salesforce.
|
376
|
+
def merge(sobject_type, master_record_hash, ids)
|
377
|
+
merge!(sobject_type, master_record_hash, ids)
|
378
|
+
rescue => e
|
379
|
+
false
|
380
|
+
end
|
381
|
+
|
342
382
|
# Public: Finds a single record and returns all fields.
|
343
383
|
#
|
344
384
|
# sobject - The String name of the sobject.
|
@@ -532,4 +572,4 @@ module Soapforce
|
|
532
572
|
{sObjects: sobjects}
|
533
573
|
end
|
534
574
|
end
|
535
|
-
end
|
575
|
+
end
|
data/lib/soapforce/version.rb
CHANGED
@@ -0,0 +1,13 @@
|
|
1
|
+
<?xml version="1.0"?>
|
2
|
+
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns="urn:partner.soap.sforce.com">
|
3
|
+
<soapenv:Body>
|
4
|
+
<mergeResponse>
|
5
|
+
<result>
|
6
|
+
<id>001160000000000AAG</id>
|
7
|
+
<mergedRecordIds>001140000000000AA4</mergedRecordIds>
|
8
|
+
<mergedRecordIds>001150000000000AAO</mergedRecordIds>
|
9
|
+
<success>true</success>
|
10
|
+
</result>
|
11
|
+
</mergeResponse>
|
12
|
+
</soapenv:Body>
|
13
|
+
</soapenv:Envelope>
|
@@ -0,0 +1,15 @@
|
|
1
|
+
<?xml version="1.0"?>
|
2
|
+
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns="urn:partner.soap.sforce.com">
|
3
|
+
<soapenv:Body>
|
4
|
+
<mergeResponse>
|
5
|
+
<result>
|
6
|
+
<errors>
|
7
|
+
<message>bad id in recordsToMerge: 0011500000000</message>
|
8
|
+
<statusCode>MALFORMED_ID</statusCode>
|
9
|
+
</errors>
|
10
|
+
<id>001160000000000AAG</id>
|
11
|
+
<success>false</success>
|
12
|
+
</result>
|
13
|
+
</mergeResponse>
|
14
|
+
</soapenv:Body>
|
15
|
+
</soapenv:Envelope>
|
data/spec/lib/client_spec.rb
CHANGED
@@ -400,6 +400,46 @@ describe Soapforce::Client do
|
|
400
400
|
|
401
401
|
end
|
402
402
|
|
403
|
+
describe "#merge" do
|
404
|
+
before(:each) do
|
405
|
+
@body = "<tns:merge><tns:request><tns:masterRecord xsi:type=\"Account\"><tns:id>001160000000000AAG</tns:id></tns:masterRecord><tns:recordToMergeIds>001140000000000AA4</tns:recordToMergeIds><tns:recordToMergeIds>001150000000000AAO</tns:recordToMergeIds></tns:request></tns:merge>"
|
406
|
+
@object = { id: "001160000000000AAG" }
|
407
|
+
@to_merge = ['001140000000000AA4','001150000000000AAO']
|
408
|
+
end
|
409
|
+
|
410
|
+
it "merges objects together" do
|
411
|
+
stub = stub_api_request(endpoint, {with_body: @body, fixture: 'merge_response'})
|
412
|
+
response = subject.merge("Account", @object, @to_merge)
|
413
|
+
|
414
|
+
response[:success].should be_true
|
415
|
+
response[:id].should == @object[:id]
|
416
|
+
response[:merged_record_ids].sort.should == @to_merge
|
417
|
+
end
|
418
|
+
|
419
|
+
it "returns false if merge fails" do
|
420
|
+
stub = stub_api_request(endpoint, {with_body: @body, fixture: 'merge_response_failure'})
|
421
|
+
response = subject.merge("Account", @object, @to_merge)
|
422
|
+
|
423
|
+
response.should be_false
|
424
|
+
end
|
425
|
+
|
426
|
+
it "merges objects with a bang" do
|
427
|
+
stub = stub_api_request(endpoint, {with_body: @body, fixture: 'merge_response'})
|
428
|
+
response = subject.merge!("Account", @object, @to_merge)
|
429
|
+
|
430
|
+
response[:success].should be_true
|
431
|
+
response[:id].should == @object[:id]
|
432
|
+
response[:merged_record_ids].sort.should == @to_merge
|
433
|
+
end
|
434
|
+
|
435
|
+
it "raises an exception if merge fails" do
|
436
|
+
stub = stub_api_request(endpoint, {with_body: @body, fixture: 'merge_response_failure'})
|
437
|
+
expect {
|
438
|
+
subject.merge!('Account', @object, @to_merge)
|
439
|
+
}.to raise_error(Savon::Error)
|
440
|
+
end
|
441
|
+
end
|
442
|
+
|
403
443
|
describe "process" do
|
404
444
|
|
405
445
|
it "process submit request without approvers" do
|
metadata
CHANGED
@@ -1,20 +1,20 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: soapforce
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Joe Heth
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-03-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: savon
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - '>='
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: 2.3.0
|
20
20
|
- - <
|
@@ -24,7 +24,7 @@ dependencies:
|
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
26
26
|
requirements:
|
27
|
-
- -
|
27
|
+
- - '>='
|
28
28
|
- !ruby/object:Gem::Version
|
29
29
|
version: 2.3.0
|
30
30
|
- - <
|
@@ -37,7 +37,7 @@ dependencies:
|
|
37
37
|
- - ~>
|
38
38
|
- !ruby/object:Gem::Version
|
39
39
|
version: 2.14.0
|
40
|
-
- -
|
40
|
+
- - '>='
|
41
41
|
- !ruby/object:Gem::Version
|
42
42
|
version: 2.14.0
|
43
43
|
type: :development
|
@@ -47,7 +47,7 @@ dependencies:
|
|
47
47
|
- - ~>
|
48
48
|
- !ruby/object:Gem::Version
|
49
49
|
version: 2.14.0
|
50
|
-
- -
|
50
|
+
- - '>='
|
51
51
|
- !ruby/object:Gem::Version
|
52
52
|
version: 2.14.0
|
53
53
|
- !ruby/object:Gem::Dependency
|
@@ -57,7 +57,7 @@ dependencies:
|
|
57
57
|
- - ~>
|
58
58
|
- !ruby/object:Gem::Version
|
59
59
|
version: 1.17.0
|
60
|
-
- -
|
60
|
+
- - '>='
|
61
61
|
- !ruby/object:Gem::Version
|
62
62
|
version: 1.17.0
|
63
63
|
type: :development
|
@@ -67,7 +67,7 @@ dependencies:
|
|
67
67
|
- - ~>
|
68
68
|
- !ruby/object:Gem::Version
|
69
69
|
version: 1.17.0
|
70
|
-
- -
|
70
|
+
- - '>='
|
71
71
|
- !ruby/object:Gem::Version
|
72
72
|
version: 1.17.0
|
73
73
|
- !ruby/object:Gem::Dependency
|
@@ -77,7 +77,7 @@ dependencies:
|
|
77
77
|
- - ~>
|
78
78
|
- !ruby/object:Gem::Version
|
79
79
|
version: 0.9.0
|
80
|
-
- -
|
80
|
+
- - '>='
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: 0.9.0
|
83
83
|
type: :development
|
@@ -87,7 +87,7 @@ dependencies:
|
|
87
87
|
- - ~>
|
88
88
|
- !ruby/object:Gem::Version
|
89
89
|
version: 0.9.0
|
90
|
-
- -
|
90
|
+
- - '>='
|
91
91
|
- !ruby/object:Gem::Version
|
92
92
|
version: 0.9.0
|
93
93
|
description: A ruby client for the Salesforce SOAP API based on Savon.
|
@@ -100,6 +100,7 @@ files:
|
|
100
100
|
- .gitignore
|
101
101
|
- .rspec
|
102
102
|
- .travis.yml
|
103
|
+
- CHANGELOG.md
|
103
104
|
- Gemfile
|
104
105
|
- LICENSE.txt
|
105
106
|
- README.md
|
@@ -122,6 +123,8 @@ files:
|
|
122
123
|
- spec/fixtures/describe_s_objects_response.xml
|
123
124
|
- spec/fixtures/get_user_info_response.xml
|
124
125
|
- spec/fixtures/login_response.xml
|
126
|
+
- spec/fixtures/merge_response.xml
|
127
|
+
- spec/fixtures/merge_response_failure.xml
|
125
128
|
- spec/fixtures/org_id_response.xml
|
126
129
|
- spec/fixtures/process_submit_request_response.xml
|
127
130
|
- spec/fixtures/process_workitem_request_response.xml
|
@@ -149,17 +152,17 @@ require_paths:
|
|
149
152
|
- lib
|
150
153
|
required_ruby_version: !ruby/object:Gem::Requirement
|
151
154
|
requirements:
|
152
|
-
- -
|
155
|
+
- - '>='
|
153
156
|
- !ruby/object:Gem::Version
|
154
157
|
version: '0'
|
155
158
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
156
159
|
requirements:
|
157
|
-
- -
|
160
|
+
- - '>='
|
158
161
|
- !ruby/object:Gem::Version
|
159
162
|
version: '0'
|
160
163
|
requirements: []
|
161
164
|
rubyforge_project:
|
162
|
-
rubygems_version: 2.
|
165
|
+
rubygems_version: 2.4.5
|
163
166
|
signing_key:
|
164
167
|
specification_version: 4
|
165
168
|
summary: Wraps Savon with helper methods and custom types for interacting with the
|
@@ -175,6 +178,8 @@ test_files:
|
|
175
178
|
- spec/fixtures/describe_s_objects_response.xml
|
176
179
|
- spec/fixtures/get_user_info_response.xml
|
177
180
|
- spec/fixtures/login_response.xml
|
181
|
+
- spec/fixtures/merge_response.xml
|
182
|
+
- spec/fixtures/merge_response_failure.xml
|
178
183
|
- spec/fixtures/org_id_response.xml
|
179
184
|
- spec/fixtures/process_submit_request_response.xml
|
180
185
|
- spec/fixtures/process_workitem_request_response.xml
|