soapforce 0.3.0 → 0.5.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.
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Soapforce do
3
+ describe Soapforce::Configuration do
4
4
 
5
5
  after do
6
6
  Soapforce.instance_variable_set :@configuration, nil
@@ -10,7 +10,7 @@ describe Soapforce do
10
10
  subject { Soapforce.configuration }
11
11
 
12
12
  it { should be_a Soapforce::Configuration }
13
- it { subject.client_id.should be_nil }
13
+ it { expect(subject.client_id).to be_nil }
14
14
 
15
15
  end
16
16
 
@@ -4,15 +4,15 @@ describe Soapforce::QueryResult do
4
4
 
5
5
  describe 'empty object' do
6
6
  subject { Soapforce::QueryResult.new }
7
-
7
+
8
8
  context "should have defaults" do
9
- it { subject.size.should == 0 }
10
- it { subject.query_locator.should be_nil }
11
- it { subject.first.should be_nil }
12
- it { subject.last.should be_nil }
13
- it { subject.should be_done }
9
+ it { expect(subject.size).to eq 0 }
10
+ it { expect(subject.query_locator).to be_nil }
11
+ it { expect(subject.first).to be_nil }
12
+ it { expect(subject.last).to be_nil }
13
+ it { expect(subject).to be_done }
14
14
  end
15
-
15
+
16
16
  end
17
17
 
18
18
  describe 'result object' do
@@ -29,16 +29,16 @@ describe Soapforce::QueryResult do
29
29
  Soapforce::QueryResult.new(hash)
30
30
  }
31
31
 
32
- it { subject.size.should == 1 }
33
- it { subject.query_locator.should be_nil }
34
- it { subject.should be_done }
35
-
32
+ it { expect(subject.size).to eq 1 }
33
+ it { expect(subject.query_locator).to be_nil }
34
+ it { expect(subject).to be_done }
35
+
36
36
  it "#each" do
37
37
  count = 0
38
38
  subject.each do |obj|
39
39
  count +=1
40
- obj[:id].should == count
41
- obj.Id.should == count
40
+ expect(obj[:id]).to eq count
41
+ expect(obj.Id).to eq count
42
42
  end
43
43
  expect(count).to be(1)
44
44
  end
@@ -59,19 +59,31 @@ describe Soapforce::QueryResult do
59
59
  Soapforce::QueryResult.new(hash)
60
60
  }
61
61
 
62
- it { subject.size.should == 2 }
63
- it { subject.query_locator.should be_nil }
64
- it { subject.should be_done }
65
-
62
+ it { expect(subject.size).to eq 2 }
63
+ it { expect(subject.records).to be_an(Array) }
64
+ it { expect(subject.query_locator).to be_nil }
65
+ it { expect(subject).to be_done }
66
+
66
67
  it "#each" do
67
68
  count = 0
68
69
  subject.each do |obj|
69
70
  count +=1
70
- obj[:id].should == count
71
- obj.Id.should == count
71
+ expect(obj[:id]).to eq count
72
+ expect(obj.Id).to eq count
72
73
  end
73
74
  expect(count).to be(2)
74
75
  end
76
+
77
+ it "#map" do
78
+ count = 0
79
+ subject.map do |obj|
80
+ count +=1
81
+ expect(obj[:id]).to eq count
82
+ expect(obj.Id).to eq count
83
+ end
84
+ expect(count).to be(2)
85
+ end
86
+
75
87
  end
76
88
 
77
89
  end
@@ -0,0 +1,24 @@
1
+ require 'spec_helper'
2
+
3
+ describe Soapforce::Result do
4
+
5
+ describe 'symbol keys' do
6
+ subject { Soapforce::Result.new({new_workitem_ids: 12345, success: true}) }
7
+
8
+ it { expect(subject[:new_workitem_ids]).to eq 12345 }
9
+ it { expect(subject["newWorkitemIds"]).to eq 12345 }
10
+ it { expect(subject[:success]).to eq true }
11
+ it { expect(subject["success"]).to eq true }
12
+ end
13
+
14
+ describe 'string keys' do
15
+ subject { Soapforce::Result.new({"newWorkitemIds" => 12345, "success" => true}) }
16
+
17
+ it { expect(subject[:new_workitem_ids]).to eq 12345 }
18
+ it { expect(subject["newWorkitemIds"]).to eq 12345 }
19
+ it { expect(subject[:success]).to eq true }
20
+ it { expect(subject["success"]).to eq true }
21
+ end
22
+
23
+
24
+ end
@@ -2,43 +2,159 @@ require 'spec_helper'
2
2
 
3
3
  describe Soapforce::SObject do
4
4
 
5
- describe 'empty object' do
6
- subject { Soapforce::SObject.new(id: [1, 1], name: "testing", stage_name: "Prospecting") }
5
+ describe 'symbol snakecase keys' do
6
+ subject {
7
+ Soapforce::SObject.new({
8
+ id: [1, 1],
9
+ name: "testing",
10
+ stage_name: "Prospecting",
11
+ opportunity_line_items: {
12
+ done: true,
13
+ query_locator: nil,
14
+ size: 2,
15
+ records: [
16
+ {id: 1, name: "Opportunity 1", stage_name: "Prospecting"},
17
+ {id: 2, name: "Opportunity 2", stage_name: "Closed Won"}
18
+ ]
19
+ }
20
+ })
21
+ }
7
22
 
8
23
  context "should have defaults" do
9
- it { subject.Id.should == 1 }
10
- it { subject.Name.should == "testing" }
11
- it { subject.StageName.should == "Prospecting" }
12
- it { subject.InvalidField.should be_nil }
24
+ it { expect(subject.Id).to eq 1 }
25
+ it { expect(subject.Name).to eq "testing" }
26
+ it { expect(subject.StageName).to eq "Prospecting" }
27
+ it { expect(subject.InvalidField).to be_nil }
13
28
 
14
- it { subject[:id].should == [1, 1] }
15
- it { subject[:name].should == "testing" }
16
- it { subject[:stage_name].should == "Prospecting" }
17
- it { subject[:no_field].should be_nil }
29
+ it { expect(subject[:id]).to eq 1 }
30
+ it { expect(subject[:name]).to eq "testing" }
31
+ it { expect(subject[:stage_name]).to eq "Prospecting" }
32
+ it { expect(subject[:no_field]).to be_nil }
18
33
  end
19
34
 
20
35
  context "assignment" do
21
36
  it "should assign through hash index" do
22
- subject[:nothing].should be_nil
37
+ expect(subject[:nothing]).to be_nil
23
38
  subject[:nothing] = "New Value"
24
- subject[:nothing].should == "New Value"
25
- subject.Nothing.should == "New Value"
39
+ expect(subject[:nothing]).to eq "New Value"
40
+ expect(subject.Nothing).to eq "New Value"
41
+ end
42
+ end
43
+
44
+ context "child relationship" do
45
+ it "returns records as QueryResult" do
46
+ items = subject.OpportunityLineItems
47
+
48
+ expect(items).to be_an_instance_of(Soapforce::QueryResult)
49
+ expect(items.size).to eq 2
50
+ expect(items).to be_done
51
+
52
+ number = 1
53
+ subject.OpportunityLineItems.each do |sobject|
54
+ expect(sobject.Id).to eq number
55
+ expect(sobject.Name).to eq "Opportunity #{number}"
56
+ number += 1
57
+ end
26
58
  end
27
59
  end
28
60
 
29
61
  context "respond to hash methods" do
30
62
 
31
63
  it "should has_key?" do
32
- subject.has_key?(:name).should be_true
33
- subject.has_key?(:stage_name).should be_true
34
- subject.has_key?(:nothing).should be_false
64
+ expect(subject).to have_key(:name)
65
+ expect(subject).to have_key(:stage_name)
66
+ expect(subject).to_not have_key(:nothing)
35
67
  end
36
68
 
37
69
  it "should return keys" do
38
- subject.keys.should == [:id, :name, :stage_name]
70
+ expect(subject.keys).to eq [:id, :name, :stage_name, :opportunity_line_items]
39
71
  end
40
72
  end
41
73
 
42
74
  end
43
75
 
76
+ describe 'string keys' do
77
+ subject {
78
+ Soapforce::SObject.new(
79
+ "Id" => [1, 1],
80
+ "Name" => "testing",
81
+ "StageName" => "Prospecting",
82
+ "OpportunityLineItems" => {
83
+ "done" => true,
84
+ "queryLocator" => nil,
85
+ "size" => 2,
86
+ "records" => [
87
+ {"Id" => 1, "Name" => "Opportunity 1", "StageName" => "Prospecting"},
88
+ {"Id" => 2, "Name" => "Opportunity 2", "StageName" => "Closed Won"}
89
+ ]
90
+ }
91
+ )
92
+ }
93
+
94
+ context "should have defaults" do
95
+ it { expect(subject.Id).to eq 1 }
96
+ it { expect(subject.Name).to eq "testing" }
97
+ it { expect(subject.StageName).to eq "Prospecting" }
98
+ it { expect(subject.InvalidField).to be_nil }
99
+
100
+ it { expect(subject["Id"]).to eq 1 }
101
+ it { expect(subject["Name"]).to eq "testing" }
102
+ it { expect(subject["StageName"]).to eq "Prospecting" }
103
+ it { expect(subject["NoField"]).to be_nil }
104
+ end
105
+
106
+ context "assignment" do
107
+ it "should assign through hash index" do
108
+ expect(subject["nothing"]).to be_nil
109
+ subject["nothing"] = "New Value"
110
+ expect(subject["nothing"]).to eq "New Value"
111
+ expect(subject.Nothing).to eq "New Value"
112
+ end
113
+ end
114
+
115
+ context "respond to hash methods" do
116
+
117
+ it "should has_key?" do
118
+ expect(subject).to have_key("Name")
119
+ expect(subject).to have_key("StageName")
120
+ expect(subject).to_not have_key("nothing")
121
+ end
122
+
123
+ it "should return keys" do
124
+ expect(subject.keys).to eq ["Id", "Name", "StageName", "OpportunityLineItems"]
125
+ end
126
+ end
127
+
128
+ context "child relationship" do
129
+ it "returns records as QueryResult" do
130
+ items = subject.OpportunityLineItems
131
+ expect(items).to be_an_instance_of(Soapforce::QueryResult)
132
+ expect(items.size).to eq 2
133
+ expect(items).to be_done
134
+
135
+ number = 1
136
+ subject.OpportunityLineItems.each do |sobject|
137
+ expect(sobject.Id).to eq number
138
+ expect(sobject.Name).to eq "Opportunity #{number}"
139
+ number += 1
140
+ end
141
+ end
142
+ end
143
+
144
+ end
145
+
146
+ describe 'empty id field' do
147
+ subject { Soapforce::SObject.new({ id: [nil, nil], name: "testing", stage_name: "Prospecting" }) }
148
+
149
+ context "should have defaults" do
150
+ it { expect(subject).to_not have_key(:id) }
151
+ it { expect(subject.Name).to eq "testing" }
152
+ it { expect(subject.StageName).to eq "Prospecting" }
153
+ it { expect(subject.InvalidField).to be_nil }
154
+ it { expect(subject.to_hash).to eq({:name=>"testing", :stage_name=>"Prospecting"}) }
155
+ end
156
+ end
157
+
158
+
159
+
44
160
  end
@@ -28,12 +28,12 @@ module FixtureHelpers
28
28
  def soap_envelope(headers, body)
29
29
  envelope = <<EOF
30
30
  <?xml version="1.0" encoding="UTF-8"?>
31
- <env:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema"
32
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
33
- xmlns:tns="urn:partner.soap.sforce.com"
34
- xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
35
- xmlns:ins0="urn:sobject.partner.soap.sforce.com"
36
- xmlns:ins1="urn:fault.partner.soap.sforce.com">
31
+ <env:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema"
32
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
33
+ xmlns:tns="urn:partner.soap.sforce.com"
34
+ xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"
35
+ xmlns:ins0="urn:sobject.partner.soap.sforce.com"
36
+ xmlns:ins1="urn:fault.partner.soap.sforce.com">
37
37
  #{soap_headers(headers)}
38
38
  <env:Body>#{body}</env:Body>
39
39
  </env:Envelope>
metadata CHANGED
@@ -1,95 +1,95 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: soapforce
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.5.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: 2015-03-26 00:00:00.000000000 Z
11
+ date: 2016-03-04 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
+ - - "<"
21
21
  - !ruby/object:Gem::Version
22
22
  version: 3.0.0
23
23
  type: :runtime
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
+ - - "<"
31
31
  - !ruby/object:Gem::Version
32
32
  version: 3.0.0
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: rspec
35
35
  requirement: !ruby/object:Gem::Requirement
36
36
  requirements:
37
- - - ~>
37
+ - - ">="
38
38
  - !ruby/object:Gem::Version
39
39
  version: 2.14.0
40
- - - '>='
40
+ - - "<"
41
41
  - !ruby/object:Gem::Version
42
- version: 2.14.0
42
+ version: 4.0.0
43
43
  type: :development
44
44
  prerelease: false
45
45
  version_requirements: !ruby/object:Gem::Requirement
46
46
  requirements:
47
- - - ~>
47
+ - - ">="
48
48
  - !ruby/object:Gem::Version
49
49
  version: 2.14.0
50
- - - '>='
50
+ - - "<"
51
51
  - !ruby/object:Gem::Version
52
- version: 2.14.0
52
+ version: 4.0.0
53
53
  - !ruby/object:Gem::Dependency
54
54
  name: webmock
55
55
  requirement: !ruby/object:Gem::Requirement
56
56
  requirements:
57
- - - ~>
57
+ - - ">="
58
58
  - !ruby/object:Gem::Version
59
59
  version: 1.17.0
60
- - - '>='
60
+ - - "<"
61
61
  - !ruby/object:Gem::Version
62
- version: 1.17.0
62
+ version: 2.0.0
63
63
  type: :development
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
66
66
  requirements:
67
- - - ~>
67
+ - - ">="
68
68
  - !ruby/object:Gem::Version
69
69
  version: 1.17.0
70
- - - '>='
70
+ - - "<"
71
71
  - !ruby/object:Gem::Version
72
- version: 1.17.0
72
+ version: 2.0.0
73
73
  - !ruby/object:Gem::Dependency
74
74
  name: simplecov
75
75
  requirement: !ruby/object:Gem::Requirement
76
76
  requirements:
77
- - - ~>
77
+ - - ">="
78
78
  - !ruby/object:Gem::Version
79
79
  version: 0.9.0
80
- - - '>='
80
+ - - "<"
81
81
  - !ruby/object:Gem::Version
82
- version: 0.9.0
82
+ version: 1.0.0
83
83
  type: :development
84
84
  prerelease: false
85
85
  version_requirements: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - ~>
87
+ - - ">="
88
88
  - !ruby/object:Gem::Version
89
89
  version: 0.9.0
90
- - - '>='
90
+ - - "<"
91
91
  - !ruby/object:Gem::Version
92
- version: 0.9.0
92
+ version: 1.0.0
93
93
  description: A ruby client for the Salesforce SOAP API based on Savon.
94
94
  email:
95
95
  - joeheth@gmail.com
@@ -97,9 +97,9 @@ executables: []
97
97
  extensions: []
98
98
  extra_rdoc_files: []
99
99
  files:
100
- - .gitignore
101
- - .rspec
102
- - .travis.yml
100
+ - ".gitignore"
101
+ - ".rspec"
102
+ - ".travis.yml"
103
103
  - CHANGELOG.md
104
104
  - Gemfile
105
105
  - LICENSE.txt
@@ -109,6 +109,7 @@ files:
109
109
  - lib/soapforce/client.rb
110
110
  - lib/soapforce/configuration.rb
111
111
  - lib/soapforce/query_result.rb
112
+ - lib/soapforce/result.rb
112
113
  - lib/soapforce/sobject.rb
113
114
  - lib/soapforce/version.rb
114
115
  - resources/partner.wsdl.xml
@@ -139,6 +140,7 @@ files:
139
140
  - spec/lib/client_spec.rb
140
141
  - spec/lib/configuration_spec.rb
141
142
  - spec/lib/query_result_spec.rb
143
+ - spec/lib/result_spec.rb
142
144
  - spec/lib/sobject_spec.rb
143
145
  - spec/spec_helper.rb
144
146
  - spec/support/fixture_helpers.rb
@@ -152,17 +154,17 @@ require_paths:
152
154
  - lib
153
155
  required_ruby_version: !ruby/object:Gem::Requirement
154
156
  requirements:
155
- - - '>='
157
+ - - ">="
156
158
  - !ruby/object:Gem::Version
157
159
  version: '0'
158
160
  required_rubygems_version: !ruby/object:Gem::Requirement
159
161
  requirements:
160
- - - '>='
162
+ - - ">="
161
163
  - !ruby/object:Gem::Version
162
164
  version: '0'
163
165
  requirements: []
164
166
  rubyforge_project:
165
- rubygems_version: 2.4.5
167
+ rubygems_version: 2.4.8
166
168
  signing_key:
167
169
  specification_version: 4
168
170
  summary: Wraps Savon with helper methods and custom types for interacting with the
@@ -194,6 +196,7 @@ test_files:
194
196
  - spec/lib/client_spec.rb
195
197
  - spec/lib/configuration_spec.rb
196
198
  - spec/lib/query_result_spec.rb
199
+ - spec/lib/result_spec.rb
197
200
  - spec/lib/sobject_spec.rb
198
201
  - spec/spec_helper.rb
199
202
  - spec/support/fixture_helpers.rb