restforce-db 1.2.9 → 1.2.10

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 (37) hide show
  1. checksums.yaml +4 -4
  2. data/lib/restforce/db/association_cache.rb +4 -1
  3. data/lib/restforce/db/associations/belongs_to.rb +27 -3
  4. data/lib/restforce/db/associations/has_many.rb +3 -3
  5. data/lib/restforce/db/associations/has_one.rb +2 -2
  6. data/lib/restforce/db/associator.rb +104 -0
  7. data/lib/restforce/db/cleaner.rb +3 -15
  8. data/lib/restforce/db/collector.rb +2 -4
  9. data/lib/restforce/db/initializer.rb +10 -10
  10. data/lib/restforce/db/record_types/active_record.rb +6 -7
  11. data/lib/restforce/db/record_types/base.rb +0 -2
  12. data/lib/restforce/db/record_types/salesforce.rb +6 -6
  13. data/lib/restforce/db/runner.rb +8 -8
  14. data/lib/restforce/db/runner_cache.rb +93 -0
  15. data/lib/restforce/db/version.rb +1 -1
  16. data/lib/restforce/db/worker.rb +23 -9
  17. data/lib/restforce/db.rb +2 -0
  18. data/restforce-db.gemspec +3 -3
  19. data/test/cassettes/Restforce_DB_Associations_BelongsTo/with_an_inverse_mapping/_lookups/returns_a_hash_of_the_associated_records_lookup_IDs.yml +195 -0
  20. data/test/cassettes/Restforce_DB_Associations_BelongsTo/with_an_inverse_mapping/_lookups/when_there_is_currently_no_associated_record/returns_a_nil_lookup_value_in_the_hash.yml +119 -0
  21. data/test/cassettes/Restforce_DB_Associator/_run/given_a_BelongsTo_association/given_another_record_for_association/when_the_Salesforce_association_is_out_of_date/updates_the_association_ID_in_Salesforce.yml +421 -0
  22. data/test/cassettes/Restforce_DB_Associator/_run/given_a_BelongsTo_association/given_another_record_for_association/when_the_database_association_is_out_of_date/updates_the_associated_record_in_the_database.yml +459 -0
  23. data/test/cassettes/Restforce_DB_RecordTypes_Salesforce/{_each/loops_through_the_existing_records_in_Salesforce.yml → _all/returns_a_list_of_the_existing_records_in_Salesforce.yml} +0 -0
  24. data/test/lib/restforce/db/accumulator_test.rb +3 -0
  25. data/test/lib/restforce/db/association_cache_test.rb +8 -0
  26. data/test/lib/restforce/db/associations/belongs_to_test.rb +18 -0
  27. data/test/lib/restforce/db/associator_test.rb +82 -0
  28. data/test/lib/restforce/db/configuration_test.rb +3 -0
  29. data/test/lib/restforce/db/dsl_test.rb +2 -0
  30. data/test/lib/restforce/db/record_types/salesforce_test.rb +3 -5
  31. data/test/lib/restforce/db/runner_cache_test.rb +60 -0
  32. data/test/lib/restforce/db/runner_test.rb +3 -0
  33. data/test/lib/restforce/db/strategies/passive_test.rb +3 -0
  34. data/test/lib/restforce/db/strategy_test.rb +2 -0
  35. data/test/lib/restforce/db/tracker_test.rb +3 -0
  36. data/test/support/stub.rb +37 -0
  37. metadata +18 -9
@@ -0,0 +1,421 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://<host>/services/oauth2/token
6
+ body:
7
+ encoding: US-ASCII
8
+ string: grant_type=password&client_id=<client_id>&client_secret=<client_secret>&username=<username>&password=<password><security_token>
9
+ headers:
10
+ User-Agent:
11
+ - Faraday v0.9.1
12
+ Content-Type:
13
+ - application/x-www-form-urlencoded
14
+ Accept-Encoding:
15
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
16
+ Accept:
17
+ - "*/*"
18
+ response:
19
+ status:
20
+ code: 200
21
+ message: OK
22
+ headers:
23
+ Date:
24
+ - Mon, 04 May 2015 03:15:02 GMT
25
+ Set-Cookie:
26
+ - BrowserId=yvfdr2-lRUWDXnJCSiRQIQ;Path=/;Domain=.salesforce.com;Expires=Fri,
27
+ 03-Jul-2015 03:15:02 GMT
28
+ Expires:
29
+ - Thu, 01 Jan 1970 00:00:00 GMT
30
+ Pragma:
31
+ - no-cache
32
+ Cache-Control:
33
+ - no-cache, no-store
34
+ Content-Type:
35
+ - application/json;charset=UTF-8
36
+ Transfer-Encoding:
37
+ - chunked
38
+ body:
39
+ encoding: ASCII-8BIT
40
+ string: '{"id":"https://login.salesforce.com/id/00D1a000000H3O9EAK/0051a000000UGT8AAO","issued_at":"1430709302836","token_type":"Bearer","instance_url":"https://<host>","signature":"sFPalnpID5aebkLrX2Ui9oaUhnVquClzL8oGEP1X84Q=","access_token":"00D1a000000H3O9!AQ4AQNDrKHLCuinZBZ4a3F0V9mX6K..kuE6uPghr4hEJlGztbaV7OXvvfrl14zZZxgwsTH9RfcLkE1Wikbn..Xma3Bd5XKSX"}'
41
+ http_version:
42
+ recorded_at: Mon, 04 May 2015 03:15:03 GMT
43
+ - request:
44
+ method: post
45
+ uri: https://<host>/services/data/v26.0/sobjects/Contact
46
+ body:
47
+ encoding: UTF-8
48
+ string: '{"Email":"somebody@example.com","LastName":"Somebody"}'
49
+ headers:
50
+ User-Agent:
51
+ - Faraday v0.9.1
52
+ Content-Type:
53
+ - application/json
54
+ Authorization:
55
+ - OAuth 00D1a000000H3O9!AQ4AQNDrKHLCuinZBZ4a3F0V9mX6K..kuE6uPghr4hEJlGztbaV7OXvvfrl14zZZxgwsTH9RfcLkE1Wikbn..Xma3Bd5XKSX
56
+ Accept-Encoding:
57
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
58
+ Accept:
59
+ - "*/*"
60
+ response:
61
+ status:
62
+ code: 201
63
+ message: Created
64
+ headers:
65
+ Date:
66
+ - Mon, 04 May 2015 03:15:03 GMT
67
+ Set-Cookie:
68
+ - BrowserId=5QD_KalWSjurkTsT2UeiqQ;Path=/;Domain=.salesforce.com;Expires=Fri,
69
+ 03-Jul-2015 03:15:03 GMT
70
+ Expires:
71
+ - Thu, 01 Jan 1970 00:00:00 GMT
72
+ Sforce-Limit-Info:
73
+ - api-usage=68/15000
74
+ Location:
75
+ - "/services/data/v26.0/sobjects/Contact/0031a00000317s9AAA"
76
+ Content-Type:
77
+ - application/json;charset=UTF-8
78
+ Transfer-Encoding:
79
+ - chunked
80
+ body:
81
+ encoding: ASCII-8BIT
82
+ string: '{"id":"0031a00000317s9AAA","success":true,"errors":[]}'
83
+ http_version:
84
+ recorded_at: Mon, 04 May 2015 03:15:04 GMT
85
+ - request:
86
+ method: post
87
+ uri: https://<host>/services/data/v26.0/sobjects/CustomObject__c
88
+ body:
89
+ encoding: UTF-8
90
+ string: '{"Friend__c":"0031a00000317s9AAA"}'
91
+ headers:
92
+ User-Agent:
93
+ - Faraday v0.9.1
94
+ Content-Type:
95
+ - application/json
96
+ Authorization:
97
+ - OAuth 00D1a000000H3O9!AQ4AQNDrKHLCuinZBZ4a3F0V9mX6K..kuE6uPghr4hEJlGztbaV7OXvvfrl14zZZxgwsTH9RfcLkE1Wikbn..Xma3Bd5XKSX
98
+ Accept-Encoding:
99
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
100
+ Accept:
101
+ - "*/*"
102
+ response:
103
+ status:
104
+ code: 201
105
+ message: Created
106
+ headers:
107
+ Date:
108
+ - Mon, 04 May 2015 03:15:05 GMT
109
+ Set-Cookie:
110
+ - BrowserId=vsYe3TlKTOqifwbXSOMOsg;Path=/;Domain=.salesforce.com;Expires=Fri,
111
+ 03-Jul-2015 03:15:05 GMT
112
+ Expires:
113
+ - Thu, 01 Jan 1970 00:00:00 GMT
114
+ Sforce-Limit-Info:
115
+ - api-usage=68/15000
116
+ Location:
117
+ - "/services/data/v26.0/sobjects/CustomObject__c/a001a000001U16aAAC"
118
+ Content-Type:
119
+ - application/json;charset=UTF-8
120
+ Transfer-Encoding:
121
+ - chunked
122
+ body:
123
+ encoding: ASCII-8BIT
124
+ string: '{"id":"a001a000001U16aAAC","success":true,"errors":[]}'
125
+ http_version:
126
+ recorded_at: Mon, 04 May 2015 03:15:05 GMT
127
+ - request:
128
+ method: post
129
+ uri: https://<host>/services/data/v26.0/sobjects/Contact
130
+ body:
131
+ encoding: UTF-8
132
+ string: '{"Email":"somebody+else@example.com","LastName":"Somebody"}'
133
+ headers:
134
+ User-Agent:
135
+ - Faraday v0.9.1
136
+ Content-Type:
137
+ - application/json
138
+ Authorization:
139
+ - OAuth 00D1a000000H3O9!AQ4AQNDrKHLCuinZBZ4a3F0V9mX6K..kuE6uPghr4hEJlGztbaV7OXvvfrl14zZZxgwsTH9RfcLkE1Wikbn..Xma3Bd5XKSX
140
+ Accept-Encoding:
141
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
142
+ Accept:
143
+ - "*/*"
144
+ response:
145
+ status:
146
+ code: 201
147
+ message: Created
148
+ headers:
149
+ Date:
150
+ - Mon, 04 May 2015 03:15:06 GMT
151
+ Set-Cookie:
152
+ - BrowserId=PngGdYPHSNeBUbD-g4IGQA;Path=/;Domain=.salesforce.com;Expires=Fri,
153
+ 03-Jul-2015 03:15:06 GMT
154
+ Expires:
155
+ - Thu, 01 Jan 1970 00:00:00 GMT
156
+ Sforce-Limit-Info:
157
+ - api-usage=68/15000
158
+ Location:
159
+ - "/services/data/v26.0/sobjects/Contact/0031a00000317sEAAQ"
160
+ Content-Type:
161
+ - application/json;charset=UTF-8
162
+ Transfer-Encoding:
163
+ - chunked
164
+ body:
165
+ encoding: ASCII-8BIT
166
+ string: '{"id":"0031a00000317sEAAQ","success":true,"errors":[]}'
167
+ http_version:
168
+ recorded_at: Mon, 04 May 2015 03:15:06 GMT
169
+ - request:
170
+ method: get
171
+ uri: https://<host>/services/data/v26.0/query?q=select%20Id,%20SystemModstamp,%20Name,%20Example_Field__c,%20Friend__c%20from%20CustomObject__c
172
+ body:
173
+ encoding: US-ASCII
174
+ string: ''
175
+ headers:
176
+ User-Agent:
177
+ - Faraday v0.9.1
178
+ Authorization:
179
+ - OAuth 00D1a000000H3O9!AQ4AQNDrKHLCuinZBZ4a3F0V9mX6K..kuE6uPghr4hEJlGztbaV7OXvvfrl14zZZxgwsTH9RfcLkE1Wikbn..Xma3Bd5XKSX
180
+ Accept-Encoding:
181
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
182
+ Accept:
183
+ - "*/*"
184
+ response:
185
+ status:
186
+ code: 200
187
+ message: OK
188
+ headers:
189
+ Date:
190
+ - Mon, 04 May 2015 03:15:07 GMT
191
+ Set-Cookie:
192
+ - BrowserId=9Vf48MKSRHSK-Vu8pY3kjQ;Path=/;Domain=.salesforce.com;Expires=Fri,
193
+ 03-Jul-2015 03:15:07 GMT
194
+ Expires:
195
+ - Thu, 01 Jan 1970 00:00:00 GMT
196
+ Sforce-Limit-Info:
197
+ - api-usage=68/15000
198
+ Content-Type:
199
+ - application/json;charset=UTF-8
200
+ Transfer-Encoding:
201
+ - chunked
202
+ body:
203
+ encoding: ASCII-8BIT
204
+ string: '{"totalSize":1,"done":true,"records":[{"attributes":{"type":"CustomObject__c","url":"/services/data/v26.0/sobjects/CustomObject__c/a001a000001U16aAAC"},"Id":"a001a000001U16aAAC","SystemModstamp":"2015-05-04T03:15:05.000+0000","Name":"a001a000001U16a","Example_Field__c":null,"Friend__c":"0031a00000317s9AAA"}]}'
205
+ http_version:
206
+ recorded_at: Mon, 04 May 2015 03:15:07 GMT
207
+ - request:
208
+ method: patch
209
+ uri: https://<host>/services/data/v26.0/sobjects/CustomObject__c/a001a000001U16aAAC
210
+ body:
211
+ encoding: UTF-8
212
+ string: '{"Friend__c":"0031a00000317sEAAQ"}'
213
+ headers:
214
+ User-Agent:
215
+ - Faraday v0.9.1
216
+ Content-Type:
217
+ - application/json
218
+ Authorization:
219
+ - OAuth 00D1a000000H3O9!AQ4AQNDrKHLCuinZBZ4a3F0V9mX6K..kuE6uPghr4hEJlGztbaV7OXvvfrl14zZZxgwsTH9RfcLkE1Wikbn..Xma3Bd5XKSX
220
+ Accept-Encoding:
221
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
222
+ Accept:
223
+ - "*/*"
224
+ response:
225
+ status:
226
+ code: 204
227
+ message: No Content
228
+ headers:
229
+ Date:
230
+ - Mon, 04 May 2015 03:15:08 GMT
231
+ Set-Cookie:
232
+ - BrowserId=S15nAXXcQ5qYhBjXEID16w;Path=/;Domain=.salesforce.com;Expires=Fri,
233
+ 03-Jul-2015 03:15:08 GMT
234
+ Expires:
235
+ - Thu, 01 Jan 1970 00:00:00 GMT
236
+ Sforce-Limit-Info:
237
+ - api-usage=69/15000
238
+ body:
239
+ encoding: UTF-8
240
+ string: ''
241
+ http_version:
242
+ recorded_at: Mon, 04 May 2015 03:15:08 GMT
243
+ - request:
244
+ method: get
245
+ uri: https://<host>/services/data/v26.0/query?q=select%20Id,%20SystemModstamp,%20Name,%20Example_Field__c,%20Friend__c%20from%20CustomObject__c%20where%20Id%20=%20%27a001a000001U16aAAC%27
246
+ body:
247
+ encoding: US-ASCII
248
+ string: ''
249
+ headers:
250
+ User-Agent:
251
+ - Faraday v0.9.1
252
+ Authorization:
253
+ - OAuth 00D1a000000H3O9!AQ4AQNDrKHLCuinZBZ4a3F0V9mX6K..kuE6uPghr4hEJlGztbaV7OXvvfrl14zZZxgwsTH9RfcLkE1Wikbn..Xma3Bd5XKSX
254
+ Accept-Encoding:
255
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
256
+ Accept:
257
+ - "*/*"
258
+ response:
259
+ status:
260
+ code: 200
261
+ message: OK
262
+ headers:
263
+ Date:
264
+ - Mon, 04 May 2015 03:15:09 GMT
265
+ Set-Cookie:
266
+ - BrowserId=A-_hzIHkSZqfv6e7WmBuuQ;Path=/;Domain=.salesforce.com;Expires=Fri,
267
+ 03-Jul-2015 03:15:09 GMT
268
+ Expires:
269
+ - Thu, 01 Jan 1970 00:00:00 GMT
270
+ Sforce-Limit-Info:
271
+ - api-usage=68/15000
272
+ Content-Type:
273
+ - application/json;charset=UTF-8
274
+ Transfer-Encoding:
275
+ - chunked
276
+ body:
277
+ encoding: ASCII-8BIT
278
+ string: '{"totalSize":1,"done":true,"records":[{"attributes":{"type":"CustomObject__c","url":"/services/data/v26.0/sobjects/CustomObject__c/a001a000001U16aAAC"},"Id":"a001a000001U16aAAC","SystemModstamp":"2015-05-04T03:15:08.000+0000","Name":"a001a000001U16a","Example_Field__c":null,"Friend__c":"0031a00000317sEAAQ"}]}'
279
+ http_version:
280
+ recorded_at: Mon, 04 May 2015 03:15:09 GMT
281
+ - request:
282
+ method: get
283
+ uri: https://<host>/services/data/v26.0/query?q=select%20Id,%20SystemModstamp,%20Name,%20Example_Field__c,%20Friend__c%20from%20CustomObject__c%20where%20Id%20=%20%27a001a000001U16aAAC%27
284
+ body:
285
+ encoding: US-ASCII
286
+ string: ''
287
+ headers:
288
+ User-Agent:
289
+ - Faraday v0.9.1
290
+ Authorization:
291
+ - OAuth 00D1a000000H3O9!AQ4AQNDrKHLCuinZBZ4a3F0V9mX6K..kuE6uPghr4hEJlGztbaV7OXvvfrl14zZZxgwsTH9RfcLkE1Wikbn..Xma3Bd5XKSX
292
+ Accept-Encoding:
293
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
294
+ Accept:
295
+ - "*/*"
296
+ response:
297
+ status:
298
+ code: 200
299
+ message: OK
300
+ headers:
301
+ Date:
302
+ - Mon, 04 May 2015 03:15:10 GMT
303
+ Set-Cookie:
304
+ - BrowserId=2-h8hBXZR5esa2Tk7ldn-g;Path=/;Domain=.salesforce.com;Expires=Fri,
305
+ 03-Jul-2015 03:15:10 GMT
306
+ Expires:
307
+ - Thu, 01 Jan 1970 00:00:00 GMT
308
+ Sforce-Limit-Info:
309
+ - api-usage=68/15000
310
+ Content-Type:
311
+ - application/json;charset=UTF-8
312
+ Transfer-Encoding:
313
+ - chunked
314
+ body:
315
+ encoding: ASCII-8BIT
316
+ string: '{"totalSize":1,"done":true,"records":[{"attributes":{"type":"CustomObject__c","url":"/services/data/v26.0/sobjects/CustomObject__c/a001a000001U16aAAC"},"Id":"a001a000001U16aAAC","SystemModstamp":"2015-05-04T03:15:08.000+0000","Name":"a001a000001U16a","Example_Field__c":null,"Friend__c":"0031a00000317sEAAQ"}]}'
317
+ http_version:
318
+ recorded_at: Mon, 04 May 2015 03:15:10 GMT
319
+ - request:
320
+ method: delete
321
+ uri: https://<host>/services/data/v26.0/sobjects/Contact/0031a00000317s9AAA
322
+ body:
323
+ encoding: US-ASCII
324
+ string: ''
325
+ headers:
326
+ User-Agent:
327
+ - Faraday v0.9.1
328
+ Authorization:
329
+ - OAuth 00D1a000000H3O9!AQ4AQNDrKHLCuinZBZ4a3F0V9mX6K..kuE6uPghr4hEJlGztbaV7OXvvfrl14zZZxgwsTH9RfcLkE1Wikbn..Xma3Bd5XKSX
330
+ Accept-Encoding:
331
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
332
+ Accept:
333
+ - "*/*"
334
+ response:
335
+ status:
336
+ code: 204
337
+ message: No Content
338
+ headers:
339
+ Date:
340
+ - Mon, 04 May 2015 03:15:11 GMT
341
+ Set-Cookie:
342
+ - BrowserId=_GJx2oo7TN-pyeWTJ9bMqQ;Path=/;Domain=.salesforce.com;Expires=Fri,
343
+ 03-Jul-2015 03:15:11 GMT
344
+ Expires:
345
+ - Thu, 01 Jan 1970 00:00:00 GMT
346
+ Sforce-Limit-Info:
347
+ - api-usage=69/15000
348
+ body:
349
+ encoding: UTF-8
350
+ string: ''
351
+ http_version:
352
+ recorded_at: Mon, 04 May 2015 03:15:11 GMT
353
+ - request:
354
+ method: delete
355
+ uri: https://<host>/services/data/v26.0/sobjects/CustomObject__c/a001a000001U16aAAC
356
+ body:
357
+ encoding: US-ASCII
358
+ string: ''
359
+ headers:
360
+ User-Agent:
361
+ - Faraday v0.9.1
362
+ Authorization:
363
+ - OAuth 00D1a000000H3O9!AQ4AQNDrKHLCuinZBZ4a3F0V9mX6K..kuE6uPghr4hEJlGztbaV7OXvvfrl14zZZxgwsTH9RfcLkE1Wikbn..Xma3Bd5XKSX
364
+ Accept-Encoding:
365
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
366
+ Accept:
367
+ - "*/*"
368
+ response:
369
+ status:
370
+ code: 204
371
+ message: No Content
372
+ headers:
373
+ Date:
374
+ - Mon, 04 May 2015 03:15:12 GMT
375
+ Set-Cookie:
376
+ - BrowserId=e1pJVn3hSR6X1HmSBc854g;Path=/;Domain=.salesforce.com;Expires=Fri,
377
+ 03-Jul-2015 03:15:12 GMT
378
+ Expires:
379
+ - Thu, 01 Jan 1970 00:00:00 GMT
380
+ Sforce-Limit-Info:
381
+ - api-usage=68/15000
382
+ body:
383
+ encoding: UTF-8
384
+ string: ''
385
+ http_version:
386
+ recorded_at: Mon, 04 May 2015 03:15:13 GMT
387
+ - request:
388
+ method: delete
389
+ uri: https://<host>/services/data/v26.0/sobjects/Contact/0031a00000317sEAAQ
390
+ body:
391
+ encoding: US-ASCII
392
+ string: ''
393
+ headers:
394
+ User-Agent:
395
+ - Faraday v0.9.1
396
+ Authorization:
397
+ - OAuth 00D1a000000H3O9!AQ4AQNDrKHLCuinZBZ4a3F0V9mX6K..kuE6uPghr4hEJlGztbaV7OXvvfrl14zZZxgwsTH9RfcLkE1Wikbn..Xma3Bd5XKSX
398
+ Accept-Encoding:
399
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
400
+ Accept:
401
+ - "*/*"
402
+ response:
403
+ status:
404
+ code: 204
405
+ message: No Content
406
+ headers:
407
+ Date:
408
+ - Mon, 04 May 2015 03:15:14 GMT
409
+ Set-Cookie:
410
+ - BrowserId=tqMBYV_TS263SkfMWEqCPg;Path=/;Domain=.salesforce.com;Expires=Fri,
411
+ 03-Jul-2015 03:15:14 GMT
412
+ Expires:
413
+ - Thu, 01 Jan 1970 00:00:00 GMT
414
+ Sforce-Limit-Info:
415
+ - api-usage=68/15000
416
+ body:
417
+ encoding: UTF-8
418
+ string: ''
419
+ http_version:
420
+ recorded_at: Mon, 04 May 2015 03:15:14 GMT
421
+ recorded_with: VCR 2.9.3