braze_ruby 0.2.2 → 0.4.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (113) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +14 -3
  3. data/.gitignore +1 -0
  4. data/Gemfile +2 -0
  5. data/Gemfile.lock +39 -39
  6. data/README.md +64 -0
  7. data/Rakefile +2 -0
  8. data/braze_ruby.gemspec +7 -7
  9. data/lib/braze_ruby.rb +2 -0
  10. data/lib/braze_ruby/api.rb +11 -4
  11. data/lib/braze_ruby/deprecated.rb +2 -0
  12. data/lib/braze_ruby/endpoints.rb +4 -0
  13. data/lib/braze_ruby/endpoints/campaigns.rb +3 -1
  14. data/lib/braze_ruby/endpoints/canvas.rb +7 -1
  15. data/lib/braze_ruby/endpoints/create_user_aliases.rb +19 -0
  16. data/lib/braze_ruby/endpoints/delete_users.rb +4 -2
  17. data/lib/braze_ruby/endpoints/email_status.rb +3 -1
  18. data/lib/braze_ruby/endpoints/email_sync.rb +4 -2
  19. data/lib/braze_ruby/endpoints/identify_users.rb +19 -0
  20. data/lib/braze_ruby/endpoints/schedule_messages.rb +3 -1
  21. data/lib/braze_ruby/endpoints/send_messages.rb +3 -1
  22. data/lib/braze_ruby/endpoints/subscription.rb +20 -0
  23. data/lib/braze_ruby/endpoints/track_users.rb +7 -5
  24. data/lib/braze_ruby/http.rb +20 -5
  25. data/lib/braze_ruby/rest.rb +8 -0
  26. data/lib/braze_ruby/rest/base.rb +6 -2
  27. data/lib/braze_ruby/rest/canvas_details.rb +20 -0
  28. data/lib/braze_ruby/rest/create_user_aliases.rb +13 -0
  29. data/lib/braze_ruby/rest/delete_users.rb +3 -2
  30. data/lib/braze_ruby/rest/email_hard_bounces.rb +5 -5
  31. data/lib/braze_ruby/rest/email_status.rb +5 -5
  32. data/lib/braze_ruby/rest/email_unsubscribes.rb +5 -5
  33. data/lib/braze_ruby/rest/export_users.rb +7 -7
  34. data/lib/braze_ruby/rest/identify_users.rb +13 -0
  35. data/lib/braze_ruby/rest/list_segments.rb +4 -4
  36. data/lib/braze_ruby/rest/schedule_messages.rb +5 -5
  37. data/lib/braze_ruby/rest/send_messages.rb +5 -5
  38. data/lib/braze_ruby/rest/subscription_status_get.rb +20 -0
  39. data/lib/braze_ruby/rest/subscription_status_set.rb +20 -0
  40. data/lib/braze_ruby/rest/subscription_user_status.rb +20 -0
  41. data/lib/braze_ruby/rest/track_users.rb +3 -2
  42. data/lib/braze_ruby/rest/trigger_campaign_send.rb +6 -8
  43. data/lib/braze_ruby/rest/trigger_canvas_send.rb +5 -5
  44. data/lib/braze_ruby/version.rb +3 -1
  45. data/spec/braze_ruby/api_spec.rb +2 -0
  46. data/spec/braze_ruby/endpoints/delete_users_spec.rb +3 -1
  47. data/spec/braze_ruby/endpoints/track_users_spec.rb +10 -8
  48. data/spec/braze_ruby/http_spec.rb +48 -0
  49. data/spec/braze_ruby/rest/create_user_aliases_spec.rb +23 -0
  50. data/spec/braze_ruby/rest/delete_users_spec.rb +5 -3
  51. data/spec/braze_ruby/rest/email_status_spec.rb +3 -2
  52. data/spec/braze_ruby/rest/export_users_spec.rb +5 -3
  53. data/spec/braze_ruby/rest/identify_users_spec.rb +23 -0
  54. data/spec/braze_ruby/rest/schedule_messages_spec.rb +3 -2
  55. data/spec/braze_ruby/rest/send_messages_spec.rb +10 -13
  56. data/spec/braze_ruby/rest/track_users_spec.rb +12 -9
  57. data/spec/factories.rb +2 -0
  58. data/spec/fixtures/responses/campaigns/trigger_send/sends_an_email.yml +17 -15
  59. data/spec/fixtures/responses/canvas/details/returns_error_when_no_canvas.yml +69 -0
  60. data/spec/fixtures/responses/canvas/trigger_send/sends_a_canvas.yml +18 -16
  61. data/spec/fixtures/responses/create_user_aliases/unauthorized/responds_with_unauthorized.yml +67 -0
  62. data/spec/fixtures/responses/create_user_aliases/with_success/responds_with_created.yml +71 -0
  63. data/spec/fixtures/responses/create_user_aliases/with_success/responds_with_success_message.yml +71 -0
  64. data/spec/fixtures/responses/delete_users/unauthorized/responds_with_unauthorized.yml +20 -18
  65. data/spec/fixtures/responses/delete_users/with_success/responds_with_created.yml +25 -23
  66. data/spec/fixtures/responses/delete_users/with_success/responds_with_success_message.yml +25 -23
  67. data/spec/fixtures/responses/email_status/existing_email/responds_with_created.yml +22 -20
  68. data/spec/fixtures/responses/email_status/existing_email/responds_with_success_message.yml +22 -20
  69. data/spec/fixtures/responses/email_status/unknown_email/responds_with_bad_request.yml +22 -20
  70. data/spec/fixtures/responses/email_status/unknown_email/responds_with_success_message.yml +22 -20
  71. data/spec/fixtures/responses/email_sync/hard_bounces/responds_with_empty_array_when_no_hard_bounces.yml +18 -16
  72. data/spec/fixtures/responses/email_sync/unsubscribes/responds_with_empty_array_when_no_unsubscribes.yml +18 -16
  73. data/spec/fixtures/responses/email_sync/unsubscribes/responds_with_unsubscribed_emails.yml +21 -20
  74. data/spec/fixtures/responses/export_users/by_ids/with_success/responds_with_created.yml +25 -22
  75. data/spec/fixtures/responses/export_users/by_segment/with_success/responds_with_created.yml +24 -22
  76. data/spec/fixtures/responses/identify_users/unauthorized/responds_with_unauthorized.yml +68 -0
  77. data/spec/fixtures/responses/identify_users/with_success/responds_with_created.yml +71 -0
  78. data/spec/fixtures/responses/identify_users/with_success/responds_with_success_message.yml +71 -0
  79. data/spec/fixtures/responses/list_segments/with_success/responds_with_a_list_of_segments.yml +35 -35
  80. data/spec/fixtures/responses/list_segments/with_success/responds_with_success.yml +35 -35
  81. data/spec/fixtures/responses/schedule_messages/unauthorized/responds_with_unauthorize.yml +20 -19
  82. data/spec/fixtures/responses/schedule_messages/with_success/responds_with_created.yml +24 -23
  83. data/spec/fixtures/responses/schedule_messages/with_success/responds_with_success_message.yml +24 -23
  84. data/spec/fixtures/responses/send_messages/unauthorized/responds_with_unauthorized.yml +20 -18
  85. data/spec/fixtures/responses/send_messages/with_success/responds_with_created.yml +24 -22
  86. data/spec/fixtures/responses/send_messages/with_success/responds_with_success_message.yml +24 -22
  87. data/spec/fixtures/responses/subscription/subscription_status_set/when_subscribing/subscribes_the_user.yml +71 -0
  88. data/spec/fixtures/responses/subscription/subscription_status_set/when_subscription_group_does_not_exist/returns_an_error_status.yml +68 -0
  89. data/spec/fixtures/responses/subscription/subscription_status_set/when_unsubscribing/unsubscribes_the_user.yml +139 -0
  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 +211 -0
  91. data/spec/fixtures/responses/subscription/when_getting_subscription_group_statuses/subscription_status_get/when_group_does_not_exist/returns_an_error.yml +199 -0
  92. data/spec/fixtures/responses/subscription/when_getting_subscription_group_statuses/subscription_user_status/returns_subscription_groups_and_status_for_every_group.yml +211 -0
  93. data/spec/fixtures/responses/track_users/unauthorized/responds_with_unauthorized.yml +23 -21
  94. data/spec/fixtures/responses/track_users/with_success/responds_with_created.yml +22 -20
  95. data/spec/fixtures/responses/track_users/with_success/responds_with_success_message.yml +22 -20
  96. data/spec/integrations/campaigns_spec.rb +6 -2
  97. data/spec/integrations/canvas_spec.rb +15 -2
  98. data/spec/integrations/create_user_aliases_spec.rb +32 -0
  99. data/spec/integrations/delete_users_spec.rb +3 -0
  100. data/spec/integrations/email_status_spec.rb +2 -0
  101. data/spec/integrations/email_sync_spec.rb +4 -2
  102. data/spec/integrations/export_users_spec.rb +4 -2
  103. data/spec/integrations/identify_users_spec.rb +32 -0
  104. data/spec/integrations/list_segments_spec.rb +3 -1
  105. data/spec/integrations/schedule_messages_spec.rb +4 -1
  106. data/spec/integrations/send_messages_spec.rb +4 -1
  107. data/spec/integrations/subscription_spec.rb +149 -0
  108. data/spec/integrations/track_users_spec.rb +3 -0
  109. data/spec/spec_helper.rb +2 -8
  110. data/spec/support/factory_bot.rb +2 -0
  111. data/spec/support/integrations.rb +7 -1
  112. data/spec/support/vcr.rb +5 -1
  113. metadata +68 -21
@@ -1,15 +1,19 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  RSpec.describe 'campaigns' do
4
6
  describe 'trigger_send' do
5
7
  it 'sends an email', vcr: true do
6
8
  response = api.trigger_campaign_send(
7
- campaign_id: '69e9b681-779c-4b4c-b6b8-cd74b17d21d2',
9
+ campaign_id: 'd8b73da7-0b7c-fc72-1d80-e59c7f20f0d3',
8
10
  recipients: [
9
- external_user_id: 132404,
11
+ external_user_id: 12345,
10
12
  trigger_properties: {first_name: 'John'}
11
13
  ]
12
14
  )
15
+
16
+ expect(response.success?).to eq(true)
13
17
  end
14
18
  end
15
19
  end
@@ -1,15 +1,28 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  RSpec.describe 'canvas' do
4
6
  describe 'trigger_send' do
5
7
  it 'sends a canvas', vcr: true do
6
8
  response = api.trigger_canvas_send(
7
- canvas_id: 'dc23ade4-e970-0c52-81bc-b369f64f533d',
9
+ canvas_id: '70a7fb99-cbcb-451a-8224-5f8b8c63e03f',
8
10
  recipients: [
9
- external_user_id: 132404,
11
+ external_user_id: 12345,
10
12
  canvas_entry_properties: {first_name: 'John'}
11
13
  ]
12
14
  )
15
+
16
+ expect(response.success?).to eq(true)
17
+ end
18
+ end
19
+
20
+ describe 'details' do
21
+ it 'returns error when no canvas', vcr: true do
22
+ response = api.canvas_details(
23
+ canvas_id: 'non-existing'
24
+ )
25
+ expect(response.status).to eq(400)
13
26
  end
14
27
  end
15
28
  end
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ describe 'create user aliases' do
6
+ let(:user) { { user_alias: { alias_name: 'abc', alias_label: 'foo' } } }
7
+
8
+ subject(:create_user_aliases) do
9
+ api.create_user_aliases(user_aliases: [user])
10
+ end
11
+
12
+ context 'with success', vcr: true do
13
+ it 'responds with created' do
14
+ expect(create_user_aliases.status).to be 201
15
+ end
16
+
17
+ it 'responds with success message' do
18
+ expect(JSON.parse(create_user_aliases.body)).to eq(
19
+ 'aliases_processed' => 1,
20
+ 'message' => 'success'
21
+ )
22
+ end
23
+ end
24
+
25
+ context 'unauthorized', vcr: true do
26
+ let(:api_key) { 'non-existent' }
27
+
28
+ it 'responds with unauthorized' do
29
+ expect(create_user_aliases.status).to be 401
30
+ end
31
+ end
32
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  describe 'delete users' do
@@ -14,6 +16,7 @@ describe 'delete users' do
14
16
 
15
17
  it 'responds with success message' do
16
18
  expect(JSON.parse(delete_users.body)).to include(
19
+ 'deleted' => 3,
17
20
  'message' => 'success'
18
21
  )
19
22
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  describe 'email status' do
@@ -1,13 +1,15 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  RSpec.describe 'email sync' do
4
6
  describe 'unsubscribes' do
5
7
  it 'responds with unsubscribed emails', vcr: true do
6
- response = api.email_unsubscribes(start_date: '2019-03-20', end_date: '2019-03-25')
8
+ response = api.email_unsubscribes(start_date: '2020-06-17', end_date: '2020-06-18')
7
9
  emails = JSON.parse(response.body)['emails']
8
10
 
9
11
  expect(emails.size).to eq(1)
10
- expect(emails.first['email']).to eq('wojtek@test.com')
12
+ expect(emails.first['email']).to eq('example@123.com')
11
13
  end
12
14
 
13
15
  it 'responds with empty array when no unsubscribes', vcr: true do
@@ -1,8 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  describe 'export users' do
4
6
  context 'by ids' do
5
- subject(:export_users) { api.export_users(external_ids: [1]) }
7
+ subject(:export_users) { api.export_users(external_ids: [12345]) }
6
8
 
7
9
  context 'with success', :vcr do
8
10
  it 'responds with created' do
@@ -13,7 +15,7 @@ describe 'export users' do
13
15
 
14
16
  context 'by segment' do
15
17
  context 'with success', :vcr do
16
- let(:segment_id) { braze_test_segment }
18
+ let(:segment_id) { "3aca937b-9bbc-4e42-9370-05e411967b2b" }
17
19
 
18
20
  subject(:export_users) do
19
21
  api.export_users(segment_id: segment_id, callback_endpoint: 'https://example.com')
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ describe 'identify users' do
6
+ let(:user) { { external_id: 12345, user_alias: { alias_name: 'abc', alias_label: 'foo' } } }
7
+
8
+ subject(:identify_users) do
9
+ api.identify_users(aliases_to_identify: [user])
10
+ end
11
+
12
+ context 'with success', vcr: true do
13
+ it 'responds with created' do
14
+ expect(identify_users.status).to be 201
15
+ end
16
+
17
+ it 'responds with success message' do
18
+ expect(JSON.parse(identify_users.body)).to eq(
19
+ 'aliases_processed' => 1,
20
+ 'message' => 'success'
21
+ )
22
+ end
23
+ end
24
+
25
+ context 'unauthorized', vcr: true do
26
+ let(:api_key) { 'non-existent' }
27
+
28
+ it 'responds with unauthorized' do
29
+ expect(identify_users.status).to be 401
30
+ end
31
+ end
32
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  describe 'list segments' do
@@ -9,7 +11,7 @@ describe 'list segments' do
9
11
  end
10
12
 
11
13
  it 'responds with a list of segments' do
12
- expect(segments.count).to be 13
14
+ expect(segments.count).to be 6
13
15
  end
14
16
 
15
17
  def segments
@@ -1,7 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  describe 'schedule messages' do
4
- let(:user_ids) { [1] }
6
+ let(:user_ids) { [12345] }
7
+ let(:test_time) { "2020-08-07T00:00:00+02:00" }
5
8
  let(:messages) { build(:messages) }
6
9
 
7
10
  subject(:schedule_messages) do
@@ -1,7 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  describe 'send messages' do
4
- let(:user_ids) { [1] }
6
+ let(:user_ids) { [12345] }
5
7
  let(:messages) { build(:messages) }
6
8
 
7
9
  subject(:send_messages) do
@@ -15,6 +17,7 @@ describe 'send messages' do
15
17
 
16
18
  it 'responds with success message' do
17
19
  expect(JSON.parse(send_messages.body)).to eq(
20
+ 'dispatch_id' => "ea0532cddfc97cd4e5767b351d6af0eb",
18
21
  'message' => 'success'
19
22
  )
20
23
  end
@@ -0,0 +1,149 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ RSpec.describe 'subscription', vcr: true do
6
+ let(:subscription_group_id) { 'ed06e19a-69b1-4f9b-a452-2db2c4e303a8' }
7
+ let(:subscribed_user) { 'test-user-1' }
8
+ let(:unsubscribed_user) { 'test-user-2' }
9
+ let(:never_subscribed_user) { 'test-user-3' }
10
+
11
+ context 'when getting subscription group statuses' do
12
+ let(:json_response) { JSON.parse(response.body) }
13
+
14
+ before do
15
+ api.subscription_status_set(
16
+ external_id: subscribed_user,
17
+ subscription_group_id: subscription_group_id,
18
+ subscription_state: 'subscribed'
19
+ )
20
+
21
+ api.subscription_status_set(
22
+ external_id: unsubscribed_user,
23
+ subscription_group_id: subscription_group_id,
24
+ subscription_state: 'unsubscribed'
25
+ )
26
+ end
27
+
28
+ describe 'subscription_user_status' do
29
+ subject(:response) do
30
+ api.subscription_user_status(
31
+ external_id: external_id,
32
+ )
33
+ end
34
+
35
+ let(:external_id) { [subscribed_user, unsubscribed_user, never_subscribed_user] }
36
+
37
+ it 'returns subscription groups and status for every group' do
38
+ expect(response.status).to eq(200)
39
+ expect(json_response).to match(
40
+ 'message' => 'success',
41
+ 'total_count' => 3,
42
+ 'users' => [
43
+ hash_including(
44
+ 'external_id' => subscribed_user,
45
+ 'subscription_groups' => [
46
+ hash_including(
47
+ 'id' => subscription_group_id,
48
+ 'status' => 'Subscribed'
49
+ )
50
+ ]
51
+ ),
52
+ hash_including(
53
+ 'external_id' => unsubscribed_user,
54
+ 'subscription_groups' => [
55
+ hash_including(
56
+ 'id' => subscription_group_id,
57
+ 'status' => 'Unsubscribed'
58
+ )
59
+ ]
60
+ ),
61
+ hash_including(
62
+ 'external_id' => never_subscribed_user,
63
+ 'subscription_groups' => []
64
+ )
65
+ ]
66
+ )
67
+ end
68
+ end
69
+
70
+ describe 'subscription_status_get' do
71
+ subject(:response) do
72
+ api.subscription_status_get(
73
+ external_id: external_id,
74
+ subscription_group_id: subscription_group_id
75
+ )
76
+ end
77
+
78
+ context 'when checking subscribed and unsubscribed user status' do
79
+ let(:external_id) { [subscribed_user, unsubscribed_user, never_subscribed_user] }
80
+
81
+ it 'returns only users that were once subscribed' do
82
+ expect(response.status).to eq(200)
83
+ expect(json_response).to eq(
84
+ 'message' => 'success',
85
+ 'status' => {
86
+ 'test-user-1' => 'Subscribed',
87
+ 'test-user-2' => 'Unsubscribed',
88
+ 'test-user-3' => 'unknown'
89
+ }
90
+ )
91
+ end
92
+ end
93
+
94
+ context 'when group does not exist' do
95
+ let(:external_id) { subscribed_user }
96
+ let(:subscription_group_id) { 'non-existing-subscription-group' }
97
+
98
+ it 'returns an error' do
99
+ expect(response.status).to eq(400)
100
+ end
101
+ end
102
+ end
103
+
104
+ end
105
+
106
+ describe 'subscription_status_set' do
107
+ subject(:response) do
108
+ api.subscription_status_set(
109
+ external_id: external_id,
110
+ subscription_group_id: subscription_group_id,
111
+ subscription_state: subscription_state
112
+ )
113
+ end
114
+
115
+ let(:external_id) { subscribed_user }
116
+ let(:subscription_state) { 'subscribed' }
117
+
118
+ context 'when subscribing' do
119
+ it 'subscribes the user' do
120
+ expect(response.status).to eq(201)
121
+ end
122
+ end
123
+
124
+ context 'when unsubscribing' do
125
+ let(:external_id) { unsubscribed_user }
126
+ let(:subscription_state) { 'unsubscribed' }
127
+
128
+ before do
129
+ api.subscription_status_set(
130
+ external_id: external_id,
131
+ subscription_group_id: subscription_group_id,
132
+ subscription_state: 'subscribed'
133
+ )
134
+ end
135
+
136
+ it 'unsubscribes the user' do
137
+ expect(response.status).to eq(201)
138
+ end
139
+ end
140
+
141
+ context 'when subscription group does not exist' do
142
+ let(:subscription_group_id) { 'non-existing-subscription-group' }
143
+
144
+ it 'returns an error status' do
145
+ expect(response.status).to eq(400)
146
+ end
147
+ end
148
+ end
149
+ end
@@ -1,7 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  describe 'track users' do
4
6
  let(:attributes) { [build(:attribute)] }
7
+ let(:test_time) { Time.parse('2019-02-15 00:00:00 -0500') }
5
8
  let(:events) { [build(:event, time: test_time)] }
6
9
  let(:purchases) { [build(:purchase, time: test_time)] }
7
10
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'bundler/setup'
2
4
  require 'pry'
3
5
  require 'dotenv'
@@ -13,10 +15,6 @@ BRAZE_REST_API_KEY = ENV.fetch('BRAZE_REST_API_KEY', 'test')
13
15
  BRAZE_REST_URL = ENV.fetch('BRAZE_REST_URL', 'https://rest.iad-03.braze.com')
14
16
 
15
17
  RSpec.configure do |config|
16
- def test_time
17
- Time.parse('2019-02-15 00:00:00 -0500')
18
- end
19
-
20
18
  def braze_rest_api_key
21
19
  BRAZE_REST_API_KEY
22
20
  end
@@ -24,8 +22,4 @@ RSpec.configure do |config|
24
22
  def braze_rest_url
25
23
  BRAZE_REST_URL
26
24
  end
27
-
28
- def braze_test_segment
29
- 'a8fde797-4c44-4406-8e6c-5850d323f169'
30
- end
31
25
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'factory_bot'
2
4
 
3
5
  RSpec.configure do |config|
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Integrations
2
4
  def api_key
3
5
  braze_rest_api_key
@@ -11,8 +13,12 @@ module Integrations
11
13
  braze_test_segment
12
14
  end
13
15
 
16
+ def options
17
+ {}
18
+ end
19
+
14
20
  def api
15
- BrazeRuby::API.new(api_key, rest_url)
21
+ BrazeRuby::API.new(api_key, rest_url, options)
16
22
  end
17
23
 
18
24
  RSpec.configure do |config|
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'vcr'
2
4
 
3
5
  VCR.configure do |config|
@@ -7,7 +9,9 @@ VCR.configure do |config|
7
9
  config.cassette_library_dir = 'spec/fixtures/responses'
8
10
 
9
11
  config.default_cassette_options = {
10
- match_requests_on: [:method, :uri, :body]
12
+ match_requests_on: [:method, :uri, :body],
13
+ record: :once,
14
+ allow_unused_http_interactions: false
11
15
  }
12
16
 
13
17
  config.configure_rspec_metadata!