soapforce 0.3.0 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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