braze_ruby 0.4.2 → 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 (123) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +57 -0
  3. data/.circleci/gem_credentials +2 -0
  4. data/.circleci/setup-rubygems +6 -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 +4 -1
  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 +12 -12
  15. data/lib/braze_ruby/deprecated.rb +4 -4
  16. data/lib/braze_ruby/endpoints.rb +10 -10
  17. data/lib/braze_ruby/endpoints/remove_external_ids.rb +2 -2
  18. data/lib/braze_ruby/endpoints/rename_external_ids.rb +2 -2
  19. data/lib/braze_ruby/endpoints/subscription.rb +0 -1
  20. data/lib/braze_ruby/http.rb +8 -8
  21. data/lib/braze_ruby/rest.rb +20 -20
  22. data/lib/braze_ruby/rest/base.rb +3 -3
  23. data/lib/braze_ruby/rest/canvas_details.rb +1 -1
  24. data/lib/braze_ruby/rest/create_user_aliases.rb +2 -2
  25. data/lib/braze_ruby/rest/delete_users.rb +2 -2
  26. data/lib/braze_ruby/rest/email_hard_bounces.rb +1 -1
  27. data/lib/braze_ruby/rest/email_status.rb +3 -3
  28. data/lib/braze_ruby/rest/email_unsubscribes.rb +1 -1
  29. data/lib/braze_ruby/rest/export_users.rb +4 -4
  30. data/lib/braze_ruby/rest/identify_users.rb +2 -2
  31. data/lib/braze_ruby/rest/list_segments.rb +1 -1
  32. data/lib/braze_ruby/rest/remove_external_ids.rb +2 -2
  33. data/lib/braze_ruby/rest/rename_external_ids.rb +2 -2
  34. data/lib/braze_ruby/rest/schedule_messages.rb +6 -6
  35. data/lib/braze_ruby/rest/send_messages.rb +3 -3
  36. data/lib/braze_ruby/rest/subscription_status_get.rb +1 -1
  37. data/lib/braze_ruby/rest/subscription_status_set.rb +1 -1
  38. data/lib/braze_ruby/rest/subscription_user_status.rb +1 -1
  39. data/lib/braze_ruby/rest/track_users.rb +4 -4
  40. data/lib/braze_ruby/rest/trigger_campaign_send.rb +1 -1
  41. data/lib/braze_ruby/rest/trigger_canvas_send.rb +1 -1
  42. data/lib/braze_ruby/version.rb +1 -1
  43. metadata +45 -197
  44. data/.github/workflows/ci.yml +0 -30
  45. data/Gemfile.lock +0 -82
  46. data/spec/braze_ruby/api_spec.rb +0 -6
  47. data/spec/braze_ruby/endpoints/delete_users_spec.rb +0 -31
  48. data/spec/braze_ruby/endpoints/track_users_spec.rb +0 -74
  49. data/spec/braze_ruby/http_spec.rb +0 -48
  50. data/spec/braze_ruby/rest/create_user_aliases_spec.rb +0 -23
  51. data/spec/braze_ruby/rest/delete_users_spec.rb +0 -22
  52. data/spec/braze_ruby/rest/email_status_spec.rb +0 -20
  53. data/spec/braze_ruby/rest/export_users_spec.rb +0 -21
  54. data/spec/braze_ruby/rest/identify_users_spec.rb +0 -23
  55. data/spec/braze_ruby/rest/remove_external_ids_spec.rb +0 -22
  56. data/spec/braze_ruby/rest/rename_external_ids_spec.rb +0 -22
  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/create_user_aliases/unauthorized/responds_with_unauthorized.yml +0 -67
  65. data/spec/fixtures/responses/create_user_aliases/with_success/responds_with_created.yml +0 -71
  66. data/spec/fixtures/responses/create_user_aliases/with_success/responds_with_success_message.yml +0 -71
  67. data/spec/fixtures/responses/delete_users/unauthorized/responds_with_unauthorized.yml +0 -68
  68. data/spec/fixtures/responses/delete_users/with_success/responds_with_created.yml +0 -71
  69. data/spec/fixtures/responses/delete_users/with_success/responds_with_success_message.yml +0 -71
  70. data/spec/fixtures/responses/email_status/existing_email/responds_with_created.yml +0 -71
  71. data/spec/fixtures/responses/email_status/existing_email/responds_with_success_message.yml +0 -71
  72. data/spec/fixtures/responses/email_status/unknown_email/responds_with_bad_request.yml +0 -71
  73. data/spec/fixtures/responses/email_status/unknown_email/responds_with_success_message.yml +0 -71
  74. data/spec/fixtures/responses/email_sync/hard_bounces/responds_with_empty_array_when_no_hard_bounces.yml +0 -75
  75. data/spec/fixtures/responses/email_sync/unsubscribes/responds_with_empty_array_when_no_unsubscribes.yml +0 -75
  76. data/spec/fixtures/responses/email_sync/unsubscribes/responds_with_unsubscribed_emails.yml +0 -75
  77. data/spec/fixtures/responses/export_users/by_ids/with_success/responds_with_created.yml +0 -72
  78. data/spec/fixtures/responses/export_users/by_segment/with_success/responds_with_created.yml +0 -71
  79. data/spec/fixtures/responses/identify_users/unauthorized/responds_with_unauthorized.yml +0 -68
  80. data/spec/fixtures/responses/identify_users/with_success/responds_with_created.yml +0 -71
  81. data/spec/fixtures/responses/identify_users/with_success/responds_with_success_message.yml +0 -71
  82. data/spec/fixtures/responses/list_segments/with_success/responds_with_a_list_of_segments.yml +0 -81
  83. data/spec/fixtures/responses/list_segments/with_success/responds_with_success.yml +0 -81
  84. data/spec/fixtures/responses/remove_external_ids/unauthorized/responds_with_unauthorized.yml +0 -67
  85. data/spec/fixtures/responses/remove_external_ids/with_success/responds_with_created.yml +0 -69
  86. data/spec/fixtures/responses/remove_external_ids/with_success/responds_with_success_message.yml +0 -69
  87. data/spec/fixtures/responses/rename_external_ids/unauthorized/responds_with_unauthorized.yml +0 -67
  88. data/spec/fixtures/responses/rename_external_ids/with_success/responds_with_created.yml +0 -69
  89. data/spec/fixtures/responses/rename_external_ids/with_success/responds_with_success_message.yml +0 -69
  90. data/spec/fixtures/responses/schedule_messages/unauthorized/responds_with_unauthorize.yml +0 -68
  91. data/spec/fixtures/responses/schedule_messages/with_success/responds_with_created.yml +0 -71
  92. data/spec/fixtures/responses/schedule_messages/with_success/responds_with_success_message.yml +0 -71
  93. data/spec/fixtures/responses/send_messages/unauthorized/responds_with_unauthorized.yml +0 -68
  94. data/spec/fixtures/responses/send_messages/with_success/responds_with_created.yml +0 -71
  95. data/spec/fixtures/responses/send_messages/with_success/responds_with_success_message.yml +0 -71
  96. data/spec/fixtures/responses/subscription/subscription_status_set/when_subscribing/subscribes_the_user.yml +0 -71
  97. data/spec/fixtures/responses/subscription/subscription_status_set/when_subscription_group_does_not_exist/returns_an_error_status.yml +0 -68
  98. data/spec/fixtures/responses/subscription/subscription_status_set/when_unsubscribing/unsubscribes_the_user.yml +0 -139
  99. 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
  100. data/spec/fixtures/responses/subscription/when_getting_subscription_group_statuses/subscription_status_get/when_group_does_not_exist/returns_an_error.yml +0 -199
  101. data/spec/fixtures/responses/subscription/when_getting_subscription_group_statuses/subscription_user_status/returns_subscription_groups_and_status_for_every_group.yml +0 -211
  102. data/spec/fixtures/responses/track_users/unauthorized/responds_with_unauthorized.yml +0 -70
  103. data/spec/fixtures/responses/track_users/with_success/responds_with_created.yml +0 -73
  104. data/spec/fixtures/responses/track_users/with_success/responds_with_success_message.yml +0 -73
  105. data/spec/integrations/campaigns_spec.rb +0 -19
  106. data/spec/integrations/canvas_spec.rb +0 -28
  107. data/spec/integrations/create_user_aliases_spec.rb +0 -32
  108. data/spec/integrations/delete_users_spec.rb +0 -32
  109. data/spec/integrations/email_status_spec.rb +0 -38
  110. data/spec/integrations/email_sync_spec.rb +0 -31
  111. data/spec/integrations/export_users_spec.rb +0 -29
  112. data/spec/integrations/identify_users_spec.rb +0 -32
  113. data/spec/integrations/list_segments_spec.rb +0 -21
  114. data/spec/integrations/remove_external_ids_spec.rb +0 -33
  115. data/spec/integrations/rename_external_ids_spec.rb +0 -37
  116. data/spec/integrations/schedule_messages_spec.rb +0 -34
  117. data/spec/integrations/send_messages_spec.rb +0 -33
  118. data/spec/integrations/subscription_spec.rb +0 -149
  119. data/spec/integrations/track_users_spec.rb +0 -38
  120. data/spec/spec_helper.rb +0 -25
  121. data/spec/support/factory_bot.rb +0 -12
  122. data/spec/support/integrations.rb +0 -27
  123. data/spec/support/vcr.rb +0 -20
@@ -1,30 +0,0 @@
1
- name: CI
2
-
3
- on: [push, pull_request]
4
-
5
- jobs:
6
- build:
7
- runs-on: ubuntu-latest
8
-
9
- steps:
10
- - uses: actions/checkout@v2
11
-
12
- - name: Set up Ruby
13
- uses: ruby/setup-ruby@v1
14
- with:
15
- ruby-version: 2.6
16
-
17
- - name: Cache gems
18
- uses: actions/cache@v1
19
- with:
20
- path: vendor/bundle
21
- key: ${{ runner.os }}-gems-${{ hashFiles('**/Gemfile.lock') }}
22
- restore-keys: |
23
- ${{ runner.os }}-gems-
24
-
25
- - name: Build and test
26
- run: |
27
- gem install bundler
28
- bundle config path vendor/bundle
29
- bundle install --jobs 4 --retry 3
30
- bundle exec rake spec
data/Gemfile.lock DELETED
@@ -1,82 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- braze_ruby (0.4.2)
5
- faraday
6
-
7
- GEM
8
- remote: https://rubygems.org/
9
- specs:
10
- activesupport (6.0.3.2)
11
- concurrent-ruby (~> 1.0, >= 1.0.2)
12
- i18n (>= 0.7, < 2)
13
- minitest (~> 5.1)
14
- tzinfo (~> 1.1)
15
- zeitwerk (~> 2.2, >= 2.2.2)
16
- addressable (2.7.0)
17
- public_suffix (>= 2.0.2, < 5.0)
18
- coderay (1.1.3)
19
- concurrent-ruby (1.1.6)
20
- crack (0.4.3)
21
- safe_yaml (~> 1.0.0)
22
- diff-lcs (1.3)
23
- dotenv (2.7.5)
24
- factory_bot (5.2.0)
25
- activesupport (>= 4.2.0)
26
- faraday (1.3.0)
27
- faraday-net_http (~> 1.0)
28
- multipart-post (>= 1.2, < 3)
29
- ruby2_keywords
30
- faraday-net_http (1.0.1)
31
- hashdiff (1.0.1)
32
- i18n (1.8.3)
33
- concurrent-ruby (~> 1.0)
34
- method_source (1.0.0)
35
- minitest (5.14.1)
36
- multipart-post (2.1.1)
37
- pry (0.13.1)
38
- coderay (~> 1.1)
39
- method_source (~> 1.0)
40
- public_suffix (4.0.5)
41
- rake (13.0.1)
42
- rspec (3.9.0)
43
- rspec-core (~> 3.9.0)
44
- rspec-expectations (~> 3.9.0)
45
- rspec-mocks (~> 3.9.0)
46
- rspec-core (3.9.2)
47
- rspec-support (~> 3.9.3)
48
- rspec-expectations (3.9.2)
49
- diff-lcs (>= 1.2.0, < 2.0)
50
- rspec-support (~> 3.9.0)
51
- rspec-mocks (3.9.1)
52
- diff-lcs (>= 1.2.0, < 2.0)
53
- rspec-support (~> 3.9.0)
54
- rspec-support (3.9.3)
55
- ruby2_keywords (0.0.4)
56
- safe_yaml (1.0.5)
57
- thread_safe (0.3.6)
58
- tzinfo (1.2.7)
59
- thread_safe (~> 0.1)
60
- vcr (6.0.0)
61
- webmock (3.8.3)
62
- addressable (>= 2.3.6)
63
- crack (>= 0.3.2)
64
- hashdiff (>= 0.4.0, < 2.0.0)
65
- zeitwerk (2.3.0)
66
-
67
- PLATFORMS
68
- ruby
69
-
70
- DEPENDENCIES
71
- braze_ruby!
72
- bundler (>= 1.3)
73
- dotenv (~> 2.7.5)
74
- factory_bot (>= 5.1.0)
75
- pry (>= 0.12.2)
76
- rake (>= 12.3.3)
77
- rspec (~> 3.8)
78
- vcr (>= 5.0.0)
79
- webmock (>= 3.7.5)
80
-
81
- BUNDLED WITH
82
- 2.1.4
@@ -1,6 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
-
5
- describe BrazeRuby::API do
6
- end
@@ -1,31 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
-
5
- class API
6
- include BrazeRuby::Endpoints::DeleteUsers
7
-
8
- def api_key
9
- :api_key
10
- end
11
- end
12
-
13
- describe BrazeRuby::Endpoints::DeleteUsers do
14
- let(:api) { API.new }
15
- let(:delete_users_service) { double(:delete_users_service) }
16
-
17
- before { api.delete_users_service = delete_users_service }
18
-
19
- describe '#delete_users' do
20
- let(:payload) { [1, 2, 3] }
21
-
22
- subject(:delete_users!) { api.delete_users(payload) }
23
-
24
- it 'deletes users' do
25
- expect(delete_users_service).to receive(:perform)
26
- .with(external_ids: payload)
27
-
28
- delete_users!
29
- end
30
- end
31
- end
@@ -1,74 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
-
5
- class API
6
- include BrazeRuby::Endpoints::TrackUsers
7
-
8
- def api_key
9
- :api_key
10
- end
11
- end
12
-
13
- describe BrazeRuby::Endpoints::TrackUsers do
14
- let(:api) { API.new }
15
- let(:track_users_service) { double(:track_users_service) }
16
-
17
- before { api.track_users_service = track_users_service }
18
-
19
- describe '#track_users' do
20
- let(:payload) {{
21
- attributes: [build(:attribute)],
22
- events: [build(:event)],
23
- purchases: [build(:purchase)]
24
- }}
25
-
26
- subject(:track_users!) { api.track_users(**payload) }
27
-
28
- it 'tracks attributes, events and purchases' do
29
- expect(track_users_service).to receive(:perform)
30
- .with(payload)
31
-
32
- track_users!
33
- end
34
- end
35
-
36
- describe '#track_purchase' do
37
- let(:payload) { build(:purchase) }
38
-
39
- subject(:track_purchase!) { api.track_purchase(**payload) }
40
-
41
- it 'tracks a single purchase' do
42
- expect(track_users_service).to receive(:perform)
43
- .with(purchases: [payload])
44
-
45
- track_purchase!
46
- end
47
- end
48
-
49
- describe '#track_event' do
50
- let(:payload) { build(:event) }
51
-
52
- subject(:track_event!) { api.track_event(**payload) }
53
-
54
- it 'tracks a single purchase' do
55
- expect(track_users_service).to receive(:perform)
56
- .with(events: [payload])
57
-
58
- track_event!
59
- end
60
- end
61
-
62
- describe '#track_attribute' do
63
- let(:payload) { build(:attribute) }
64
-
65
- subject(:track_attribute!) { api.track_attribute(**payload) }
66
-
67
- it 'tracks a single purchase' do
68
- expect(track_users_service).to receive(:perform)
69
- .with(attributes: [payload])
70
-
71
- track_attribute!
72
- end
73
- end
74
- end
@@ -1,48 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
- require 'braze_ruby/http'
5
-
6
- describe BrazeRuby::HTTP do
7
- describe "#connection" do
8
- let(:options) { double("options", :"[]=" => nil) }
9
- let(:headers) { double("headers", :"[]=" => nil) }
10
- let(:conn) { double("conn", adapter: nil, options: options, headers: headers) }
11
- let(:api_key) { "braze-api-key" }
12
- let(:braze_url) { "http://example.com" }
13
-
14
- before :each do
15
- allow(Faraday).to receive(:new).and_yield(conn)
16
- allow(Faraday).to receive(:default_adapter).and_return(:default_adapter)
17
- end
18
-
19
- it "it defaults to the timeout option" do
20
- described_class.new(api_key, braze_url).connection
21
-
22
- expect(options).to have_received(:"[]=").with(:timeout, described_class::DEFAULT_TIMEOUT)
23
- end
24
-
25
- it "it sets the default timeout option when given" do
26
- timeout = 5
27
- described_class.new(api_key, braze_url, {timeout: timeout}).connection
28
-
29
- expect(options).to have_received(:"[]=").with(:timeout, timeout)
30
- end
31
-
32
- it "sets the headers" do
33
- described_class.new(api_key, braze_url).connection
34
-
35
-
36
- expect(headers).to have_received(:"[]=").with("Content-Type", "application/json")
37
- expect(headers).to have_received(:"[]=").with("Accept", "application/json")
38
- expect(headers).to have_received(:"[]=").with("User-Agent", "Braze Ruby gem v#{BrazeRuby::VERSION}")
39
- expect(headers).to have_received(:"[]=").with("Authorization", "Bearer braze-api-key")
40
- end
41
-
42
- it "it sets the default adapter" do
43
- described_class.new(api_key, braze_url).connection
44
-
45
- expect(conn).to have_received(:adapter).with(:default_adapter)
46
- end
47
- end
48
- end
@@ -1,23 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
-
5
- describe BrazeRuby::REST::CreateUserAliases do
6
- let(:http) { double(:http) }
7
-
8
- let(:payload) { {user_aliases: [user]} }
9
- let(:user) { { user_alias: { alias_name: 'abc', alias_label: 'foo' } } }
10
-
11
- let(:api_key) { :api_key }
12
-
13
- subject { described_class.new :api_key, :rest_url, {}}
14
-
15
- before { subject.http = http }
16
-
17
- it 'makes an http call to the user aliases endpoint' do
18
- expect(http).to receive(:post).with '/users/alias/new',
19
- payload
20
-
21
- subject.perform(**payload)
22
- end
23
- end
@@ -1,22 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
-
5
- describe BrazeRuby::REST::DeleteUsers do
6
- let(:http) { double(:http) }
7
-
8
- let(:payload) { {external_ids: [1, 2, 3]} }
9
-
10
- let(:api_key) { :api_key }
11
-
12
- subject { described_class.new :api_key, :rest_url, {}}
13
-
14
- before { subject.http = http }
15
-
16
- it 'makes an http call to the delete user endpoint' do
17
- expect(http).to receive(:post).with '/users/delete',
18
- payload
19
-
20
- subject.perform(**payload)
21
- end
22
- end
@@ -1,20 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
-
5
- describe BrazeRuby::REST::EmailStatus do
6
- let(:http) { double(:http) }
7
-
8
- before { subject.http = http }
9
-
10
- subject { described_class.new(:api_key, :rest_url, {}, email: :email, status: :status) }
11
-
12
- it 'makes an http call to the email status endpoint' do
13
- expect(http).to receive(:post).with '/email/status', {
14
- email: :email,
15
- subscription_state: :status
16
- }
17
-
18
- subject.perform
19
- end
20
- end
@@ -1,21 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
-
5
- describe BrazeRuby::REST::ExportUsers do
6
- let(:http) { double(:http) }
7
-
8
- let(:payload) {{ external_ids: external_ids }}
9
- let(:external_ids) { [1] }
10
-
11
- subject { described_class.new :api_key, :rest_url, {} }
12
-
13
- before { subject.http = http }
14
-
15
- it 'makes an http call to the track user endpoint' do
16
- expect(http).to receive(:post).with '/users/export/ids',
17
- payload
18
-
19
- subject.perform(**payload)
20
- end
21
- end
@@ -1,23 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
-
5
- describe BrazeRuby::REST::IdentifyUsers do
6
- let(:http) { double(:http) }
7
-
8
- let(:payload) { {aliases_to_identify: [user]} }
9
- let(:user) { { external_id: 123, user_alias: { alias_name: 'abc', alias_label: 'foo' } } }
10
-
11
- let(:api_key) { :api_key }
12
-
13
- subject { described_class.new :api_key, :rest_url, {}}
14
-
15
- before { subject.http = http }
16
-
17
- it 'makes an http call to the identify users endpoint' do
18
- expect(http).to receive(:post).with '/users/identify',
19
- payload
20
-
21
- subject.perform(**payload)
22
- end
23
- end
@@ -1,22 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
-
5
- describe BrazeRuby::REST::RemoveExternalIds do
6
- let(:http) { double(:http) }
7
-
8
- let(:payload) { { external_ids: ['foo'] } }
9
-
10
- let(:api_key) { :api_key }
11
-
12
- subject { described_class.new :api_key, :rest_url, {}}
13
-
14
- before { subject.http = http }
15
-
16
- it 'makes an http call to the remove external ids endpoint' do
17
- expect(http).to receive(:post).with '/users/external_ids/remove',
18
- payload
19
-
20
- subject.perform(**payload)
21
- end
22
- end
@@ -1,22 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
-
5
- describe BrazeRuby::REST::RenameExternalIds do
6
- let(:http) { double(:http) }
7
-
8
- let(:payload) { { external_id_renames: [{ current_external_id: 'abc', new_external_id: 'foo' }] } }
9
-
10
- let(:api_key) { :api_key }
11
-
12
- subject { described_class.new :api_key, :rest_url, {}}
13
-
14
- before { subject.http = http }
15
-
16
- it 'makes an http call to the rename external ids endpoint' do
17
- expect(http).to receive(:post).with '/users/external_ids/rename',
18
- payload
19
-
20
- subject.perform(**payload)
21
- end
22
- end