salesforce_bulk2 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.
Files changed (47) hide show
  1. data/.gitignore +4 -0
  2. data/Gemfile +2 -0
  3. data/README.md +143 -0
  4. data/Rakefile +22 -0
  5. data/lib/salesforce_bulk/batch.rb +86 -0
  6. data/lib/salesforce_bulk/batch_result.rb +39 -0
  7. data/lib/salesforce_bulk/batch_result_collection.rb +29 -0
  8. data/lib/salesforce_bulk/client.rb +209 -0
  9. data/lib/salesforce_bulk/connection.rb +155 -0
  10. data/lib/salesforce_bulk/core_extensions/string.rb +14 -0
  11. data/lib/salesforce_bulk/job.rb +126 -0
  12. data/lib/salesforce_bulk/query_result_collection.rb +48 -0
  13. data/lib/salesforce_bulk/salesforce_error.rb +30 -0
  14. data/lib/salesforce_bulk/version.rb +3 -0
  15. data/lib/salesforce_bulk.rb +17 -0
  16. data/salesforce_bulk.gemspec +27 -0
  17. data/test/fixtures/batch_create_request.csv +3 -0
  18. data/test/fixtures/batch_create_response.xml +13 -0
  19. data/test/fixtures/batch_info_list_response.xml +27 -0
  20. data/test/fixtures/batch_info_response.xml +13 -0
  21. data/test/fixtures/batch_result_list_response.csv +3 -0
  22. data/test/fixtures/config.yml +7 -0
  23. data/test/fixtures/invalid_batch_error.xml +5 -0
  24. data/test/fixtures/invalid_error.xml +5 -0
  25. data/test/fixtures/invalid_job_error.xml +5 -0
  26. data/test/fixtures/invalid_session_error.xml +5 -0
  27. data/test/fixtures/job_abort_request.xml +1 -0
  28. data/test/fixtures/job_abort_response.xml +25 -0
  29. data/test/fixtures/job_close_request.xml +1 -0
  30. data/test/fixtures/job_close_response.xml +25 -0
  31. data/test/fixtures/job_create_request.xml +1 -0
  32. data/test/fixtures/job_create_response.xml +25 -0
  33. data/test/fixtures/job_info_response.xml +25 -0
  34. data/test/fixtures/login_error.xml +1 -0
  35. data/test/fixtures/login_request.xml +1 -0
  36. data/test/fixtures/login_response.xml +39 -0
  37. data/test/fixtures/query_result_list_response.xml +1 -0
  38. data/test/fixtures/query_result_response.csv +5 -0
  39. data/test/lib/test_batch.rb +258 -0
  40. data/test/lib/test_batch_result.rb +40 -0
  41. data/test/lib/test_core_extensions.rb +15 -0
  42. data/test/lib/test_initialization.rb +86 -0
  43. data/test/lib/test_job.rb +256 -0
  44. data/test/lib/test_query_result_collection.rb +87 -0
  45. data/test/lib/test_simple_api.rb +79 -0
  46. data/test/test_helper.rb +32 -0
  47. metadata +222 -0
@@ -0,0 +1,87 @@
1
+ require 'test_helper'
2
+
3
+ class TestQueryResultCollection < Test::Unit::TestCase
4
+
5
+ def setup
6
+ options = {
7
+ :username => 'myusername',
8
+ :password => 'mypassword',
9
+ :token => "somelongtoken"
10
+ }
11
+
12
+ @client = SalesforceBulk::Client.new(options)
13
+ @job_id = "123"
14
+ @batch_id = "234"
15
+ @result_ids = ["12","23","34"]
16
+ @result_id = @result_ids[1]
17
+ @collection = SalesforceBulk::QueryResultCollection.new(@client, @job_id, @batch_id, @result_id, @result_ids)
18
+ end
19
+
20
+ test "initilize using defaults" do
21
+ collection = SalesforceBulk::QueryResultCollection.new(@client, @job_id, @batch_id)
22
+
23
+ assert_equal collection.client, @client
24
+ assert_equal collection.job_id, @job_id
25
+ assert_equal collection.batch_id, @batch_id
26
+ assert_nil collection.result_id
27
+ assert_equal collection.result_ids, []
28
+ assert_equal collection.instance_variable_get('@current_index'), 0
29
+ end
30
+
31
+ test "initilize with all values" do
32
+ assert_equal @collection.client, @client
33
+ assert_equal @collection.job_id, @job_id
34
+ assert_equal @collection.batch_id, @batch_id
35
+ assert_equal @collection.result_id, @result_id
36
+ assert_equal @collection.result_ids, @result_ids
37
+ end
38
+
39
+ test "next?" do
40
+ assert @collection.next?
41
+
42
+ @collection.instance_variable_set('@current_index', @result_ids.length - 1)
43
+ assert !@collection.next?
44
+
45
+ @collection.instance_variable_set('@result_ids', [])
46
+ assert !@collection.next?
47
+
48
+ @collection.instance_variable_set('@result_ids', nil)
49
+ assert !@collection.next?
50
+ end
51
+
52
+ test "next" do
53
+ @client.expects(:query_result).once.with(@job_id, @batch_id, @result_ids.last).returns([])
54
+
55
+ @collection.next
56
+
57
+ assert_kind_of SalesforceBulk::QueryResultCollection, @collection
58
+ assert @collection.previous?
59
+ assert !@collection.next?
60
+ assert !@collection.next.any?
61
+ end
62
+
63
+ test "previous?" do
64
+ assert @collection.previous?
65
+
66
+ @collection.instance_variable_set('@current_index', 0)
67
+ assert !@collection.previous?
68
+
69
+ @collection.instance_variable_set('@result_ids', [])
70
+ assert !@collection.previous?
71
+
72
+ @collection.instance_variable_set('@result_ids', nil)
73
+ assert !@collection.previous?
74
+ end
75
+
76
+ test "previous" do
77
+ @client.expects(:query_result).once.with(@job_id, @batch_id, @result_ids.first).returns([])
78
+
79
+ @collection.previous
80
+
81
+ assert_kind_of SalesforceBulk::QueryResultCollection, @collection
82
+ assert @collection.next?
83
+ assert !@collection.previous?
84
+ assert !@collection.previous.any?
85
+ end
86
+
87
+ end
@@ -0,0 +1,79 @@
1
+ require 'test_helper'
2
+
3
+ class TestSimpleApi < Test::Unit::TestCase
4
+
5
+ def setup
6
+ options = {
7
+ :username => 'myusername',
8
+ :password => 'mypassword',
9
+ :token => "somelongtoken"
10
+ }
11
+
12
+ @client = SalesforceBulk::Client.new(options)
13
+ @job = SalesforceBulk::Job.new
14
+ @job.id = "123"
15
+ @batch = SalesforceBulk::Batch.new
16
+ @batch.id = "456"
17
+ end
18
+
19
+ test "delete" do
20
+ data = [{:Id => '123123'}, {:Id => '234234'}]
21
+
22
+ @client.expects(:add_job).once.with(:delete, :VideoEvent__c, :external_id_field_name => nil).returns(@job)
23
+ @client.expects(:add_batch).once.with(@job.id, data).returns(@batch)
24
+ @client.expects(:close_job).once.with(@job.id).returns(@job)
25
+ @client.expects(:batch_info).at_least_once.returns(@batch)
26
+ @client.expects(:batch_result).once.with(@job.id, @batch.id)
27
+
28
+ @client.delete(:VideoEvent__c, data)
29
+ end
30
+
31
+ test "insert" do
32
+ data = [{:Title__c => 'Test Title'}, {:Title__c => 'Test Title'}]
33
+
34
+ @client.expects(:add_job).once.with(:insert, :VideoEvent__c, :external_id_field_name => nil).returns(@job)
35
+ @client.expects(:add_batch).once.with(@job.id, data).returns(@batch)
36
+ @client.expects(:close_job).once.with(@job.id).returns(@job)
37
+ @client.expects(:batch_info).at_least_once.returns(@batch)
38
+ @client.expects(:batch_result).once.with(@job.id, @batch.id)
39
+
40
+ @client.insert(:VideoEvent__c, data)
41
+ end
42
+
43
+ test "query" do
44
+ data = 'SELECT Id, Name FROM Account'
45
+
46
+ @client.expects(:add_job).once.with(:query, :VideoEvent__c, :external_id_field_name => nil).returns(@job)
47
+ @client.expects(:add_batch).once.with(@job.id, data).returns(@batch)
48
+ @client.expects(:close_job).once.with(@job.id).returns(@job)
49
+ @client.expects(:batch_info).at_least_once.returns(@batch)
50
+ @client.expects(:batch_result).once.with(@job.id, @batch.id)
51
+
52
+ @client.query(:VideoEvent__c, data)
53
+ end
54
+
55
+ test "update" do
56
+ data = [{:Id => '123123', :Title__c => 'Test Title'}, {:Id => '234234', :Title__c => 'A Second Title'}]
57
+
58
+ @client.expects(:add_job).once.with(:update, :VideoEvent__c, :external_id_field_name => nil).returns(@job)
59
+ @client.expects(:add_batch).once.with(@job.id, data).returns(@batch)
60
+ @client.expects(:close_job).once.with(@job.id).returns(@job)
61
+ @client.expects(:batch_info).at_least_once.returns(@batch)
62
+ @client.expects(:batch_result).once.with(@job.id, @batch.id)
63
+
64
+ @client.update(:VideoEvent__c, data)
65
+ end
66
+
67
+ test "upsert" do
68
+ data = [{:Id__c => '123123', :Title__c => 'Test Title'}, {:Id__c => '234234', :Title__c => 'A Second Title'}]
69
+
70
+ @client.expects(:add_job).once.with(:upsert, :VideoEvent__c, :external_id_field_name => :Id__c).returns(@job)
71
+ @client.expects(:add_batch).once.with(@job.id, data).returns(@batch)
72
+ @client.expects(:close_job).once.with(@job.id).returns(@job)
73
+ @client.expects(:batch_info).at_least_once.returns(@batch)
74
+ @client.expects(:batch_result).once.with(@job.id, @batch.id)
75
+
76
+ @client.upsert(:VideoEvent__c, :Id__c, data)
77
+ end
78
+
79
+ end
@@ -0,0 +1,32 @@
1
+ require 'rubygems'
2
+ require 'test/unit'
3
+ require 'shoulda'
4
+ require 'mocha'
5
+ require 'webmock/test_unit'
6
+ require 'salesforce_bulk'
7
+
8
+ class Test::Unit::TestCase
9
+
10
+ def self.test(name, &block)
11
+ define_method("test #{name.inspect}", &block)
12
+ end
13
+
14
+ def api_url(client)
15
+ "https://#{client.host}/services/async/#{client.version}/"
16
+ end
17
+
18
+ def bypass_authentication(client)
19
+ client.instance_variable_set('@session_id', '123456789')
20
+ client.instance_variable_set('@host', 'na9.salesforce.com')
21
+ client.instance_variable_set('@instance_host', 'na9.salesforce.com')
22
+ end
23
+
24
+ def fixture_path(file)
25
+ File.expand_path("../fixtures/#{file}", __FILE__)
26
+ end
27
+
28
+ def fixture(file)
29
+ File.new(fixture_path(file)).read
30
+ end
31
+
32
+ end
metadata ADDED
@@ -0,0 +1,222 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: salesforce_bulk2
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.5.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Adam Kerr
9
+ - Jorge Valdivia
10
+ - Javier Julio
11
+ autorequire:
12
+ bindir: bin
13
+ cert_chain: []
14
+ date: 2012-07-31 00:00:00.000000000 Z
15
+ dependencies:
16
+ - !ruby/object:Gem::Dependency
17
+ name: active_support
18
+ requirement: !ruby/object:Gem::Requirement
19
+ none: false
20
+ requirements:
21
+ - - ! '>='
22
+ - !ruby/object:Gem::Version
23
+ version: '0'
24
+ type: :runtime
25
+ prerelease: false
26
+ version_requirements: !ruby/object:Gem::Requirement
27
+ none: false
28
+ requirements:
29
+ - - ! '>='
30
+ - !ruby/object:Gem::Version
31
+ version: '0'
32
+ - !ruby/object:Gem::Dependency
33
+ name: xml-simple
34
+ requirement: !ruby/object:Gem::Requirement
35
+ none: false
36
+ requirements:
37
+ - - ! '>='
38
+ - !ruby/object:Gem::Version
39
+ version: '0'
40
+ type: :runtime
41
+ prerelease: false
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ none: false
44
+ requirements:
45
+ - - ! '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ - !ruby/object:Gem::Dependency
49
+ name: mocha
50
+ requirement: !ruby/object:Gem::Requirement
51
+ none: false
52
+ requirements:
53
+ - - ! '>='
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
56
+ type: :development
57
+ prerelease: false
58
+ version_requirements: !ruby/object:Gem::Requirement
59
+ none: false
60
+ requirements:
61
+ - - ! '>='
62
+ - !ruby/object:Gem::Version
63
+ version: '0'
64
+ - !ruby/object:Gem::Dependency
65
+ name: rake
66
+ requirement: !ruby/object:Gem::Requirement
67
+ none: false
68
+ requirements:
69
+ - - ! '>='
70
+ - !ruby/object:Gem::Version
71
+ version: '0'
72
+ type: :development
73
+ prerelease: false
74
+ version_requirements: !ruby/object:Gem::Requirement
75
+ none: false
76
+ requirements:
77
+ - - ! '>='
78
+ - !ruby/object:Gem::Version
79
+ version: '0'
80
+ - !ruby/object:Gem::Dependency
81
+ name: shoulda
82
+ requirement: !ruby/object:Gem::Requirement
83
+ none: false
84
+ requirements:
85
+ - - ! '>='
86
+ - !ruby/object:Gem::Version
87
+ version: '0'
88
+ type: :development
89
+ prerelease: false
90
+ version_requirements: !ruby/object:Gem::Requirement
91
+ none: false
92
+ requirements:
93
+ - - ! '>='
94
+ - !ruby/object:Gem::Version
95
+ version: '0'
96
+ - !ruby/object:Gem::Dependency
97
+ name: webmock
98
+ requirement: !ruby/object:Gem::Requirement
99
+ none: false
100
+ requirements:
101
+ - - ! '>='
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ none: false
108
+ requirements:
109
+ - - ! '>='
110
+ - !ruby/object:Gem::Version
111
+ version: '0'
112
+ description: This gem is a simple interface to the Salesforce Bulk API providing support
113
+ for insert, update, upsert, delete, and query.
114
+ email:
115
+ - ajrkerr@gmail.com
116
+ - jorge@valdivia.me
117
+ - jjfutbol@gmail.com
118
+ executables: []
119
+ extensions: []
120
+ extra_rdoc_files: []
121
+ files:
122
+ - .gitignore
123
+ - Gemfile
124
+ - README.md
125
+ - Rakefile
126
+ - lib/salesforce_bulk.rb
127
+ - lib/salesforce_bulk/batch.rb
128
+ - lib/salesforce_bulk/batch_result.rb
129
+ - lib/salesforce_bulk/batch_result_collection.rb
130
+ - lib/salesforce_bulk/client.rb
131
+ - lib/salesforce_bulk/connection.rb
132
+ - lib/salesforce_bulk/core_extensions/string.rb
133
+ - lib/salesforce_bulk/job.rb
134
+ - lib/salesforce_bulk/query_result_collection.rb
135
+ - lib/salesforce_bulk/salesforce_error.rb
136
+ - lib/salesforce_bulk/version.rb
137
+ - salesforce_bulk.gemspec
138
+ - test/fixtures/batch_create_request.csv
139
+ - test/fixtures/batch_create_response.xml
140
+ - test/fixtures/batch_info_list_response.xml
141
+ - test/fixtures/batch_info_response.xml
142
+ - test/fixtures/batch_result_list_response.csv
143
+ - test/fixtures/config.yml
144
+ - test/fixtures/invalid_batch_error.xml
145
+ - test/fixtures/invalid_error.xml
146
+ - test/fixtures/invalid_job_error.xml
147
+ - test/fixtures/invalid_session_error.xml
148
+ - test/fixtures/job_abort_request.xml
149
+ - test/fixtures/job_abort_response.xml
150
+ - test/fixtures/job_close_request.xml
151
+ - test/fixtures/job_close_response.xml
152
+ - test/fixtures/job_create_request.xml
153
+ - test/fixtures/job_create_response.xml
154
+ - test/fixtures/job_info_response.xml
155
+ - test/fixtures/login_error.xml
156
+ - test/fixtures/login_request.xml
157
+ - test/fixtures/login_response.xml
158
+ - test/fixtures/query_result_list_response.xml
159
+ - test/fixtures/query_result_response.csv
160
+ - test/lib/test_batch.rb
161
+ - test/lib/test_batch_result.rb
162
+ - test/lib/test_core_extensions.rb
163
+ - test/lib/test_initialization.rb
164
+ - test/lib/test_job.rb
165
+ - test/lib/test_query_result_collection.rb
166
+ - test/lib/test_simple_api.rb
167
+ - test/test_helper.rb
168
+ homepage: https://github.com/ajrkerr/salesforce_bulk
169
+ licenses: []
170
+ post_install_message:
171
+ rdoc_options: []
172
+ require_paths:
173
+ - lib
174
+ required_ruby_version: !ruby/object:Gem::Requirement
175
+ none: false
176
+ requirements:
177
+ - - ! '>='
178
+ - !ruby/object:Gem::Version
179
+ version: '0'
180
+ required_rubygems_version: !ruby/object:Gem::Requirement
181
+ none: false
182
+ requirements:
183
+ - - ! '>='
184
+ - !ruby/object:Gem::Version
185
+ version: '0'
186
+ requirements: []
187
+ rubyforge_project:
188
+ rubygems_version: 1.8.23
189
+ signing_key:
190
+ specification_version: 3
191
+ summary: Ruby support for the Salesforce Bulk API
192
+ test_files:
193
+ - test/fixtures/batch_create_request.csv
194
+ - test/fixtures/batch_create_response.xml
195
+ - test/fixtures/batch_info_list_response.xml
196
+ - test/fixtures/batch_info_response.xml
197
+ - test/fixtures/batch_result_list_response.csv
198
+ - test/fixtures/config.yml
199
+ - test/fixtures/invalid_batch_error.xml
200
+ - test/fixtures/invalid_error.xml
201
+ - test/fixtures/invalid_job_error.xml
202
+ - test/fixtures/invalid_session_error.xml
203
+ - test/fixtures/job_abort_request.xml
204
+ - test/fixtures/job_abort_response.xml
205
+ - test/fixtures/job_close_request.xml
206
+ - test/fixtures/job_close_response.xml
207
+ - test/fixtures/job_create_request.xml
208
+ - test/fixtures/job_create_response.xml
209
+ - test/fixtures/job_info_response.xml
210
+ - test/fixtures/login_error.xml
211
+ - test/fixtures/login_request.xml
212
+ - test/fixtures/login_response.xml
213
+ - test/fixtures/query_result_list_response.xml
214
+ - test/fixtures/query_result_response.csv
215
+ - test/lib/test_batch.rb
216
+ - test/lib/test_batch_result.rb
217
+ - test/lib/test_core_extensions.rb
218
+ - test/lib/test_initialization.rb
219
+ - test/lib/test_job.rb
220
+ - test/lib/test_query_result_collection.rb
221
+ - test/lib/test_simple_api.rb
222
+ - test/test_helper.rb