salesforcebulk 1.4.0 → 4.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (46) hide show
  1. checksums.yaml +5 -5
  2. data/README.md +92 -117
  3. data/lib/salesforce_bulk.rb +2 -10
  4. data/lib/salesforce_bulk/batch.rb +1 -1
  5. data/lib/salesforce_bulk/batch_result.rb +11 -11
  6. data/lib/salesforce_bulk/client.rb +91 -70
  7. data/lib/salesforce_bulk/job.rb +8 -8
  8. data/lib/salesforce_bulk/query_result_collection.rb +11 -11
  9. data/lib/salesforce_bulk/version.rb +1 -1
  10. metadata +21 -115
  11. data/.gitignore +0 -4
  12. data/.travis.yml +0 -10
  13. data/Gemfile +0 -3
  14. data/LICENSE +0 -20
  15. data/Rakefile +0 -22
  16. data/lib/salesforce_bulk/core_extensions/string.rb +0 -14
  17. data/salesforcebulk.gemspec +0 -30
  18. data/test/fixtures/batch_create_request.csv +0 -3
  19. data/test/fixtures/batch_create_response.xml +0 -13
  20. data/test/fixtures/batch_info_list_response.xml +0 -27
  21. data/test/fixtures/batch_info_response.xml +0 -14
  22. data/test/fixtures/batch_result_list_response.csv +0 -3
  23. data/test/fixtures/config.yml +0 -5
  24. data/test/fixtures/invalid_batch_error.xml +0 -5
  25. data/test/fixtures/invalid_error.xml +0 -5
  26. data/test/fixtures/invalid_job_error.xml +0 -5
  27. data/test/fixtures/invalid_session_error.xml +0 -5
  28. data/test/fixtures/job_abort_request.xml +0 -1
  29. data/test/fixtures/job_abort_response.xml +0 -25
  30. data/test/fixtures/job_close_request.xml +0 -1
  31. data/test/fixtures/job_close_response.xml +0 -25
  32. data/test/fixtures/job_create_request.xml +0 -1
  33. data/test/fixtures/job_create_response.xml +0 -25
  34. data/test/fixtures/job_info_response.xml +0 -25
  35. data/test/fixtures/login_error.xml +0 -1
  36. data/test/fixtures/login_request.xml +0 -1
  37. data/test/fixtures/login_response.xml +0 -39
  38. data/test/fixtures/query_result_list_response.xml +0 -1
  39. data/test/fixtures/query_result_response.csv +0 -5
  40. data/test/lib/test_batch.rb +0 -252
  41. data/test/lib/test_batch_result.rb +0 -36
  42. data/test/lib/test_core_extensions.rb +0 -15
  43. data/test/lib/test_initialization.rb +0 -80
  44. data/test/lib/test_job.rb +0 -247
  45. data/test/lib/test_query_result_collection.rb +0 -86
  46. data/test/test_helper.rb +0 -32
@@ -1,36 +0,0 @@
1
- require 'test_helper'
2
-
3
- class TestBatchResult < Test::Unit::TestCase
4
-
5
- def setup
6
- @result_created = SalesforceBulk::BatchResult.new('123', true, true, '')
7
- @result_updated = SalesforceBulk::BatchResult.new('123', true, false, '')
8
- @result_failed = SalesforceBulk::BatchResult.new('123', false, false, 'Some Error Message This Is')
9
- end
10
-
11
- test "basic initialization" do
12
- assert_equal @result_created.id, '123'
13
- assert_equal @result_created.success, true
14
- assert_equal @result_created.successful?, true
15
- assert_equal @result_created.created, true
16
- assert_equal @result_created.created?, true
17
- assert_equal @result_created.error, ''
18
- assert_equal @result_created.error?, false
19
- assert_equal @result_created.updated?, false
20
- end
21
-
22
- test "error?" do
23
- assert @result_failed.error?
24
-
25
- assert !@result_created.error?
26
- assert !@result_updated.error?
27
- end
28
-
29
- test "updated?" do
30
- assert @result_updated.updated?
31
-
32
- assert !@result_created.updated?
33
- assert !@result_failed.updated?
34
- end
35
-
36
- end
@@ -1,15 +0,0 @@
1
- require 'test_helper'
2
-
3
- class TestCoreExtensions < Test::Unit::TestCase
4
-
5
- test "to_b" do
6
- assert_equal "true".to_b, true
7
- assert_equal "TRUE".to_b, true
8
- assert_equal "false".to_b, false
9
- assert_equal "FALSE".to_b, false
10
- assert_equal " true ".to_b, true
11
- assert_equal " false ".to_b, false
12
- assert_equal "Any true value".to_b, "Any true value"
13
- end
14
-
15
- end
@@ -1,80 +0,0 @@
1
- require 'test_helper'
2
-
3
- class TestInitialization < Test::Unit::TestCase
4
-
5
- def setup
6
- @options = {
7
- :username => 'MyUsername',
8
- :password => 'MyPassword',
9
- }
10
-
11
- @client = SalesforceBulk::Client.new(@options)
12
- end
13
-
14
- test "initialization with default values" do
15
- assert_not_nil @client
16
- assert_equal @client.username, @options[:username]
17
- assert_equal @client.password, @options[:password]
18
- assert_equal @client.login_host, 'login.salesforce.com'
19
- assert_equal @client.version, 24.0
20
- end
21
-
22
- test "initialization overriding all default values" do
23
- @options.merge!({:login_host => 'newhost.salesforce.com', :version => 1.0})
24
-
25
- client = SalesforceBulk::Client.new(@options)
26
-
27
- assert_equal client.username, @options[:username]
28
- assert_equal client.password, @options[:password]
29
- assert_equal client.login_host, @options[:login_host]
30
- assert_equal client.version, @options[:version]
31
- end
32
-
33
- test "initialization with a YAML file" do
34
- client = SalesforceBulk::Client.new(fixture_path('config.yml'))
35
-
36
- assert_equal client.username, 'MyUsername'
37
- assert_equal client.password, 'MyPassword'
38
- assert_equal client.login_host, 'myhost.mydomain.com'
39
- assert_equal client.version, 88.0
40
- end
41
-
42
- test "initialization with invalid key raises ArgumentError" do
43
- assert_raise ArgumentError do
44
- SalesforceBulk::Client.new(:non_existing_key => '')
45
- end
46
- end
47
-
48
- test "authentication" do
49
- headers = {'Content-Type' => 'text/xml', 'SOAPAction' => 'login'}
50
- request = fixture("login_request.xml")
51
- response = fixture("login_response.xml")
52
-
53
- stub_request(:post, "https://#{@client.login_host}/services/Soap/u/24.0").with(:body => request, :headers => headers).to_return(:body => response, :status => 200)
54
-
55
- result = @client.authenticate()
56
-
57
- assert_requested :post, "https://#{@client.login_host}/services/Soap/u/24.0", :body => request, :headers => headers, :times => 1
58
-
59
- assert_equal @client.instance_host, 'na9-api.salesforce.com'
60
- assert_equal @client.instance_variable_get('@session_id'), '00DE0000000YSKp!AQ4AQNQhDKLMORZx2NwZppuKfure.ChCmdI3S35PPxpNA5MHb3ZVxhYd5STM3euVJTI5.39s.jOBT.3mKdZ3BWFDdIrddS8O'
61
- assert_equal @client, result
62
- end
63
-
64
- test "parsing instance id from server url" do
65
- assert_equal @client.instance_id('https://na1-api.salesforce.com'), 'na1-api'
66
- assert_equal @client.instance_id('https://na23-api.salesforce.com'), 'na23-api'
67
- assert_equal @client.instance_id('https://na345-api.salesforce.com'), 'na345-api'
68
- assert_equal @client.instance_id('https://NA345-API.salesforce.com'), 'NA345-API'
69
- assert_equal @client.instance_id('https://test.api.na345-api.salesforce.com'), 'test.api.na345-api'
70
-
71
- # protocol shouldn't matter, its just part of the host name we are after
72
- assert_equal @client.instance_id('://na1-api.salesforce.com'), 'na1-api'
73
- assert_equal @client.instance_id('://na23-api.salesforce.com'), 'na23-api'
74
-
75
- # in fact the .com portion shouldn't matter either
76
- assert_equal @client.instance_id('://na1-api.salesforce'), 'na1-api'
77
- assert_equal @client.instance_id('://na23-api.salesforce'), 'na23-api'
78
- end
79
-
80
- end
data/test/lib/test_job.rb DELETED
@@ -1,247 +0,0 @@
1
- require 'test_helper'
2
-
3
- class TestJob < Test::Unit::TestCase
4
-
5
- def setup
6
- options = {
7
- :username => 'myusername',
8
- :password => 'mypassword'
9
- }
10
-
11
- @client = SalesforceBulk::Client.new(options)
12
- @job = SalesforceBulk::Job.new
13
- @headers = {'Content-Type' => 'application/xml', 'X-Sfdc-Session' => '123456789'}
14
-
15
- bypass_authentication(@client)
16
- end
17
-
18
- test "initialization from XML" do
19
- xml = fixture("job_info_response.xml")
20
- job = SalesforceBulk::Job.new_from_xml(XmlSimple.xml_in(xml, 'ForceArray' => false))
21
-
22
- assert_equal job.id, '750E00000004N1mIAE'
23
- assert_equal job.operation, 'upsert'
24
- assert_equal job.sobject, 'VideoEvent__c'
25
- assert_equal job.created_by, '005E00000017spfIAA'
26
- assert_equal job.created_at, DateTime.parse('2012-05-30T04:08:30.000Z')
27
- assert_equal job.completed_at, DateTime.parse('2012-05-30T04:08:30.000Z')
28
- assert_equal job.state, 'Open'
29
- assert_equal job.external_id_field_name, 'Id__c'
30
- assert_equal job.concurrency_mode, 'Parallel'
31
- assert_equal job.content_type, 'CSV'
32
- assert_equal job.queued_batches, 0
33
- assert_equal job.in_progress_batches, 0
34
- assert_equal job.completed_batches, 0
35
- assert_equal job.failed_batches, 0
36
- assert_equal job.total_batches, 0
37
- assert_equal job.processed_records, 0
38
- assert_equal job.failed_records, 0
39
- assert_equal job.retries, 0
40
- assert_equal job.api_active_processing_time, 0
41
- assert_equal job.apex_processing_time, 0
42
- assert_equal job.total_processing_time, 0
43
- assert_equal job.api_version, 24.0
44
- end
45
-
46
- test "state?" do
47
- @job.state = 'Closed'
48
- assert @job.state?('closed')
49
-
50
- @job.state = 'Closed'
51
- assert @job.state?('CLOSED')
52
-
53
- @job.state = nil
54
- assert !@job.state?('closed')
55
- end
56
-
57
- test "aborted?" do
58
- @job.state = 'Aborted'
59
- assert @job.aborted?
60
-
61
- @job.state = nil
62
- assert !@job.aborted?
63
- end
64
-
65
- test "closed?" do
66
- @job.state = 'Closed'
67
- assert @job.closed?
68
-
69
- @job.state = nil
70
- assert !@job.closed?
71
- end
72
-
73
- test "open?" do
74
- @job.state = 'Open'
75
- assert @job.open?
76
-
77
- @job.state = nil
78
- assert !@job.open?
79
- end
80
-
81
- test "add_job returns successful response" do
82
- request = fixture("job_create_request.xml")
83
- response = fixture("job_create_response.xml")
84
-
85
- stub_request(:post, "#{api_url(@client)}job").with(:body => request, :headers => @headers).to_return(:body => response, :status => 200)
86
-
87
- job = @client.add_job(:upsert, :VideoEvent__c, :external_id_field_name => :Id__c)
88
-
89
- assert_requested :post, "#{api_url(@client)}job", :body => request, :headers => @headers, :times => 1
90
-
91
- assert_equal job.id, '750E00000004MzbIAE'
92
- assert_equal job.operation, 'upsert'
93
- assert_equal job.sobject, 'VideoEvent__c'
94
- assert_equal job.created_by, '005E00000017spfIAA'
95
- assert_equal job.created_at, DateTime.parse('2012-05-29T21:50:47.000Z')
96
- assert_equal job.completed_at, DateTime.parse('2012-05-29T21:50:47.000Z')
97
- assert_equal job.state, 'Open'
98
- assert_equal job.external_id_field_name, 'Id__c'
99
- assert_equal job.concurrency_mode, 'Parallel'
100
- assert_equal job.content_type, 'CSV'
101
- assert_equal job.queued_batches, 0
102
- assert_equal job.in_progress_batches, 0
103
- assert_equal job.completed_batches, 0
104
- assert_equal job.failed_batches, 0
105
- assert_equal job.total_batches, 0
106
- assert_equal job.processed_records, 0
107
- assert_equal job.failed_records, 0
108
- assert_equal job.retries, 0
109
- assert_equal job.api_active_processing_time, 0
110
- assert_equal job.apex_processing_time, 0
111
- assert_equal job.total_processing_time, 0
112
- assert_equal job.api_version, 24.0
113
- end
114
-
115
- test "add_job raises ArgumentError if provided with invalid operation" do
116
- assert_raise ArgumentError do
117
- job = @client.add_job(:SomeOtherOperation, nil)
118
- end
119
- end
120
-
121
- test "add_job raises ArgumentError if provided with invalid key for options" do
122
- assert_raise ArgumentError do
123
- job = @client.add_job(:upsert, :VideoEvent__c, :non_existing_key => '')
124
- end
125
- end
126
-
127
- test "add_job raises ArgumentError if provided with invalid concurrency mode" do
128
- assert_raise ArgumentError do
129
- job = @client.add_job(:upsert, :VideoEvent__c, :concurrency_mode => 'SomeMode')
130
- end
131
- end
132
-
133
- test "should close job and return successful response" do
134
- request = fixture("job_close_request.xml")
135
- response = fixture("job_close_response.xml")
136
- job_id = "750E00000004MzbIAE"
137
-
138
- stub_request(:post, "#{api_url(@client)}job/#{job_id}").with(:body => request, :headers => @headers).to_return(:body => response, :status => 200)
139
-
140
- job = @client.close_job(job_id)
141
-
142
- assert_requested :post, "#{api_url(@client)}job/#{job_id}", :body => request, :headers => @headers, :times => 1
143
-
144
- assert_equal job.id, job_id
145
- assert_equal job.operation, 'upsert'
146
- assert_equal job.sobject, 'VideoEvent__c'
147
- assert_equal job.created_by, '005E00000017spfIAA'
148
- assert_equal job.created_at, DateTime.parse('2012-05-29T23:51:53.000Z')
149
- assert_equal job.completed_at, DateTime.parse('2012-05-29T23:51:53.000Z')
150
- assert_equal job.state, 'Closed'
151
- assert_equal job.external_id_field_name, 'Id__c'
152
- assert_equal job.concurrency_mode, 'Parallel'
153
- assert_equal job.content_type, 'CSV'
154
- assert_equal job.queued_batches, 0
155
- assert_equal job.in_progress_batches, 0
156
- assert_equal job.completed_batches, 0
157
- assert_equal job.failed_batches, 0
158
- assert_equal job.total_batches, 0
159
- assert_equal job.processed_records, 0
160
- assert_equal job.failed_records, 0
161
- assert_equal job.retries, 0
162
- assert_equal job.api_active_processing_time, 0
163
- assert_equal job.apex_processing_time, 0
164
- assert_equal job.total_processing_time, 0
165
- assert_equal job.api_version, 24.0
166
- end
167
-
168
- test "should abort job and return successful response" do
169
- request = fixture("job_abort_request.xml")
170
- response = fixture("job_abort_response.xml")
171
- job_id = "750E00000004N1NIAU"
172
-
173
- stub_request(:post, "#{api_url(@client)}job/#{job_id}").with(:body => request, :headers => @headers).to_return(:body => response, :status => 200)
174
-
175
- job = @client.abort_job(job_id)
176
-
177
- assert_requested :post, "#{api_url(@client)}job/#{job_id}", :body => request, :headers => @headers, :times => 1
178
-
179
- assert_equal job.id, job_id
180
- assert_equal job.operation, 'upsert'
181
- assert_equal job.sobject, 'VideoEvent__c'
182
- assert_equal job.created_by, '005E00000017spfIAA'
183
- assert_equal job.created_at, DateTime.parse('2012-05-30T00:16:04.000Z')
184
- assert_equal job.completed_at, DateTime.parse('2012-05-30T00:16:04.000Z')
185
- assert_equal job.state, 'Aborted'
186
- assert_equal job.external_id_field_name, 'Id__c'
187
- assert_equal job.concurrency_mode, 'Parallel'
188
- assert_equal job.content_type, 'CSV'
189
- assert_equal job.queued_batches, 0
190
- assert_equal job.in_progress_batches, 0
191
- assert_equal job.completed_batches, 0
192
- assert_equal job.failed_batches, 0
193
- assert_equal job.total_batches, 0
194
- assert_equal job.processed_records, 0
195
- assert_equal job.failed_records, 0
196
- assert_equal job.retries, 0
197
- assert_equal job.api_active_processing_time, 0
198
- assert_equal job.apex_processing_time, 0
199
- assert_equal job.total_processing_time, 0
200
- assert_equal job.api_version, 24.0
201
- end
202
-
203
- test "should return job info" do
204
- response = fixture("job_info_response.xml")
205
- job_id = "750E00000004N1mIAE"
206
-
207
- stub_request(:get, "#{api_url(@client)}job/#{job_id}").with(:body => '', :headers => @headers).to_return(:body => response, :status => 200)
208
-
209
- job = @client.job_info(job_id)
210
-
211
- assert_requested :get, "#{api_url(@client)}job/#{job_id}", :body => '', :headers => @headers, :times => 1
212
-
213
- assert_equal job.id, job_id
214
- assert_equal job.operation, 'upsert'
215
- assert_equal job.sobject, 'VideoEvent__c'
216
- assert_equal job.created_by, '005E00000017spfIAA'
217
- assert_equal job.created_at, DateTime.parse('2012-05-30T04:08:30.000Z')
218
- assert_equal job.completed_at, DateTime.parse('2012-05-30T04:08:30.000Z')
219
- assert_equal job.state, 'Open'
220
- assert_equal job.external_id_field_name, 'Id__c'
221
- assert_equal job.concurrency_mode, 'Parallel'
222
- assert_equal job.content_type, 'CSV'
223
- assert_equal job.queued_batches, 0
224
- assert_equal job.in_progress_batches, 0
225
- assert_equal job.completed_batches, 0
226
- assert_equal job.failed_batches, 0
227
- assert_equal job.total_batches, 0
228
- assert_equal job.processed_records, 0
229
- assert_equal job.failed_records, 0
230
- assert_equal job.retries, 0
231
- assert_equal job.api_active_processing_time, 0
232
- assert_equal job.apex_processing_time, 0
233
- assert_equal job.total_processing_time, 0
234
- assert_equal job.api_version, 24.0
235
- end
236
-
237
- test "should raise SalesforceError on invalid job" do
238
- response = fixture("invalid_job_error.xml")
239
-
240
- stub_request(:post, "#{api_url(@client)}job").to_return(:body => response, :status => 500)
241
-
242
- assert_raise SalesforceBulk::SalesforceError do
243
- job = @client.add_job(:upsert, :SomeNonExistingObject__c, :external_id_field_name => :Id__c)
244
- end
245
- end
246
-
247
- end
@@ -1,86 +0,0 @@
1
- require 'test_helper'
2
-
3
- class TestQueryResultCollection < Test::Unit::TestCase
4
-
5
- def setup
6
- options = {
7
- :username => 'myusername',
8
- :password => 'mypassword'
9
- }
10
-
11
- @client = SalesforceBulk::Client.new(options)
12
- @job_id = "123"
13
- @batch_id = "234"
14
- @result_ids = ["12","23","34"]
15
- @result_id = @result_ids[1]
16
- @collection = SalesforceBulk::QueryResultCollection.new(@client, @job_id, @batch_id, @result_id, @result_ids)
17
- end
18
-
19
- test "initilize using defaults" do
20
- collection = SalesforceBulk::QueryResultCollection.new(@client, @job_id, @batch_id)
21
-
22
- assert_equal collection.client, @client
23
- assert_equal collection.job_id, @job_id
24
- assert_equal collection.batch_id, @batch_id
25
- assert_nil collection.result_id
26
- assert_equal collection.result_ids, []
27
- assert_equal collection.instance_variable_get('@current_index'), 0
28
- end
29
-
30
- test "initilize with all values" do
31
- assert_equal @collection.client, @client
32
- assert_equal @collection.job_id, @job_id
33
- assert_equal @collection.batch_id, @batch_id
34
- assert_equal @collection.result_id, @result_id
35
- assert_equal @collection.result_ids, @result_ids
36
- end
37
-
38
- test "next?" do
39
- assert @collection.next?
40
-
41
- @collection.instance_variable_set('@current_index', @result_ids.length - 1)
42
- assert !@collection.next?
43
-
44
- @collection.instance_variable_set('@result_ids', [])
45
- assert !@collection.next?
46
-
47
- @collection.instance_variable_set('@result_ids', nil)
48
- assert !@collection.next?
49
- end
50
-
51
- test "next" do
52
- @client.expects(:query_result).once.with(@job_id, @batch_id, @result_ids.last).returns([])
53
-
54
- @collection.next
55
-
56
- assert_kind_of SalesforceBulk::QueryResultCollection, @collection
57
- assert @collection.previous?
58
- assert !@collection.next?
59
- assert !@collection.next.any?
60
- end
61
-
62
- test "previous?" do
63
- assert @collection.previous?
64
-
65
- @collection.instance_variable_set('@current_index', 0)
66
- assert !@collection.previous?
67
-
68
- @collection.instance_variable_set('@result_ids', [])
69
- assert !@collection.previous?
70
-
71
- @collection.instance_variable_set('@result_ids', nil)
72
- assert !@collection.previous?
73
- end
74
-
75
- test "previous" do
76
- @client.expects(:query_result).once.with(@job_id, @batch_id, @result_ids.first).returns([])
77
-
78
- @collection.previous
79
-
80
- assert_kind_of SalesforceBulk::QueryResultCollection, @collection
81
- assert @collection.next?
82
- assert !@collection.previous?
83
- assert !@collection.previous.any?
84
- end
85
-
86
- end