braze_ruby 0.4.0 → 0.6.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 (111) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +26 -0
  3. data/.github/workflows/gem_credentials +2 -0
  4. data/.github/workflows/release.yml +20 -0
  5. data/.gitignore +12 -19
  6. data/.standard.yml +1 -0
  7. data/Gemfile +1 -2
  8. data/LICENSE.txt +17 -18
  9. data/README.md +54 -2
  10. data/Rakefile +2 -1
  11. data/bin/release +16 -0
  12. data/braze_ruby.gemspec +28 -31
  13. data/lib/braze_ruby.rb +4 -4
  14. data/lib/braze_ruby/api.rb +17 -10
  15. data/lib/braze_ruby/deprecated.rb +4 -5
  16. data/lib/braze_ruby/endpoints.rb +11 -7
  17. data/lib/braze_ruby/endpoints/create_user_aliases.rb +19 -0
  18. data/lib/braze_ruby/endpoints/remove_email_addresses_from_spam.rb +19 -0
  19. data/lib/braze_ruby/endpoints/remove_external_ids.rb +19 -0
  20. data/lib/braze_ruby/endpoints/rename_external_ids.rb +19 -0
  21. data/lib/braze_ruby/endpoints/subscription.rb +0 -1
  22. data/lib/braze_ruby/http.rb +12 -9
  23. data/lib/braze_ruby/rest.rb +21 -17
  24. data/lib/braze_ruby/rest/base.rb +3 -3
  25. data/lib/braze_ruby/rest/canvas_details.rb +1 -1
  26. data/lib/braze_ruby/rest/create_user_aliases.rb +13 -0
  27. data/lib/braze_ruby/rest/delete_users.rb +2 -2
  28. data/lib/braze_ruby/rest/email_hard_bounces.rb +1 -1
  29. data/lib/braze_ruby/rest/email_status.rb +3 -3
  30. data/lib/braze_ruby/rest/email_unsubscribes.rb +1 -1
  31. data/lib/braze_ruby/rest/export_users.rb +7 -7
  32. data/lib/braze_ruby/rest/identify_users.rb +2 -2
  33. data/lib/braze_ruby/rest/list_segments.rb +1 -1
  34. data/lib/braze_ruby/rest/remove_email_addresses_from_spam.rb +13 -0
  35. data/lib/braze_ruby/rest/remove_external_ids.rb +13 -0
  36. data/lib/braze_ruby/rest/rename_external_ids.rb +13 -0
  37. data/lib/braze_ruby/rest/schedule_messages.rb +6 -6
  38. data/lib/braze_ruby/rest/send_messages.rb +3 -3
  39. data/lib/braze_ruby/rest/subscription_status_get.rb +1 -1
  40. data/lib/braze_ruby/rest/subscription_status_set.rb +1 -1
  41. data/lib/braze_ruby/rest/subscription_user_status.rb +1 -1
  42. data/lib/braze_ruby/rest/track_users.rb +4 -4
  43. data/lib/braze_ruby/rest/trigger_campaign_send.rb +1 -1
  44. data/lib/braze_ruby/rest/trigger_canvas_send.rb +1 -1
  45. data/lib/braze_ruby/version.rb +1 -1
  46. metadata +52 -166
  47. data/.github/workflows/ci.yml +0 -30
  48. data/Gemfile.lock +0 -78
  49. data/spec/braze_ruby/api_spec.rb +0 -6
  50. data/spec/braze_ruby/endpoints/delete_users_spec.rb +0 -31
  51. data/spec/braze_ruby/endpoints/track_users_spec.rb +0 -74
  52. data/spec/braze_ruby/http_spec.rb +0 -48
  53. data/spec/braze_ruby/rest/delete_users_spec.rb +0 -22
  54. data/spec/braze_ruby/rest/email_status_spec.rb +0 -20
  55. data/spec/braze_ruby/rest/export_users_spec.rb +0 -21
  56. data/spec/braze_ruby/rest/identify_users_spec.rb +0 -23
  57. data/spec/braze_ruby/rest/schedule_messages_spec.rb +0 -37
  58. data/spec/braze_ruby/rest/send_messages_spec.rb +0 -30
  59. data/spec/braze_ruby/rest/track_users_spec.rb +0 -27
  60. data/spec/factories.rb +0 -38
  61. data/spec/fixtures/responses/campaigns/trigger_send/sends_an_email.yml +0 -71
  62. data/spec/fixtures/responses/canvas/details/returns_error_when_no_canvas.yml +0 -69
  63. data/spec/fixtures/responses/canvas/trigger_send/sends_a_canvas.yml +0 -71
  64. data/spec/fixtures/responses/delete_users/unauthorized/responds_with_unauthorized.yml +0 -68
  65. data/spec/fixtures/responses/delete_users/with_success/responds_with_created.yml +0 -71
  66. data/spec/fixtures/responses/delete_users/with_success/responds_with_success_message.yml +0 -71
  67. data/spec/fixtures/responses/email_status/existing_email/responds_with_created.yml +0 -71
  68. data/spec/fixtures/responses/email_status/existing_email/responds_with_success_message.yml +0 -71
  69. data/spec/fixtures/responses/email_status/unknown_email/responds_with_bad_request.yml +0 -71
  70. data/spec/fixtures/responses/email_status/unknown_email/responds_with_success_message.yml +0 -71
  71. data/spec/fixtures/responses/email_sync/hard_bounces/responds_with_empty_array_when_no_hard_bounces.yml +0 -75
  72. data/spec/fixtures/responses/email_sync/unsubscribes/responds_with_empty_array_when_no_unsubscribes.yml +0 -75
  73. data/spec/fixtures/responses/email_sync/unsubscribes/responds_with_unsubscribed_emails.yml +0 -75
  74. data/spec/fixtures/responses/export_users/by_ids/with_success/responds_with_created.yml +0 -72
  75. data/spec/fixtures/responses/export_users/by_segment/with_success/responds_with_created.yml +0 -71
  76. data/spec/fixtures/responses/identify_users/unauthorized/responds_with_unauthorized.yml +0 -68
  77. data/spec/fixtures/responses/identify_users/with_success/responds_with_created.yml +0 -71
  78. data/spec/fixtures/responses/identify_users/with_success/responds_with_success_message.yml +0 -71
  79. data/spec/fixtures/responses/list_segments/with_success/responds_with_a_list_of_segments.yml +0 -81
  80. data/spec/fixtures/responses/list_segments/with_success/responds_with_success.yml +0 -81
  81. data/spec/fixtures/responses/schedule_messages/unauthorized/responds_with_unauthorize.yml +0 -68
  82. data/spec/fixtures/responses/schedule_messages/with_success/responds_with_created.yml +0 -71
  83. data/spec/fixtures/responses/schedule_messages/with_success/responds_with_success_message.yml +0 -71
  84. data/spec/fixtures/responses/send_messages/unauthorized/responds_with_unauthorized.yml +0 -68
  85. data/spec/fixtures/responses/send_messages/with_success/responds_with_created.yml +0 -71
  86. data/spec/fixtures/responses/send_messages/with_success/responds_with_success_message.yml +0 -71
  87. data/spec/fixtures/responses/subscription/subscription_status_set/when_subscribing/subscribes_the_user.yml +0 -71
  88. data/spec/fixtures/responses/subscription/subscription_status_set/when_subscription_group_does_not_exist/returns_an_error_status.yml +0 -68
  89. data/spec/fixtures/responses/subscription/subscription_status_set/when_unsubscribing/unsubscribes_the_user.yml +0 -139
  90. data/spec/fixtures/responses/subscription/when_getting_subscription_group_statuses/subscription_status_get/when_checking_subscribed_and_unsubscribed_user_status/returns_only_users_that_were_once_subscribed.yml +0 -211
  91. data/spec/fixtures/responses/subscription/when_getting_subscription_group_statuses/subscription_status_get/when_group_does_not_exist/returns_an_error.yml +0 -199
  92. data/spec/fixtures/responses/subscription/when_getting_subscription_group_statuses/subscription_user_status/returns_subscription_groups_and_status_for_every_group.yml +0 -211
  93. data/spec/fixtures/responses/track_users/unauthorized/responds_with_unauthorized.yml +0 -70
  94. data/spec/fixtures/responses/track_users/with_success/responds_with_created.yml +0 -73
  95. data/spec/fixtures/responses/track_users/with_success/responds_with_success_message.yml +0 -73
  96. data/spec/integrations/campaigns_spec.rb +0 -19
  97. data/spec/integrations/canvas_spec.rb +0 -28
  98. data/spec/integrations/delete_users_spec.rb +0 -32
  99. data/spec/integrations/email_status_spec.rb +0 -38
  100. data/spec/integrations/email_sync_spec.rb +0 -31
  101. data/spec/integrations/export_users_spec.rb +0 -29
  102. data/spec/integrations/identify_users_spec.rb +0 -32
  103. data/spec/integrations/list_segments_spec.rb +0 -21
  104. data/spec/integrations/schedule_messages_spec.rb +0 -34
  105. data/spec/integrations/send_messages_spec.rb +0 -33
  106. data/spec/integrations/subscription_spec.rb +0 -149
  107. data/spec/integrations/track_users_spec.rb +0 -38
  108. data/spec/spec_helper.rb +0 -25
  109. data/spec/support/factory_bot.rb +0 -12
  110. data/spec/support/integrations.rb +0 -27
  111. data/spec/support/vcr.rb +0 -20
@@ -1,211 +0,0 @@
1
- ---
2
- http_interactions:
3
- - request:
4
- method: post
5
- uri: "<BRAZE_REST_URL>/subscription/status/set"
6
- body:
7
- encoding: UTF-8
8
- string: '{"external_id":"test-user-1","subscription_group_id":"ed06e19a-69b1-4f9b-a452-2db2c4e303a8","subscription_state":"subscribed"}'
9
- headers:
10
- Content-Type:
11
- - application/json
12
- Accept:
13
- - application/json
14
- User-Agent:
15
- - Braze Ruby gem v0.3.3
16
- Authorization:
17
- - Bearer <BRAZE_REST_API_KEY>
18
- Accept-Encoding:
19
- - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
20
- response:
21
- status:
22
- code: 201
23
- message: Created
24
- headers:
25
- Connection:
26
- - keep-alive
27
- Content-Length:
28
- - '46'
29
- Cache-Control:
30
- - max-age=0, private, must-revalidate
31
- Content-Type:
32
- - application/json
33
- Etag:
34
- - W/"838a7c62adda8d131d694ae13ba2c5b7"
35
- Server:
36
- - nginx
37
- Strict-Transport-Security:
38
- - max-age=0; includeSubDomains
39
- - max-age=31536000; includeSubDomains
40
- X-Ratelimit-Limit:
41
- - '250000'
42
- X-Ratelimit-Remaining:
43
- - '249995'
44
- X-Ratelimit-Reset:
45
- - '1592478000'
46
- X-Request-Id:
47
- - 3c0417c1-397b-4f71-b60c-c2a2082a435a
48
- X-Runtime:
49
- - '0.012552'
50
- Accept-Ranges:
51
- - bytes
52
- Date:
53
- - Thu, 18 Jun 2020 10:03:06 GMT
54
- Via:
55
- - 1.1 varnish
56
- X-Served-By:
57
- - cache-hhn4023-HHN
58
- X-Cache:
59
- - MISS
60
- X-Cache-Hits:
61
- - '0'
62
- X-Timer:
63
- - S1592474586.184983,VS0,VE16
64
- Vary:
65
- - Origin,Accept-Encoding
66
- body:
67
- encoding: ASCII-8BIT
68
- string: '{"message":"success"}'
69
- http_version:
70
- recorded_at: Thu, 18 Jun 2020 10:03:06 GMT
71
- - request:
72
- method: post
73
- uri: "<BRAZE_REST_URL>/subscription/status/set"
74
- body:
75
- encoding: UTF-8
76
- string: '{"external_id":"test-user-2","subscription_group_id":"ed06e19a-69b1-4f9b-a452-2db2c4e303a8","subscription_state":"unsubscribed"}'
77
- headers:
78
- Content-Type:
79
- - application/json
80
- Accept:
81
- - application/json
82
- User-Agent:
83
- - Braze Ruby gem v0.3.3
84
- Authorization:
85
- - Bearer <BRAZE_REST_API_KEY>
86
- Accept-Encoding:
87
- - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
88
- response:
89
- status:
90
- code: 201
91
- message: Created
92
- headers:
93
- Connection:
94
- - keep-alive
95
- Content-Length:
96
- - '46'
97
- Cache-Control:
98
- - max-age=0, private, must-revalidate
99
- Content-Type:
100
- - application/json
101
- Etag:
102
- - W/"838a7c62adda8d131d694ae13ba2c5b7"
103
- Server:
104
- - nginx
105
- Strict-Transport-Security:
106
- - max-age=0; includeSubDomains
107
- - max-age=31536000; includeSubDomains
108
- X-Ratelimit-Limit:
109
- - '250000'
110
- X-Ratelimit-Remaining:
111
- - '249994'
112
- X-Ratelimit-Reset:
113
- - '1592478000'
114
- X-Request-Id:
115
- - b49b0519-bb0a-4e16-b9c0-9d5af6fee340
116
- X-Runtime:
117
- - '0.012962'
118
- Accept-Ranges:
119
- - bytes
120
- Date:
121
- - Thu, 18 Jun 2020 10:03:06 GMT
122
- Via:
123
- - 1.1 varnish
124
- X-Served-By:
125
- - cache-hhn4057-HHN
126
- X-Cache:
127
- - MISS
128
- X-Cache-Hits:
129
- - '0'
130
- X-Timer:
131
- - S1592474586.279449,VS0,VE16
132
- Vary:
133
- - Origin,Accept-Encoding
134
- body:
135
- encoding: ASCII-8BIT
136
- string: '{"message":"success"}'
137
- http_version:
138
- recorded_at: Thu, 18 Jun 2020 10:03:06 GMT
139
- - request:
140
- method: get
141
- uri: "<BRAZE_REST_URL>/subscription/user/status?external_id%5B%5D=test-user-1&external_id%5B%5D=test-user-2&external_id%5B%5D=test-user-3"
142
- body:
143
- encoding: US-ASCII
144
- string: ''
145
- headers:
146
- Content-Type:
147
- - application/json
148
- Accept:
149
- - application/json
150
- User-Agent:
151
- - Braze Ruby gem v0.3.3
152
- Authorization:
153
- - Bearer <BRAZE_REST_API_KEY>
154
- Accept-Encoding:
155
- - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
156
- response:
157
- status:
158
- code: 200
159
- message: OK
160
- headers:
161
- Connection:
162
- - keep-alive
163
- Content-Length:
164
- - '233'
165
- Cache-Control:
166
- - max-age=0, private, must-revalidate
167
- Content-Type:
168
- - application/json
169
- Etag:
170
- - W/"73587e244e20caff598bc8613a738936"
171
- Server:
172
- - nginx
173
- Strict-Transport-Security:
174
- - max-age=0; includeSubDomains
175
- - max-age=31536000; includeSubDomains
176
- X-Ratelimit-Limit:
177
- - '250000'
178
- X-Ratelimit-Remaining:
179
- - '249993'
180
- X-Ratelimit-Reset:
181
- - '1592478000'
182
- X-Request-Id:
183
- - 2c909898-af08-4996-b063-cccd07cbee21
184
- X-Runtime:
185
- - '0.291483'
186
- Accept-Ranges:
187
- - bytes
188
- - bytes
189
- Age:
190
- - '0'
191
- - '0'
192
- Date:
193
- - Thu, 18 Jun 2020 10:03:06 GMT
194
- Via:
195
- - 1.1 varnish
196
- X-Served-By:
197
- - cache-hhn4039-HHN
198
- X-Cache:
199
- - MISS
200
- X-Cache-Hits:
201
- - '0'
202
- X-Timer:
203
- - S1592474586.385788,VS0,VE300
204
- Vary:
205
- - Origin,Accept-Encoding
206
- body:
207
- encoding: ASCII-8BIT
208
- string: '{"users":[{"email":"test-user-1@test.com","phone":null,"external_id":"test-user-1","subscription_groups":[{"id":"ed06e19a-69b1-4f9b-a452-2db2c4e303a8","name":"test-subscription-group","channel":"email","status":"Subscribed"}]},{"email":"test-user-2@test.com","phone":null,"external_id":"test-user-2","subscription_groups":[{"id":"ed06e19a-69b1-4f9b-a452-2db2c4e303a8","name":"test-subscription-group","channel":"email","status":"Unsubscribed"}]},{"email":"test-user-3@test.com","phone":null,"external_id":"test-user-3","subscription_groups":[]}],"total_count":3,"message":"success"}'
209
- http_version:
210
- recorded_at: Thu, 18 Jun 2020 10:03:06 GMT
211
- recorded_with: VCR 5.0.0
@@ -1,70 +0,0 @@
1
- ---
2
- http_interactions:
3
- - request:
4
- method: post
5
- uri: "<BRAZE_REST_URL>/users/track"
6
- body:
7
- encoding: UTF-8
8
- string: '{"attributes":[{"external_id":1,"foo":"bar"}],"events":[{"external_id":1,"name":"baz","time":"2019-02-15
9
- 00:00:00 -0500"}],"purchases":[{"external_id":1,"product_id":1,"time":"2019-02-15
10
- 00:00:00 -0500","currency":"CAD","price":1.0}]}'
11
- headers:
12
- Content-Type:
13
- - application/json
14
- Accept:
15
- - application/json
16
- User-Agent:
17
- - Braze Ruby gem v0.3.3
18
- Authorization:
19
- - Bearer non-existent
20
- Accept-Encoding:
21
- - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
22
- response:
23
- status:
24
- code: 401
25
- message: Unauthorized
26
- headers:
27
- Connection:
28
- - keep-alive
29
- Content-Length:
30
- - '69'
31
- Cache-Control:
32
- - no-cache
33
- Content-Type:
34
- - application/json
35
- Server:
36
- - nginx
37
- Strict-Transport-Security:
38
- - max-age=0; includeSubDomains
39
- X-Ratelimit-Limit:
40
- - ''
41
- X-Ratelimit-Remaining:
42
- - ''
43
- X-Ratelimit-Reset:
44
- - ''
45
- X-Request-Id:
46
- - 455108aa-0cf4-438f-8d27-489896ca716b
47
- X-Runtime:
48
- - '0.001106'
49
- Accept-Ranges:
50
- - bytes
51
- Date:
52
- - Wed, 17 Jun 2020 20:31:42 GMT
53
- Via:
54
- - 1.1 varnish
55
- X-Served-By:
56
- - cache-hhn4044-HHN
57
- X-Cache:
58
- - MISS
59
- X-Cache-Hits:
60
- - '0'
61
- X-Timer:
62
- - S1592425903.848710,VS0,VE4
63
- Vary:
64
- - Origin,Accept-Encoding
65
- body:
66
- encoding: ASCII-8BIT
67
- string: '{"message":"Invalid API key: non-existent"}'
68
- http_version:
69
- recorded_at: Wed, 17 Jun 2020 20:31:42 GMT
70
- recorded_with: VCR 5.0.0
@@ -1,73 +0,0 @@
1
- ---
2
- http_interactions:
3
- - request:
4
- method: post
5
- uri: "<BRAZE_REST_URL>/users/track"
6
- body:
7
- encoding: UTF-8
8
- string: '{"attributes":[{"external_id":1,"foo":"bar"}],"events":[{"external_id":1,"name":"baz","time":"2019-02-15
9
- 00:00:00 -0500"}],"purchases":[{"external_id":1,"product_id":1,"time":"2019-02-15
10
- 00:00:00 -0500","currency":"CAD","price":1.0}]}'
11
- headers:
12
- Content-Type:
13
- - application/json
14
- Accept:
15
- - application/json
16
- User-Agent:
17
- - Braze Ruby gem v0.3.3
18
- Authorization:
19
- - Bearer <BRAZE_REST_API_KEY>
20
- Accept-Encoding:
21
- - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
22
- response:
23
- status:
24
- code: 201
25
- message: Created
26
- headers:
27
- Connection:
28
- - keep-alive
29
- Content-Length:
30
- - '85'
31
- Cache-Control:
32
- - max-age=0, private, must-revalidate
33
- Content-Type:
34
- - application/json
35
- Etag:
36
- - W/"68b326343749fed4d6cc5dda395b5367"
37
- Server:
38
- - nginx
39
- Strict-Transport-Security:
40
- - max-age=0; includeSubDomains
41
- - max-age=31536000; includeSubDomains
42
- X-Ratelimit-Limit:
43
- - '250000'
44
- X-Ratelimit-Remaining:
45
- - '250000'
46
- X-Ratelimit-Reset:
47
- - '1592427600'
48
- X-Request-Id:
49
- - 2e7a73fc-7efe-4c04-b837-c696cb10735a
50
- X-Runtime:
51
- - '0.007710'
52
- Accept-Ranges:
53
- - bytes
54
- Date:
55
- - Wed, 17 Jun 2020 20:31:42 GMT
56
- Via:
57
- - 1.1 varnish
58
- X-Served-By:
59
- - cache-hhn4030-HHN
60
- X-Cache:
61
- - MISS
62
- X-Cache-Hits:
63
- - '0'
64
- X-Timer:
65
- - S1592425903.632582,VS0,VE10
66
- Vary:
67
- - Origin,Accept-Encoding
68
- body:
69
- encoding: ASCII-8BIT
70
- string: '{"attributes_processed":1,"events_processed":1,"purchases_processed":1,"message":"success"}'
71
- http_version:
72
- recorded_at: Wed, 17 Jun 2020 20:31:42 GMT
73
- recorded_with: VCR 5.0.0
@@ -1,73 +0,0 @@
1
- ---
2
- http_interactions:
3
- - request:
4
- method: post
5
- uri: "<BRAZE_REST_URL>/users/track"
6
- body:
7
- encoding: UTF-8
8
- string: '{"attributes":[{"external_id":1,"foo":"bar"}],"events":[{"external_id":1,"name":"baz","time":"2019-02-15
9
- 00:00:00 -0500"}],"purchases":[{"external_id":1,"product_id":1,"time":"2019-02-15
10
- 00:00:00 -0500","currency":"CAD","price":1.0}]}'
11
- headers:
12
- Content-Type:
13
- - application/json
14
- Accept:
15
- - application/json
16
- User-Agent:
17
- - Braze Ruby gem v0.3.3
18
- Authorization:
19
- - Bearer <BRAZE_REST_API_KEY>
20
- Accept-Encoding:
21
- - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
22
- response:
23
- status:
24
- code: 201
25
- message: Created
26
- headers:
27
- Connection:
28
- - keep-alive
29
- Content-Length:
30
- - '85'
31
- Cache-Control:
32
- - max-age=0, private, must-revalidate
33
- Content-Type:
34
- - application/json
35
- Etag:
36
- - W/"68b326343749fed4d6cc5dda395b5367"
37
- Server:
38
- - nginx
39
- Strict-Transport-Security:
40
- - max-age=0; includeSubDomains
41
- - max-age=31536000; includeSubDomains
42
- X-Ratelimit-Limit:
43
- - '250000'
44
- X-Ratelimit-Remaining:
45
- - '250000'
46
- X-Ratelimit-Reset:
47
- - '1592427600'
48
- X-Request-Id:
49
- - 75dc3ac0-d4d2-4278-89d0-b29e540dc719
50
- X-Runtime:
51
- - '0.008741'
52
- Accept-Ranges:
53
- - bytes
54
- Date:
55
- - Wed, 17 Jun 2020 20:31:42 GMT
56
- Via:
57
- - 1.1 varnish
58
- X-Served-By:
59
- - cache-hhn4063-HHN
60
- X-Cache:
61
- - MISS
62
- X-Cache-Hits:
63
- - '0'
64
- X-Timer:
65
- - S1592425903.749169,VS0,VE11
66
- Vary:
67
- - Origin,Accept-Encoding
68
- body:
69
- encoding: ASCII-8BIT
70
- string: '{"attributes_processed":1,"events_processed":1,"purchases_processed":1,"message":"success"}'
71
- http_version:
72
- recorded_at: Wed, 17 Jun 2020 20:31:42 GMT
73
- recorded_with: VCR 5.0.0
@@ -1,19 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
-
5
- RSpec.describe 'campaigns' do
6
- describe 'trigger_send' do
7
- it 'sends an email', vcr: true do
8
- response = api.trigger_campaign_send(
9
- campaign_id: 'd8b73da7-0b7c-fc72-1d80-e59c7f20f0d3',
10
- recipients: [
11
- external_user_id: 12345,
12
- trigger_properties: {first_name: 'John'}
13
- ]
14
- )
15
-
16
- expect(response.success?).to eq(true)
17
- end
18
- end
19
- end