restforce-db 0.5.1 → 1.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 +4 -4
- data/README.md +77 -21
- data/lib/restforce/db.rb +6 -0
- data/lib/restforce/db/associations/active_record.rb +1 -1
- data/lib/restforce/db/attribute_map.rb +5 -1
- data/lib/restforce/db/dsl.rb +80 -0
- data/lib/restforce/db/initializer.rb +3 -2
- data/lib/restforce/db/mapping.rb +20 -77
- data/lib/restforce/db/model.rb +7 -4
- data/lib/restforce/db/registry.rb +62 -0
- data/lib/restforce/db/strategies/always.rb +38 -0
- data/lib/restforce/db/strategies/passive.rb +37 -0
- data/lib/restforce/db/strategy.rb +25 -0
- data/lib/restforce/db/version.rb +1 -1
- data/test/cassettes/Restforce_DB_Initializer/_run/given_an_existing_Salesforce_record/{for_a_non-root_mapping → for_a_Passive_strategy}/does_not_create_a_database_record.yml +20 -20
- data/test/cassettes/Restforce_DB_Initializer/_run/given_an_existing_Salesforce_record/for_an_Always_strategy/creates_a_matching_database_record.yml +159 -0
- data/test/cassettes/Restforce_DB_Initializer/_run/given_an_existing_database_record/{for_a_root_mapping → for_an_Always_strategy}/populates_Salesforce_with_the_new_record.yml +44 -43
- data/test/cassettes/{Restforce_DB_Initializer/_run/given_an_existing_Salesforce_record/for_a_root_mapping/creates_a_matching_database_record.yml → Restforce_DB_Strategies_Always/_build_/given_a_Salesforce_record/wants_to_build_a_new_matching_record.yml} +30 -30
- data/test/cassettes/Restforce_DB_Strategies_Always/_build_/given_a_Salesforce_record/with_a_corresponding_database_record/does_not_want_to_build_a_new_record.yml +158 -0
- data/test/lib/restforce/db/associations/active_record_test.rb +6 -6
- data/test/lib/restforce/db/attribute_map_test.rb +5 -1
- data/test/lib/restforce/db/dsl_test.rb +80 -0
- data/test/lib/restforce/db/initializer_test.rb +8 -8
- data/test/lib/restforce/db/mapping_test.rb +7 -17
- data/test/lib/restforce/db/model_test.rb +8 -9
- data/test/lib/restforce/db/record_types/active_record_test.rb +10 -6
- data/test/lib/restforce/db/registry_test.rb +43 -0
- data/test/lib/restforce/db/strategies/always_test.rb +38 -0
- data/test/lib/restforce/db/strategies/passive_test.rb +17 -0
- data/test/lib/restforce/db/strategy_test.rb +19 -0
- data/test/support/utilities.rb +7 -9
- metadata +17 -5
@@ -21,10 +21,10 @@ http_interactions:
|
|
21
21
|
message: OK
|
22
22
|
headers:
|
23
23
|
Date:
|
24
|
-
-
|
24
|
+
- Wed, 08 Apr 2015 17:25:20 GMT
|
25
25
|
Set-Cookie:
|
26
|
-
- BrowserId=
|
27
|
-
|
26
|
+
- BrowserId=aV1yozgjTVWf7NTdcekyKQ;Path=/;Domain=.salesforce.com;Expires=Sun,
|
27
|
+
07-Jun-2015 17:25:20 GMT
|
28
28
|
Expires:
|
29
29
|
- Thu, 01 Jan 1970 00:00:00 GMT
|
30
30
|
Pragma:
|
@@ -37,22 +37,22 @@ http_interactions:
|
|
37
37
|
- chunked
|
38
38
|
body:
|
39
39
|
encoding: ASCII-8BIT
|
40
|
-
string: '{"id":"https://login.salesforce.com/id/00D1a000000H3O9EAK/0051a000000UGT8AAO","issued_at":"
|
40
|
+
string: '{"id":"https://login.salesforce.com/id/00D1a000000H3O9EAK/0051a000000UGT8AAO","issued_at":"1428513920164","token_type":"Bearer","instance_url":"https://<host>","signature":"+9Ohy1Rt/hV2LV72iFHN4G0osOsG5BWr/EnsA2it878=","access_token":"00D1a000000H3O9!AQ4AQCyefAUUsnWlCVp8nuCPw5FHOg4Bv_Grcp4GTCMkt22gpGUL_iimYlj.5dHJYoGbAKCuPttEXOKeigHMy9VPNErhVDRe"}'
|
41
41
|
http_version:
|
42
|
-
recorded_at:
|
42
|
+
recorded_at: Wed, 08 Apr 2015 17:25:19 GMT
|
43
43
|
- request:
|
44
44
|
method: post
|
45
45
|
uri: https://<host>/services/data/v26.0/sobjects/CustomObject__c
|
46
46
|
body:
|
47
47
|
encoding: UTF-8
|
48
|
-
string: '{"Name":"
|
48
|
+
string: '{"Name":"Sample object"}'
|
49
49
|
headers:
|
50
50
|
User-Agent:
|
51
51
|
- Faraday v0.9.1
|
52
52
|
Content-Type:
|
53
53
|
- application/json
|
54
54
|
Authorization:
|
55
|
-
- OAuth 00D1a000000H3O9!
|
55
|
+
- OAuth 00D1a000000H3O9!AQ4AQCyefAUUsnWlCVp8nuCPw5FHOg4Bv_Grcp4GTCMkt22gpGUL_iimYlj.5dHJYoGbAKCuPttEXOKeigHMy9VPNErhVDRe
|
56
56
|
Accept-Encoding:
|
57
57
|
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
58
58
|
Accept:
|
@@ -63,28 +63,28 @@ http_interactions:
|
|
63
63
|
message: Created
|
64
64
|
headers:
|
65
65
|
Date:
|
66
|
-
-
|
66
|
+
- Wed, 08 Apr 2015 17:25:20 GMT
|
67
67
|
Set-Cookie:
|
68
|
-
- BrowserId=
|
69
|
-
|
68
|
+
- BrowserId=bweRzNnuS5yGi0KPQtNPlw;Path=/;Domain=.salesforce.com;Expires=Sun,
|
69
|
+
07-Jun-2015 17:25:20 GMT
|
70
70
|
Expires:
|
71
71
|
- Thu, 01 Jan 1970 00:00:00 GMT
|
72
72
|
Sforce-Limit-Info:
|
73
|
-
- api-usage=
|
73
|
+
- api-usage=1/15000
|
74
74
|
Location:
|
75
|
-
- "/services/data/v26.0/sobjects/CustomObject__c/
|
75
|
+
- "/services/data/v26.0/sobjects/CustomObject__c/a001a000001LMs9AAG"
|
76
76
|
Content-Type:
|
77
77
|
- application/json;charset=UTF-8
|
78
78
|
Transfer-Encoding:
|
79
79
|
- chunked
|
80
80
|
body:
|
81
81
|
encoding: ASCII-8BIT
|
82
|
-
string: '{"id":"
|
82
|
+
string: '{"id":"a001a000001LMs9AAG","success":true,"errors":[]}'
|
83
83
|
http_version:
|
84
|
-
recorded_at:
|
84
|
+
recorded_at: Wed, 08 Apr 2015 17:25:19 GMT
|
85
85
|
- request:
|
86
86
|
method: get
|
87
|
-
uri: https://<host>/services/data/v26.0/query?q=select%20Id,%20SystemModstamp,%20Name,%20Example_Field__c%20from%20CustomObject__c
|
87
|
+
uri: https://<host>/services/data/v26.0/query?q=select%20Id,%20SystemModstamp,%20Name,%20Example_Field__c%20from%20CustomObject__c%20where%20Id%20=%20%27a001a000001LMs9AAG%27
|
88
88
|
body:
|
89
89
|
encoding: US-ASCII
|
90
90
|
string: ''
|
@@ -92,7 +92,7 @@ http_interactions:
|
|
92
92
|
User-Agent:
|
93
93
|
- Faraday v0.9.1
|
94
94
|
Authorization:
|
95
|
-
- OAuth 00D1a000000H3O9!
|
95
|
+
- OAuth 00D1a000000H3O9!AQ4AQCyefAUUsnWlCVp8nuCPw5FHOg4Bv_Grcp4GTCMkt22gpGUL_iimYlj.5dHJYoGbAKCuPttEXOKeigHMy9VPNErhVDRe
|
96
96
|
Accept-Encoding:
|
97
97
|
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
98
98
|
Accept:
|
@@ -103,27 +103,27 @@ http_interactions:
|
|
103
103
|
message: OK
|
104
104
|
headers:
|
105
105
|
Date:
|
106
|
-
-
|
106
|
+
- Wed, 08 Apr 2015 17:25:20 GMT
|
107
107
|
Set-Cookie:
|
108
|
-
- BrowserId=
|
109
|
-
|
108
|
+
- BrowserId=LdEHnhcdRxGe-GXkxf1njw;Path=/;Domain=.salesforce.com;Expires=Sun,
|
109
|
+
07-Jun-2015 17:25:20 GMT
|
110
110
|
Expires:
|
111
111
|
- Thu, 01 Jan 1970 00:00:00 GMT
|
112
112
|
Sforce-Limit-Info:
|
113
|
-
- api-usage=
|
113
|
+
- api-usage=1/15000
|
114
114
|
Content-Type:
|
115
115
|
- application/json;charset=UTF-8
|
116
116
|
Transfer-Encoding:
|
117
117
|
- chunked
|
118
118
|
body:
|
119
119
|
encoding: ASCII-8BIT
|
120
|
-
string: '{"totalSize":1,"done":true,"records":[{"attributes":{"type":"CustomObject__c","url":"/services/data/v26.0/sobjects/CustomObject__c/
|
121
|
-
object","Example_Field__c":
|
120
|
+
string: '{"totalSize":1,"done":true,"records":[{"attributes":{"type":"CustomObject__c","url":"/services/data/v26.0/sobjects/CustomObject__c/a001a000001LMs9AAG"},"Id":"a001a000001LMs9AAG","SystemModstamp":"2015-04-08T17:25:20.000+0000","Name":"Sample
|
121
|
+
object","Example_Field__c":null}]}'
|
122
122
|
http_version:
|
123
|
-
recorded_at:
|
123
|
+
recorded_at: Wed, 08 Apr 2015 17:25:19 GMT
|
124
124
|
- request:
|
125
125
|
method: delete
|
126
|
-
uri: https://<host>/services/data/v26.0/sobjects/CustomObject__c/
|
126
|
+
uri: https://<host>/services/data/v26.0/sobjects/CustomObject__c/a001a000001LMs9AAG
|
127
127
|
body:
|
128
128
|
encoding: US-ASCII
|
129
129
|
string: ''
|
@@ -131,7 +131,7 @@ http_interactions:
|
|
131
131
|
User-Agent:
|
132
132
|
- Faraday v0.9.1
|
133
133
|
Authorization:
|
134
|
-
- OAuth 00D1a000000H3O9!
|
134
|
+
- OAuth 00D1a000000H3O9!AQ4AQCyefAUUsnWlCVp8nuCPw5FHOg4Bv_Grcp4GTCMkt22gpGUL_iimYlj.5dHJYoGbAKCuPttEXOKeigHMy9VPNErhVDRe
|
135
135
|
Accept-Encoding:
|
136
136
|
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
137
137
|
Accept:
|
@@ -142,17 +142,17 @@ http_interactions:
|
|
142
142
|
message: No Content
|
143
143
|
headers:
|
144
144
|
Date:
|
145
|
-
-
|
145
|
+
- Wed, 08 Apr 2015 17:25:20 GMT
|
146
146
|
Set-Cookie:
|
147
|
-
- BrowserId=
|
148
|
-
|
147
|
+
- BrowserId=vEmT_p9fRFiuV4_9cudymw;Path=/;Domain=.salesforce.com;Expires=Sun,
|
148
|
+
07-Jun-2015 17:25:20 GMT
|
149
149
|
Expires:
|
150
150
|
- Thu, 01 Jan 1970 00:00:00 GMT
|
151
151
|
Sforce-Limit-Info:
|
152
|
-
- api-usage=
|
152
|
+
- api-usage=1/15000
|
153
153
|
body:
|
154
154
|
encoding: UTF-8
|
155
155
|
string: ''
|
156
156
|
http_version:
|
157
|
-
recorded_at:
|
157
|
+
recorded_at: Wed, 08 Apr 2015 17:25:19 GMT
|
158
158
|
recorded_with: VCR 2.9.3
|
@@ -0,0 +1,158 @@
|
|
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
|
+
- Wed, 08 Apr 2015 17:25:17 GMT
|
25
|
+
Set-Cookie:
|
26
|
+
- BrowserId=lengI2EHTRub2Ko8hohJlQ;Path=/;Domain=.salesforce.com;Expires=Sun,
|
27
|
+
07-Jun-2015 17:25:17 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":"1428513917270","token_type":"Bearer","instance_url":"https://<host>","signature":"EQGJyzSNyv8NhiCakDKNBRYnVOwnkS5/GgopPeymCdM=","access_token":"00D1a000000H3O9!AQ4AQCyefAUUsnWlCVp8nuCPw5FHOg4Bv_Grcp4GTCMkt22gpGUL_iimYlj.5dHJYoGbAKCuPttEXOKeigHMy9VPNErhVDRe"}'
|
41
|
+
http_version:
|
42
|
+
recorded_at: Wed, 08 Apr 2015 17:25:16 GMT
|
43
|
+
- request:
|
44
|
+
method: post
|
45
|
+
uri: https://<host>/services/data/v26.0/sobjects/CustomObject__c
|
46
|
+
body:
|
47
|
+
encoding: UTF-8
|
48
|
+
string: '{"Name":"Sample object"}'
|
49
|
+
headers:
|
50
|
+
User-Agent:
|
51
|
+
- Faraday v0.9.1
|
52
|
+
Content-Type:
|
53
|
+
- application/json
|
54
|
+
Authorization:
|
55
|
+
- OAuth 00D1a000000H3O9!AQ4AQCyefAUUsnWlCVp8nuCPw5FHOg4Bv_Grcp4GTCMkt22gpGUL_iimYlj.5dHJYoGbAKCuPttEXOKeigHMy9VPNErhVDRe
|
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
|
+
- Wed, 08 Apr 2015 17:25:17 GMT
|
67
|
+
Set-Cookie:
|
68
|
+
- BrowserId=zaP7cAcjRAO83Rd04ogCbg;Path=/;Domain=.salesforce.com;Expires=Sun,
|
69
|
+
07-Jun-2015 17:25:17 GMT
|
70
|
+
Expires:
|
71
|
+
- Thu, 01 Jan 1970 00:00:00 GMT
|
72
|
+
Sforce-Limit-Info:
|
73
|
+
- api-usage=1/15000
|
74
|
+
Location:
|
75
|
+
- "/services/data/v26.0/sobjects/CustomObject__c/a001a000001LMs4AAG"
|
76
|
+
Content-Type:
|
77
|
+
- application/json;charset=UTF-8
|
78
|
+
Transfer-Encoding:
|
79
|
+
- chunked
|
80
|
+
body:
|
81
|
+
encoding: ASCII-8BIT
|
82
|
+
string: '{"id":"a001a000001LMs4AAG","success":true,"errors":[]}'
|
83
|
+
http_version:
|
84
|
+
recorded_at: Wed, 08 Apr 2015 17:25:16 GMT
|
85
|
+
- request:
|
86
|
+
method: get
|
87
|
+
uri: https://<host>/services/data/v26.0/query?q=select%20Id,%20SystemModstamp,%20Name,%20Example_Field__c%20from%20CustomObject__c%20where%20Id%20=%20%27a001a000001LMs4AAG%27
|
88
|
+
body:
|
89
|
+
encoding: US-ASCII
|
90
|
+
string: ''
|
91
|
+
headers:
|
92
|
+
User-Agent:
|
93
|
+
- Faraday v0.9.1
|
94
|
+
Authorization:
|
95
|
+
- OAuth 00D1a000000H3O9!AQ4AQCyefAUUsnWlCVp8nuCPw5FHOg4Bv_Grcp4GTCMkt22gpGUL_iimYlj.5dHJYoGbAKCuPttEXOKeigHMy9VPNErhVDRe
|
96
|
+
Accept-Encoding:
|
97
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
98
|
+
Accept:
|
99
|
+
- "*/*"
|
100
|
+
response:
|
101
|
+
status:
|
102
|
+
code: 200
|
103
|
+
message: OK
|
104
|
+
headers:
|
105
|
+
Date:
|
106
|
+
- Wed, 08 Apr 2015 17:25:17 GMT
|
107
|
+
Set-Cookie:
|
108
|
+
- BrowserId=WXSf9tl1QHmxrtYD_ZRVmA;Path=/;Domain=.salesforce.com;Expires=Sun,
|
109
|
+
07-Jun-2015 17:25:17 GMT
|
110
|
+
Expires:
|
111
|
+
- Thu, 01 Jan 1970 00:00:00 GMT
|
112
|
+
Sforce-Limit-Info:
|
113
|
+
- api-usage=1/15000
|
114
|
+
Content-Type:
|
115
|
+
- application/json;charset=UTF-8
|
116
|
+
Transfer-Encoding:
|
117
|
+
- chunked
|
118
|
+
body:
|
119
|
+
encoding: ASCII-8BIT
|
120
|
+
string: '{"totalSize":1,"done":true,"records":[{"attributes":{"type":"CustomObject__c","url":"/services/data/v26.0/sobjects/CustomObject__c/a001a000001LMs4AAG"},"Id":"a001a000001LMs4AAG","SystemModstamp":"2015-04-08T17:25:17.000+0000","Name":"Sample
|
121
|
+
object","Example_Field__c":null}]}'
|
122
|
+
http_version:
|
123
|
+
recorded_at: Wed, 08 Apr 2015 17:25:16 GMT
|
124
|
+
- request:
|
125
|
+
method: delete
|
126
|
+
uri: https://<host>/services/data/v26.0/sobjects/CustomObject__c/a001a000001LMs4AAG
|
127
|
+
body:
|
128
|
+
encoding: US-ASCII
|
129
|
+
string: ''
|
130
|
+
headers:
|
131
|
+
User-Agent:
|
132
|
+
- Faraday v0.9.1
|
133
|
+
Authorization:
|
134
|
+
- OAuth 00D1a000000H3O9!AQ4AQCyefAUUsnWlCVp8nuCPw5FHOg4Bv_Grcp4GTCMkt22gpGUL_iimYlj.5dHJYoGbAKCuPttEXOKeigHMy9VPNErhVDRe
|
135
|
+
Accept-Encoding:
|
136
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
137
|
+
Accept:
|
138
|
+
- "*/*"
|
139
|
+
response:
|
140
|
+
status:
|
141
|
+
code: 204
|
142
|
+
message: No Content
|
143
|
+
headers:
|
144
|
+
Date:
|
145
|
+
- Wed, 08 Apr 2015 17:25:18 GMT
|
146
|
+
Set-Cookie:
|
147
|
+
- BrowserId=Jr37xurySTWA9GLgtkUEsA;Path=/;Domain=.salesforce.com;Expires=Sun,
|
148
|
+
07-Jun-2015 17:25:18 GMT
|
149
|
+
Expires:
|
150
|
+
- Thu, 01 Jan 1970 00:00:00 GMT
|
151
|
+
Sforce-Limit-Info:
|
152
|
+
- api-usage=1/15000
|
153
|
+
body:
|
154
|
+
encoding: UTF-8
|
155
|
+
string: ''
|
156
|
+
http_version:
|
157
|
+
recorded_at: Wed, 08 Apr 2015 17:25:17 GMT
|
158
|
+
recorded_with: VCR 2.9.3
|
@@ -15,12 +15,12 @@ describe Restforce::DB::Associations::ActiveRecord do
|
|
15
15
|
let(:associated_record) { association.build(salesforce_record) }
|
16
16
|
|
17
17
|
before do
|
18
|
-
mapping = Restforce::DB::Mapping.new(
|
19
|
-
|
20
|
-
"
|
21
|
-
|
22
|
-
|
23
|
-
|
18
|
+
mapping = Restforce::DB::Mapping.new(User, "Contact").tap do |m|
|
19
|
+
m.through = "Friend__c"
|
20
|
+
m.fields = { email: "Email" }
|
21
|
+
end
|
22
|
+
Restforce::DB::Registry << mapping
|
23
|
+
|
24
24
|
salesforce_record_type = mapping.salesforce_record_type
|
25
25
|
|
26
26
|
# Stub out the `#find` method on the record type
|
@@ -16,7 +16,11 @@ describe Restforce::DB::AttributeMap do
|
|
16
16
|
let(:attribute_map) { Restforce::DB::AttributeMap.new(database_model, salesforce_model, fields) }
|
17
17
|
|
18
18
|
describe "#attributes" do
|
19
|
-
let(:mapping)
|
19
|
+
let(:mapping) do
|
20
|
+
Restforce::DB::Mapping.new(database_model, salesforce_model).tap do |m|
|
21
|
+
m.fields = fields
|
22
|
+
end
|
23
|
+
end
|
20
24
|
|
21
25
|
it "builds a normalized Hash of database attribute values" do
|
22
26
|
attributes = attribute_map.attributes(database_model) do |attribute|
|
@@ -0,0 +1,80 @@
|
|
1
|
+
require_relative "../../../test_helper"
|
2
|
+
|
3
|
+
describe Restforce::DB::DSL do
|
4
|
+
|
5
|
+
let(:database_model) { CustomObject }
|
6
|
+
let(:salesforce_model) { "CustomObject__c" }
|
7
|
+
let(:strategy) { :always }
|
8
|
+
let(:dsl) { Restforce::DB::DSL.new(database_model, salesforce_model, strategy) }
|
9
|
+
let(:mapping) { dsl.mapping }
|
10
|
+
|
11
|
+
before { dsl }
|
12
|
+
|
13
|
+
describe "#initialize" do
|
14
|
+
|
15
|
+
it "registers a mapping for the passed models" do
|
16
|
+
expect(Restforce::DB::Registry[database_model]).to_equal [mapping]
|
17
|
+
expect(Restforce::DB::Registry[salesforce_model]).to_equal [mapping]
|
18
|
+
end
|
19
|
+
|
20
|
+
describe "when a strategy of :always is specified" do
|
21
|
+
let(:strategy) { :always }
|
22
|
+
|
23
|
+
it "respects the declared strategy" do
|
24
|
+
expect(dsl.mapping.strategy).to_be_instance_of(Restforce::DB::Strategies::Always)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
describe "when a strategy of :passive is specified" do
|
29
|
+
let(:strategy) { :passive }
|
30
|
+
|
31
|
+
it "respects the declared strategy" do
|
32
|
+
expect(dsl.mapping.strategy).to_be_instance_of(Restforce::DB::Strategies::Passive)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
describe "#where" do
|
38
|
+
let(:conditions) { %w(some list of query conditions) }
|
39
|
+
|
40
|
+
before do
|
41
|
+
dsl.where(*conditions)
|
42
|
+
end
|
43
|
+
|
44
|
+
it "sets a list of conditions for the mapping" do
|
45
|
+
expect(mapping.conditions).to_equal conditions
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
describe "#belongs_to" do
|
50
|
+
before do
|
51
|
+
dsl.belongs_to :some_association, through: "Some_Field__c"
|
52
|
+
end
|
53
|
+
|
54
|
+
it "adds an association to the created mapping" do
|
55
|
+
expect(mapping.associations).to_equal some_association: "Some_Field__c"
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
describe "#has_one" do
|
60
|
+
before do
|
61
|
+
dsl.has_one :other_association, through: "Other_Field__c"
|
62
|
+
end
|
63
|
+
|
64
|
+
it "sets the `through` attribute for the created mapping" do
|
65
|
+
expect(mapping.through).to_equal "Other_Field__c"
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
describe "#maps" do
|
70
|
+
let(:fields) { { some: "Fields__c", to: "Sync__c" } }
|
71
|
+
|
72
|
+
before do
|
73
|
+
dsl.maps fields
|
74
|
+
end
|
75
|
+
|
76
|
+
it "sets the fields for the created mapping" do
|
77
|
+
expect(mapping.fields).to_equal fields
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
@@ -26,8 +26,9 @@ describe Restforce::DB::Initializer do
|
|
26
26
|
salesforce_id
|
27
27
|
end
|
28
28
|
|
29
|
-
describe "for
|
29
|
+
describe "for an Always strategy" do
|
30
30
|
before do
|
31
|
+
mapping.strategy = Restforce::DB::Strategies::Always.new
|
31
32
|
initializer.run
|
32
33
|
end
|
33
34
|
|
@@ -40,10 +41,9 @@ describe Restforce::DB::Initializer do
|
|
40
41
|
end
|
41
42
|
end
|
42
43
|
|
43
|
-
describe "for a
|
44
|
-
let(:through) { "SomeField__c" }
|
45
|
-
|
44
|
+
describe "for a Passive strategy" do
|
46
45
|
before do
|
46
|
+
mapping.strategy = Restforce::DB::Strategies::Passive.new
|
47
47
|
initializer.run
|
48
48
|
end
|
49
49
|
|
@@ -61,8 +61,9 @@ describe Restforce::DB::Initializer do
|
|
61
61
|
database_record
|
62
62
|
end
|
63
63
|
|
64
|
-
describe "for
|
64
|
+
describe "for an Always strategy" do
|
65
65
|
before do
|
66
|
+
mapping.strategy = Restforce::DB::Strategies::Always.new
|
66
67
|
initializer.run
|
67
68
|
Salesforce.records << [salesforce_model, salesforce_id]
|
68
69
|
end
|
@@ -75,10 +76,9 @@ describe Restforce::DB::Initializer do
|
|
75
76
|
end
|
76
77
|
end
|
77
78
|
|
78
|
-
describe "for a
|
79
|
-
let(:through) { "SomeField__c" }
|
80
|
-
|
79
|
+
describe "for a Passive strategy" do
|
81
80
|
before do
|
81
|
+
mapping.strategy = Restforce::DB::Strategies::Passive.new
|
82
82
|
initializer.run
|
83
83
|
end
|
84
84
|
|