activeforce 1.10.5 → 2.0.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 -5
- data/.gitignore +0 -1
- data/.travis.yml +7 -8
- data/Appraisals +6 -6
- data/Rakefile +0 -1
- data/activeforce.gemspec +6 -5
- data/gemfiles/{5.2.gemfile → 4.0.gemfile} +3 -3
- data/gemfiles/{6.0.gemfile → 4.1.gemfile} +3 -3
- data/gemfiles/{5.0.gemfile → 4.2.gemfile} +3 -3
- data/lib/activeforce/version.rb +1 -1
- data/lib/salesforce/authentication.rb +1 -6
- data/lib/salesforce/bulk/batch.rb +15 -15
- data/lib/salesforce/column.rb +2 -2
- data/lib/salesforce/config.rb +5 -5
- data/lib/salesforce/connection.rb +5 -5
- data/lib/salesforce/connection/soap_api.rb +19 -15
- data/test/salesforce/authentication_test.rb +7 -42
- data/test/salesforce/column_test.rb +37 -37
- data/test/salesforce/config_test.rb +2 -6
- data/test/salesforce/connection/async_test.rb +38 -36
- data/test/salesforce/connection/http_methods_test.rb +34 -39
- data/test/salesforce/connection/soap_api_test.rb +51 -38
- data/test/salesforce/connection_test.rb +32 -38
- data/test/test_helper.rb +22 -22
- metadata +22 -14
@@ -36,6 +36,7 @@ class Salesforce::Connection::SoapApiTest < ActiveSupport::TestCase
|
|
36
36
|
|
37
37
|
def test_invoke_soap__not_login__success
|
38
38
|
options = {
|
39
|
+
:endpoint_url => Salesforce::Config.login_url,
|
39
40
|
:body => :soap_body,
|
40
41
|
:other_option => 'foo'
|
41
42
|
}
|
@@ -50,29 +51,31 @@ class Salesforce::Connection::SoapApiTest < ActiveSupport::TestCase
|
|
50
51
|
}
|
51
52
|
|
52
53
|
expected_result = result[:not_login_response][:result]
|
53
|
-
|
54
|
-
|
55
|
-
|
54
|
+
|
55
|
+
# stub savon
|
56
|
+
stub_response = stub(:http => stub(:code => 200, :headers => {}, :cookies => []), :body => result)
|
57
|
+
stub_response.stubs(:kind_of?).returns(true)
|
58
|
+
|
59
|
+
Savon::Operation.any_instance.stubs(:create_response).returns(stub_response)
|
60
|
+
|
61
|
+
HTTPI.stubs(:post).with do |request, _|
|
62
|
+
assert_includes request.body, "xmlns:ns1=\"soap:enterprise:namespace\""
|
63
|
+
xml_doc = Nokogiri::XML(request.body)
|
64
|
+
assert_equal 'soap_body', xml_doc.xpath('//wsdl:notLogin/text()').to_s
|
65
|
+
assert_equal 'boyahh_session_id', xml_doc.xpath('//env:Header/ns1:SessionHeader/ns1:sessionId/text()').to_s
|
66
|
+
assert_equal '"notLogin"', request.headers['SOAPAction']
|
67
|
+
assert_equal Salesforce::Config.login_url, request.url.to_s
|
68
|
+
end.returns(stub_response)
|
56
69
|
|
57
70
|
Salesforce::Config.stubs(:session_id).returns('boyahh_session_id')
|
58
71
|
Salesforce::Config.stubs(:soap_enterprise_namespace).returns('soap:enterprise:namespace')
|
59
|
-
|
60
|
-
soap_mock = mock
|
61
|
-
soap_mock.expects(:body=).with(:soap_body)
|
62
|
-
soap_mock.expects(:header=).with({ "ns1:SessionHeader" => { "ns1:sessionId" => 'boyahh_session_id' }})
|
63
|
-
|
64
|
-
|
65
|
-
namespaces_mock = mock
|
66
|
-
namespaces_mock.expects(:[]=).with("xmlns:ns1", 'soap:enterprise:namespace')
|
67
|
-
soap_mock.expects(:namespaces).returns(namespaces_mock)
|
68
|
-
|
69
|
-
soap_client_mock.expects(:request).with(:wsdl, :notLogin).yields(soap_mock).returns(mock(:to_hash => result))
|
70
72
|
|
71
73
|
assert_equal expected_result, Salesforce.connection.send(:invoke_soap, :notLogin, options)
|
72
74
|
end
|
73
75
|
|
74
76
|
def test_invoke_soap__not_login__not_success
|
75
77
|
options = {
|
78
|
+
:endpoint_url => Salesforce::Config.login_url,
|
76
79
|
:body => :soap_body,
|
77
80
|
:other_option => 'foo'
|
78
81
|
}
|
@@ -85,23 +88,24 @@ class Salesforce::Connection::SoapApiTest < ActiveSupport::TestCase
|
|
85
88
|
}
|
86
89
|
}
|
87
90
|
}
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
+
|
92
|
+
# stub savon
|
93
|
+
stub_response = stub(:http => stub(:code => 200, :headers => {}, :cookies => []), :body => result)
|
94
|
+
stub_response.stubs(:kind_of?).returns(true)
|
95
|
+
|
96
|
+
Savon::Operation.any_instance.stubs(:create_response).returns(stub_response)
|
97
|
+
|
98
|
+
HTTPI.stubs(:post).with do |request, _|
|
99
|
+
assert_includes request.body, "xmlns:ns1=\"soap:enterprise:namespace\""
|
100
|
+
xml_doc = Nokogiri::XML(request.body)
|
101
|
+
assert_equal 'soap_body', xml_doc.xpath('//wsdl:notLogin/text()').to_s
|
102
|
+
assert_equal 'boyahh_session_id', xml_doc.xpath('//env:Header/ns1:SessionHeader/ns1:sessionId/text()').to_s
|
103
|
+
assert_equal '"notLogin"', request.headers['SOAPAction']
|
104
|
+
assert_equal Salesforce::Config.login_url, request.url.to_s
|
105
|
+
end.returns(stub_response)
|
91
106
|
|
92
107
|
Salesforce::Config.stubs(:session_id).returns('boyahh_session_id')
|
93
108
|
Salesforce::Config.stubs(:soap_enterprise_namespace).returns('soap:enterprise:namespace')
|
94
|
-
|
95
|
-
soap_mock = mock
|
96
|
-
soap_mock.expects(:body=).with(:soap_body)
|
97
|
-
soap_mock.expects(:header=).with({ "ns1:SessionHeader" => { "ns1:sessionId" => 'boyahh_session_id' }})
|
98
|
-
|
99
|
-
|
100
|
-
namespaces_mock = mock
|
101
|
-
namespaces_mock.expects(:[]=).with("xmlns:ns1", 'soap:enterprise:namespace')
|
102
|
-
soap_mock.expects(:namespaces).returns(namespaces_mock)
|
103
|
-
|
104
|
-
soap_client_mock.expects(:request).with(:wsdl, :notLogin).yields(soap_mock).returns(mock(:to_hash => result))
|
105
109
|
|
106
110
|
assert_raises Salesforce::Connection::SoapApi::Error do
|
107
111
|
Salesforce.connection.send(:invoke_soap, :notLogin, options)
|
@@ -110,6 +114,7 @@ class Salesforce::Connection::SoapApiTest < ActiveSupport::TestCase
|
|
110
114
|
|
111
115
|
def test_invoke_soap__login
|
112
116
|
options = {
|
117
|
+
:endpoint_url => Salesforce::Config.login_url,
|
113
118
|
:body => :soap_body,
|
114
119
|
:other_option => 'foo'
|
115
120
|
}
|
@@ -123,13 +128,21 @@ class Salesforce::Connection::SoapApiTest < ActiveSupport::TestCase
|
|
123
128
|
}
|
124
129
|
|
125
130
|
expected_result = result[:login_response][:result]
|
126
|
-
|
127
|
-
soap_client_mock = mock
|
128
|
-
Salesforce.connection.expects(:soap_client).with(options).returns(soap_client_mock)
|
129
131
|
|
130
|
-
|
131
|
-
|
132
|
-
|
132
|
+
stub_response = stub(:http => stub(:code => 200, :headers => {}, :cookies => []), :body => result)
|
133
|
+
stub_response.stubs(:kind_of?).returns(true)
|
134
|
+
|
135
|
+
Savon::Operation.any_instance.stubs(:create_response).returns(stub_response)
|
136
|
+
|
137
|
+
HTTPI.stubs(:post).with do |request, _|
|
138
|
+
xml_doc = Nokogiri::XML(request.body)
|
139
|
+
assert_equal 'soap_body', xml_doc.xpath('//wsdl:login/text()').to_s
|
140
|
+
assert_equal '"login"', request.headers['SOAPAction']
|
141
|
+
assert_equal Salesforce::Config.login_url, request.url.to_s
|
142
|
+
end.returns(stub_response)
|
143
|
+
|
144
|
+
Salesforce::Config.stubs(:session_id).returns('boyahh_session_id')
|
145
|
+
Salesforce::Config.stubs(:soap_enterprise_namespace).returns('soap:enterprise:namespace')
|
133
146
|
|
134
147
|
assert_equal expected_result, Salesforce.connection.send(:invoke_soap, :login, options)
|
135
148
|
end
|
@@ -137,12 +150,12 @@ class Salesforce::Connection::SoapApiTest < ActiveSupport::TestCase
|
|
137
150
|
def test_soap_client
|
138
151
|
options = {
|
139
152
|
:namespace => 'my:name:space',
|
140
|
-
:
|
153
|
+
:endpoint => 'https://my.endpoint.url.com'
|
141
154
|
}
|
142
155
|
|
143
156
|
client = Salesforce.connection.send(:soap_client, options)
|
144
|
-
assert_equal 'https://my.endpoint.url.com', client.
|
145
|
-
assert_equal 'my:name:space', client.
|
157
|
+
assert_equal 'https://my.endpoint.url.com', client.globals[:endpoint]
|
158
|
+
assert_equal 'my:name:space', client.globals[:namespace]
|
146
159
|
end
|
147
160
|
|
148
|
-
end
|
161
|
+
end
|
@@ -5,20 +5,20 @@ class Salesforce::ConnectionTest < ActiveSupport::TestCase
|
|
5
5
|
Salesforce.connection.expects(:get).with("query.json?q=SELECT+Id+FROM+Account", :format => :json).returns({ "records" => [{ :record => 1, "attributes" => 'foo'}], "done" => true, "totalSize" => 1999})
|
6
6
|
assert_equal [{ :record => 1 }], Salesforce.connection.soql("SELECT Id FROM Account")
|
7
7
|
end
|
8
|
-
|
8
|
+
|
9
9
|
def test_query__more_than_2000_records
|
10
|
-
Salesforce.connection.expects(:get).with("query.json?q=SELECT+Id+FROM+Account", :format => :json).returns({
|
10
|
+
Salesforce.connection.expects(:get).with("query.json?q=SELECT+Id+FROM+Account", :format => :json).returns({
|
11
11
|
"records" => [ { :record => 1, "attributes" => "foo" } ], "done" => false, "totalSize" => 4999, "nextRecordsUrl" =>"/services/data/v22.0/query/01g8000000L9FSmAAN-2000"})
|
12
|
-
|
13
|
-
Salesforce.connection.expects(:get).with("/services/data/v22.0/query/01g8000000L9FSmAAN-2000.json", :format => :json).returns({
|
12
|
+
|
13
|
+
Salesforce.connection.expects(:get).with("/services/data/v22.0/query/01g8000000L9FSmAAN-2000.json", :format => :json).returns({
|
14
14
|
"records" => [ { :record => 2, "attributes" => "foo" } ], "done" => false, "totalSize" => 4999, "nextRecordsUrl" =>"/services/data/v22.0/query/01g8000000L9FSmAAN-4000"})
|
15
15
|
|
16
|
-
Salesforce.connection.expects(:get).with("/services/data/v22.0/query/01g8000000L9FSmAAN-4000.json", :format => :json).returns({
|
16
|
+
Salesforce.connection.expects(:get).with("/services/data/v22.0/query/01g8000000L9FSmAAN-4000.json", :format => :json).returns({
|
17
17
|
"records" => [ { :record => 3, "attributes" => "foo" } ], "done" => true, "totalSize" => 4999})
|
18
|
-
|
18
|
+
|
19
19
|
assert_equal [{ :record => 1}, { :record => 2}, { :record => 3}], Salesforce.connection.soql("SELECT Id FROM Account")
|
20
20
|
end
|
21
|
-
|
21
|
+
|
22
22
|
def test_as_logged_in_user__login_succeeded__calls_block
|
23
23
|
Salesforce::Authentication.expects(:session_id)
|
24
24
|
results = Salesforce.connection.as_logged_in_user do
|
@@ -26,12 +26,12 @@ class Salesforce::ConnectionTest < ActiveSupport::TestCase
|
|
26
26
|
end
|
27
27
|
assert_equal :results, results
|
28
28
|
end
|
29
|
-
|
29
|
+
|
30
30
|
def test_as_logged_in_user__logged_out__recovers
|
31
31
|
flag = nil
|
32
32
|
Salesforce::Authentication.expects(:session_id).twice
|
33
33
|
Salesforce::Authentication.expects(:logout)
|
34
|
-
error = RestClient::Unauthorized.new
|
34
|
+
error = RestClient::Request::Unauthorized.new
|
35
35
|
results = Salesforce.connection.as_logged_in_user do
|
36
36
|
unless flag
|
37
37
|
flag = true
|
@@ -41,32 +41,32 @@ class Salesforce::ConnectionTest < ActiveSupport::TestCase
|
|
41
41
|
end
|
42
42
|
assert_equal :results, results
|
43
43
|
end
|
44
|
-
|
44
|
+
|
45
45
|
def test_as_logged_in_user__authorization_failure
|
46
46
|
flag = nil
|
47
47
|
Salesforce::Authentication.expects(:session_id).times(2)
|
48
48
|
Salesforce::Authentication.expects(:logout)
|
49
|
-
error = RestClient::Unauthorized.new
|
50
|
-
assert_raises RestClient::Unauthorized do
|
49
|
+
error = RestClient::Request::Unauthorized.new
|
50
|
+
assert_raises RestClient::Request::Unauthorized do
|
51
51
|
Salesforce.connection.as_logged_in_user do
|
52
52
|
raise error
|
53
53
|
end
|
54
54
|
end
|
55
55
|
end
|
56
|
-
|
56
|
+
|
57
57
|
def test_as_logged_in_user__invalid_username_password__recovers
|
58
58
|
on_login_failure_called = false
|
59
59
|
|
60
|
-
Salesforce.configure do
|
60
|
+
Salesforce.configure do
|
61
61
|
on_login_failure { on_login_failure_called = true }
|
62
62
|
end
|
63
|
-
|
63
|
+
|
64
64
|
xml = <<-XML
|
65
65
|
<?xml version='1.0' encoding='UTF-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body><soapenv:Fault xmlns:fns="http://fault.api.zuora.com/"><faultcode>sf:INVALID_LOGIN</faultcode><faultstring>INVALID_LOGIN: Invalid username, password, security token; or user locked out.</faultstring><detail><fns:LoginFault><fns:FaultCode>INVALID_LOGIN</fns:FaultCode><fns:FaultMessage>Invalid username, password, security token; or user locked out.</fns:FaultMessage></fns:LoginFault></detail></soapenv:Fault></soapenv:Body></soapenv:Envelope>
|
66
66
|
XML
|
67
67
|
|
68
|
-
error = Savon::
|
69
|
-
|
68
|
+
error = Savon::SOAPFault.new(stub(:body => xml), Nori.new, xml)
|
69
|
+
|
70
70
|
flag = nil
|
71
71
|
Salesforce::Authentication.expects(:session_id).twice
|
72
72
|
Salesforce::Authentication.expects(:logout)
|
@@ -77,29 +77,29 @@ class Salesforce::ConnectionTest < ActiveSupport::TestCase
|
|
77
77
|
end
|
78
78
|
:results
|
79
79
|
end
|
80
|
-
|
80
|
+
|
81
81
|
assert_equal :results, results
|
82
82
|
assert on_login_failure_called, "Salesforce::Config.on_login_failure was not called upon login failure"
|
83
83
|
end
|
84
|
-
|
84
|
+
|
85
85
|
def test_as_logged_in_user__invalid_username_password__doesnt_recover
|
86
86
|
on_login_failure_called = 0
|
87
87
|
|
88
|
-
Salesforce.configure do
|
88
|
+
Salesforce.configure do
|
89
89
|
on_login_failure { on_login_failure_called += 1 }
|
90
90
|
end
|
91
|
-
|
91
|
+
|
92
92
|
xml = <<-XML
|
93
93
|
<?xml version='1.0' encoding='UTF-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body><soapenv:Fault xmlns:fns="http://fault.api.zuora.com/"><faultcode>sf:INVALID_LOGIN</faultcode><faultstring>INVALID_LOGIN: Invalid username, password, security token; or user locked out.</faultstring><detail><fns:LoginFault><fns:FaultCode>INVALID_LOGIN</fns:FaultCode><fns:FaultMessage>Invalid username, password, security token; or user locked out.</fns:FaultMessage></fns:LoginFault></detail></soapenv:Fault></soapenv:Body></soapenv:Envelope>
|
94
94
|
XML
|
95
95
|
|
96
|
-
error = Savon::
|
97
|
-
|
96
|
+
error = Savon::SOAPFault.new(stub(:body => xml), Nori.new, xml)
|
97
|
+
|
98
98
|
flag = nil
|
99
99
|
Salesforce::Authentication.expects(:session_id).twice
|
100
100
|
Salesforce::Authentication.expects(:logout)
|
101
|
-
|
102
|
-
assert_raises Savon::
|
101
|
+
|
102
|
+
assert_raises Savon::SOAPFault do
|
103
103
|
Salesforce.connection.as_logged_in_user do
|
104
104
|
raise error
|
105
105
|
end
|
@@ -107,14 +107,14 @@ class Salesforce::ConnectionTest < ActiveSupport::TestCase
|
|
107
107
|
|
108
108
|
assert_equal 1, on_login_failure_called, "Salesforce::Config.on_login_failure was not called upon login failure"
|
109
109
|
end
|
110
|
-
|
110
|
+
|
111
111
|
def test_as_logged_in_user__invalid_username_password__recovers__no_on_login_failure_hook
|
112
112
|
xml = <<-XML
|
113
113
|
<?xml version='1.0' encoding='UTF-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body><soapenv:Fault xmlns:fns="http://fault.api.zuora.com/"><faultcode>sf:INVALID_LOGIN</faultcode><faultstring>INVALID_LOGIN: Invalid username, password, security token; or user locked out.</faultstring><detail><fns:LoginFault><fns:FaultCode>INVALID_LOGIN</fns:FaultCode><fns:FaultMessage>Invalid username, password, security token; or user locked out.</fns:FaultMessage></fns:LoginFault></detail></soapenv:Fault></soapenv:Body></soapenv:Envelope>
|
114
114
|
XML
|
115
115
|
|
116
|
-
error = Savon::
|
117
|
-
|
116
|
+
error = Savon::SOAPFault.new(stub(:body => xml), Nori.new, xml)
|
117
|
+
|
118
118
|
flag = nil
|
119
119
|
Salesforce::Authentication.expects(:session_id).twice
|
120
120
|
Salesforce::Authentication.expects(:logout)
|
@@ -125,15 +125,15 @@ class Salesforce::ConnectionTest < ActiveSupport::TestCase
|
|
125
125
|
end
|
126
126
|
:results
|
127
127
|
end
|
128
|
-
|
128
|
+
|
129
129
|
assert_equal :results, results
|
130
130
|
end
|
131
|
-
|
131
|
+
|
132
132
|
def test_as_logged_in_user__other_failure
|
133
133
|
Salesforce::Authentication.stubs(:session_id)
|
134
134
|
Salesforce::Authentication.stubs(:logout)
|
135
135
|
|
136
|
-
expects(:my_method).twice.raises(RestClient::Unauthorized.new).then.raises(StandardError.new("some other error"))
|
136
|
+
expects(:my_method).twice.raises(RestClient::Request::Unauthorized.new).then.raises(StandardError.new("some other error"))
|
137
137
|
|
138
138
|
assert_raises StandardError do
|
139
139
|
Salesforce.connection.as_logged_in_user do
|
@@ -141,14 +141,8 @@ class Salesforce::ConnectionTest < ActiveSupport::TestCase
|
|
141
141
|
end
|
142
142
|
end
|
143
143
|
end
|
144
|
-
|
144
|
+
|
145
145
|
def test_convert
|
146
146
|
assert_equal "str", Salesforce.connection.convert("str", {})
|
147
147
|
end
|
148
|
-
|
149
|
-
private
|
150
|
-
|
151
|
-
def my_method
|
152
|
-
# Defined so it can be stubbed in a test
|
153
|
-
end
|
154
148
|
end
|
data/test/test_helper.rb
CHANGED
@@ -15,14 +15,14 @@ require 'activeforce'
|
|
15
15
|
Dir.glob(File.expand_path('../../app/models/salesforce/**.rb', __FILE__)).each { |file| require(file) }
|
16
16
|
|
17
17
|
require 'mocha/setup'
|
18
|
-
|
18
|
+
|
19
19
|
|
20
20
|
Time.zone = 'America/Los_Angeles'
|
21
21
|
|
22
22
|
class ActiveSupport::TestCase
|
23
23
|
setup :clean_configuration
|
24
24
|
setup :stub_soap
|
25
|
-
|
25
|
+
|
26
26
|
class ::Salesforce::BulkTable < Salesforce::Base
|
27
27
|
self.custom_object = true
|
28
28
|
end
|
@@ -30,50 +30,50 @@ class ActiveSupport::TestCase
|
|
30
30
|
def clean_configuration
|
31
31
|
Salesforce::Config.instance_variable_set(:@instance, nil)
|
32
32
|
end
|
33
|
-
|
33
|
+
|
34
34
|
def stub_soap
|
35
|
-
|
36
|
-
Savon::Client.any_instance.stubs(:request)
|
37
|
-
end
|
35
|
+
Savon::Client.any_instance.stubs(:request)
|
38
36
|
end
|
39
|
-
|
37
|
+
|
40
38
|
def clear_columns_for_bulk_table
|
41
39
|
Salesforce::BulkTable.cached_columns = nil
|
42
40
|
end
|
43
|
-
|
41
|
+
|
44
42
|
def clear_columns_for_account
|
45
43
|
Salesforce::Account.cached_columns = nil
|
46
44
|
end
|
47
|
-
|
45
|
+
|
48
46
|
def setup_columns_for_bulk_table
|
49
47
|
clear_columns_for_bulk_table
|
50
|
-
columns_hash = [
|
51
|
-
{ "name" => "Id", "type" => "id", "createable" => false, "updateable" => false},
|
52
|
-
{ "name" => "Account__c", "type" => "reference", "createable" => true, "updateable" => false, "custom" => true },
|
48
|
+
columns_hash = [
|
49
|
+
{ "name" => "Id", "type" => "id", "createable" => false, "updateable" => false},
|
50
|
+
{ "name" => "Account__c", "type" => "reference", "createable" => true, "updateable" => false, "custom" => true },
|
53
51
|
{ "name" => "Car__c", "type" => "reference", "createable" => false, "updateable" => true, "custom" => true},
|
54
52
|
{ "name" => "Name__c", "type" => "string", "createable" => true, "updateable" => true, "custom" => true},
|
55
|
-
{ "name" => "dob__c", "type" => "date", "createable" => true, "updateable" => true, "custom" => true}
|
53
|
+
{ "name" => "dob__c", "type" => "date", "createable" => true, "updateable" => true, "custom" => true}
|
56
54
|
]
|
57
|
-
|
55
|
+
|
58
56
|
Salesforce.connection.stubs(:fields).with("BulkTable__c").returns(columns_hash).twice
|
59
57
|
columns = Salesforce::Columns.new("BulkTable__c")
|
60
58
|
assert_equal columns, Salesforce::BulkTable.columns
|
61
59
|
end
|
62
|
-
|
60
|
+
|
63
61
|
def setup_columns_for_account
|
64
62
|
clear_columns_for_account
|
65
|
-
columns_hash = [
|
66
|
-
{ "name" => "Id", "type" => "id", "createable" => false, "updateable" => false},
|
67
|
-
{ "name" => "Name", "type" => "string", "createable" => true, "updateable" => true},
|
68
|
-
{ "name" => "Type", "type" => "string", "createable" => true, "updateable" => true},
|
69
|
-
{ "name" => "Address", "type" => "string", "createable" => true, "updateable" => true},
|
70
|
-
{ "name" => "City", "type" => "string", "createable" => true, "updateable" => true},
|
63
|
+
columns_hash = [
|
64
|
+
{ "name" => "Id", "type" => "id", "createable" => false, "updateable" => false},
|
65
|
+
{ "name" => "Name", "type" => "string", "createable" => true, "updateable" => true},
|
66
|
+
{ "name" => "Type", "type" => "string", "createable" => true, "updateable" => true},
|
67
|
+
{ "name" => "Address", "type" => "string", "createable" => true, "updateable" => true},
|
68
|
+
{ "name" => "City", "type" => "string", "createable" => true, "updateable" => true},
|
71
69
|
{ "name" => "State", "type" => "string", "createable" => true, "updateable" => true},
|
72
70
|
{ "name" => "Number", "type" => "string", "createable" => true, "updateable" => false}
|
73
71
|
]
|
74
|
-
|
72
|
+
|
75
73
|
Salesforce.connection.stubs(:fields).with("Account").returns(columns_hash).twice
|
76
74
|
columns = Salesforce::Columns.new("Account")
|
77
75
|
assert_equal columns, Salesforce::Account.columns
|
78
76
|
end
|
77
|
+
|
78
|
+
|
79
79
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: activeforce
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tushar Ranka
|
@@ -17,34 +17,34 @@ dependencies:
|
|
17
17
|
requirements:
|
18
18
|
- - ">="
|
19
19
|
- !ruby/object:Gem::Version
|
20
|
-
version: '4.
|
20
|
+
version: '4.0'
|
21
21
|
- - "<"
|
22
22
|
- !ruby/object:Gem::Version
|
23
|
-
version: '
|
23
|
+
version: '5.0'
|
24
24
|
type: :runtime
|
25
25
|
prerelease: false
|
26
26
|
version_requirements: !ruby/object:Gem::Requirement
|
27
27
|
requirements:
|
28
28
|
- - ">="
|
29
29
|
- !ruby/object:Gem::Version
|
30
|
-
version: '4.
|
30
|
+
version: '4.0'
|
31
31
|
- - "<"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '5.0'
|
34
34
|
- !ruby/object:Gem::Dependency
|
35
35
|
name: savon
|
36
36
|
requirement: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '2.11'
|
41
41
|
type: :runtime
|
42
42
|
prerelease: false
|
43
43
|
version_requirements: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
47
|
+
version: '2.11'
|
48
48
|
- !ruby/object:Gem::Dependency
|
49
49
|
name: blockenspiel
|
50
50
|
requirement: !ruby/object:Gem::Requirement
|
@@ -63,14 +63,20 @@ dependencies:
|
|
63
63
|
name: rest-client
|
64
64
|
requirement: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- - "
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- - "<"
|
67
70
|
- !ruby/object:Gem::Version
|
68
71
|
version: '2.0'
|
69
72
|
type: :runtime
|
70
73
|
prerelease: false
|
71
74
|
version_requirements: !ruby/object:Gem::Requirement
|
72
75
|
requirements:
|
73
|
-
- - "
|
76
|
+
- - ">="
|
77
|
+
- !ruby/object:Gem::Version
|
78
|
+
version: '0'
|
79
|
+
- - "<"
|
74
80
|
- !ruby/object:Gem::Version
|
75
81
|
version: '2.0'
|
76
82
|
- !ruby/object:Gem::Dependency
|
@@ -90,6 +96,7 @@ dependencies:
|
|
90
96
|
description: " Activeforce provides a simple to use and extend interface to Salesforce
|
91
97
|
using the REST API"
|
92
98
|
email:
|
99
|
+
- tusharranka@gmail.com
|
93
100
|
- andrew.mutz@appfolio.com
|
94
101
|
executables: []
|
95
102
|
extensions: []
|
@@ -152,9 +159,9 @@ files:
|
|
152
159
|
- app/models/salesforce/user.rb
|
153
160
|
- app/models/salesforce/user_role.rb
|
154
161
|
- app/models/salesforce/vote.rb
|
155
|
-
- gemfiles/
|
156
|
-
- gemfiles/
|
157
|
-
- gemfiles/
|
162
|
+
- gemfiles/4.0.gemfile
|
163
|
+
- gemfiles/4.1.gemfile
|
164
|
+
- gemfiles/4.2.gemfile
|
158
165
|
- lib/activeforce.rb
|
159
166
|
- lib/activeforce/version.rb
|
160
167
|
- lib/ruby_187_range_extension.rb
|
@@ -202,14 +209,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
202
209
|
requirements:
|
203
210
|
- - ">="
|
204
211
|
- !ruby/object:Gem::Version
|
205
|
-
version: '2.
|
212
|
+
version: '2.0'
|
206
213
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
207
214
|
requirements:
|
208
215
|
- - ">="
|
209
216
|
- !ruby/object:Gem::Version
|
210
217
|
version: '0'
|
211
218
|
requirements: []
|
212
|
-
|
219
|
+
rubyforge_project:
|
220
|
+
rubygems_version: 2.5.1
|
213
221
|
signing_key:
|
214
222
|
specification_version: 4
|
215
223
|
summary: A Simple gem to interact with the Salesforce REST API
|