braze_ruby 0.4.2 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
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