action_kit_rest 0.4.2 → 0.4.6

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 (52) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +24 -0
  3. data/.rubocop.yml +26 -0
  4. data/.ruby-version +1 -1
  5. data/Gemfile +11 -9
  6. data/README.md +2 -2
  7. data/Rakefile +15 -18
  8. data/action_kit_rest.gemspec +24 -20
  9. data/lib/action_kit_rest/action.rb +3 -1
  10. data/lib/action_kit_rest/actions/event_create_action.rb +5 -3
  11. data/lib/action_kit_rest/actions/event_signup_action.rb +6 -3
  12. data/lib/action_kit_rest/actions/unsubscribe_action.rb +3 -1
  13. data/lib/action_kit_rest/allowed_user_field.rb +3 -1
  14. data/lib/action_kit_rest/api.rb +9 -7
  15. data/lib/action_kit_rest/base.rb +5 -4
  16. data/lib/action_kit_rest/client.rb +5 -3
  17. data/lib/action_kit_rest/event.rb +3 -1
  18. data/lib/action_kit_rest/event_signup.rb +3 -1
  19. data/lib/action_kit_rest/language.rb +3 -1
  20. data/lib/action_kit_rest/list.rb +3 -1
  21. data/lib/action_kit_rest/page.rb +4 -2
  22. data/lib/action_kit_rest/pages/base.rb +4 -5
  23. data/lib/action_kit_rest/pages/donation_page.rb +3 -1
  24. data/lib/action_kit_rest/pages/event_campaign_page.rb +4 -2
  25. data/lib/action_kit_rest/pages/import_page.rb +3 -1
  26. data/lib/action_kit_rest/pages/signup_page.rb +3 -1
  27. data/lib/action_kit_rest/pages/unsubscribe_page.rb +3 -1
  28. data/lib/action_kit_rest/phone.rb +2 -0
  29. data/lib/action_kit_rest/railties.rb +3 -1
  30. data/lib/action_kit_rest/response/collection.rb +4 -4
  31. data/lib/action_kit_rest/response/raise_error.rb +15 -12
  32. data/lib/action_kit_rest/response/validation_error.rb +8 -1
  33. data/lib/action_kit_rest/response/wrapper.rb +10 -10
  34. data/lib/action_kit_rest/tag.rb +6 -6
  35. data/lib/action_kit_rest/user.rb +3 -1
  36. data/lib/action_kit_rest/version.rb +3 -1
  37. data/lib/action_kit_rest.rb +2 -0
  38. data/spec/lib/action_kit_rest/actions/event_create_action_spec.rb +6 -4
  39. data/spec/lib/action_kit_rest/actions/event_signup_action_spec.rb +6 -4
  40. data/spec/lib/action_kit_rest/allowed_user_field_spec.rb +9 -7
  41. data/spec/lib/action_kit_rest/logger_spec.rb +7 -5
  42. data/spec/lib/action_kit_rest/page_spec.rb +28 -28
  43. data/spec/lib/action_kit_rest/pages/event_campaign_page_spec.rb +25 -20
  44. data/spec/lib/action_kit_rest/pages/import_page_spec.rb +21 -17
  45. data/spec/lib/action_kit_rest/response/collection_spec.rb +13 -11
  46. data/spec/lib/action_kit_rest/response/validation_error_spec.rb +39 -0
  47. data/spec/lib/action_kit_rest/response/wrapper_spec.rb +6 -4
  48. data/spec/lib/action_kit_rest/user_spec.rb +11 -9
  49. data/spec/spec_helper.rb +6 -4
  50. data/spec/support/shared_contexts/stub_logger.rb +4 -2
  51. metadata +61 -57
  52. data/.travis.yml +0 -3
@@ -1,26 +1,28 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
- describe ActionKitRest::Response::Collection do
4
- let(:meta) { double() }
5
- let(:objects) { double() }
5
+ describe ActionKitRest::Response::Collection do
6
+ let(:meta) { double }
7
+ let(:objects) { double }
6
8
  subject { ActionKitRest::Response::Collection.new(meta, objects) }
7
9
 
8
10
  describe 'initialization' do
9
11
  it 'should set meta and objects' do
10
- subject.meta.should == meta
11
- subject.objects.should == objects
12
+ expect(subject.meta).to eq(meta)
13
+ expect(subject.objects).to eq(objects)
12
14
  end
13
15
  end
14
16
 
15
17
  describe 'each' do
16
18
  let(:item1) { double }
17
19
  let(:item2) { double }
18
- let(:objects) { [ item1, item2 ] }
20
+ let(:objects) { [item1, item2] }
19
21
 
20
- it "should return all collection items" do
21
- subject.count.should == 2
22
- subject.any? { |i| i == item1 }
23
- subject.any? { |i| i == item2 }
22
+ it 'should return all collection items' do
23
+ expect(subject.count).to eq(2)
24
+ expect(subject.any? { |i| i == item1 }).to be_truthy
25
+ expect(subject.any? { |i| i == item2 }).to be_truthy
24
26
  end
25
27
  end
26
- end
28
+ end
@@ -0,0 +1,39 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ describe ActionKitRest::Response::ValidationError do
6
+ describe '#to_s' do
7
+ subject { ActionKitRest::Response::ValidationError.new(url: url, body: body) }
8
+
9
+ context 'with a normal URL and body' do
10
+ let(:url) { 'https://actionkit.example.com/rest/v1/page/1' }
11
+ let(:errors) { { 'zip' => 'invalid zip code' } }
12
+ let(:body) { { errors: errors }.to_json }
13
+
14
+ it 'should put information in the string' do
15
+ expect(subject.to_s).to eq "ActionKitRest::Response::ValidationError \n url: #{url} \n body: #{body} \n errors: #{errors.inspect}"
16
+ end
17
+ end
18
+
19
+ context 'with special characters in the body' do
20
+ let(:url) { 'https://actionkit.example.com/rest/v1/page/1' }
21
+ let(:errors) { { 'zip' => '☃' } }
22
+ let(:body) { { errors: errors }.to_json }
23
+
24
+ it 'should put information in the string' do
25
+ expect(subject.to_s).to eq "ActionKitRest::Response::ValidationError \n url: #{url} \n body: #{body} \n errors: #{errors.inspect}"
26
+ end
27
+ end
28
+
29
+ context 'with a body in ASCII-8BIT format' do
30
+ let(:url) { 'https://actionkit.example.com/rest/v1/page/1' }
31
+ let(:errors) { {'mailing_id' => ['לא הצלחנו לקשר בין מספר הזיהוי של רשימת הדיוור הזו לבין החשבון.']} }
32
+ let(:body) { { errors: errors }.to_json.b }
33
+
34
+ it 'should put information in the string' do
35
+ expect(subject.to_s).to eq "ActionKitRest::Response::ValidationError \n url: #{url} \n body: {\"errors\":#{errors.to_json}} \n errors: #{errors.inspect}"
36
+ end
37
+ end
38
+ end
39
+ end
@@ -1,10 +1,12 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  describe ActionKitRest::Response::Wrapper do
4
6
  describe 'initialization' do
5
7
  it "should be kind 'object' for objects" do
6
8
  body = double
7
- response = double(:body => body)
9
+ response = double(body: body)
8
10
 
9
11
  wrapper = ActionKitRest::Response::Wrapper.new(response)
10
12
 
@@ -13,8 +15,8 @@ describe ActionKitRest::Response::Wrapper do
13
15
  end
14
16
 
15
17
  it "should be kind 'collection' for collections" do
16
- body = double(:meta => '', :objects => [])
17
- response = double(:body => body)
18
+ body = double(meta: '', objects: [])
19
+ response = double(body: body)
18
20
 
19
21
  wrapper = ActionKitRest::Response::Wrapper.new(response)
20
22
 
@@ -22,4 +24,4 @@ describe ActionKitRest::Response::Wrapper do
22
24
  wrapper.collection?.should be_truthy
23
25
  end
24
26
  end
25
- end
27
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  describe ActionKitRest::User do
@@ -11,16 +13,16 @@ describe ActionKitRest::User do
11
13
 
12
14
  subject { ActionKitRest.new(host: 'test.com') }
13
15
 
14
- describe "retrieval" do
16
+ describe 'retrieval' do
15
17
  let(:request_path) { 'user/1/' }
16
18
 
17
19
  context 'without basic auth' do
18
20
  before(:each) do
19
- stub_get(request_path).to_return(:body => body, :status => status,
20
- :headers => {:content_type => "application/json; charset=utf-8"})
21
+ stub_get(request_path).to_return(body: body, status: status,
22
+ headers: { content_type: 'application/json; charset=utf-8' })
21
23
  end
22
24
 
23
- describe ".get" do
25
+ describe '.get' do
24
26
  let(:status) { 200 }
25
27
 
26
28
  context 'without phones' do
@@ -36,9 +38,9 @@ describe ActionKitRest::User do
36
38
  let(:phone_body) { fixture('phone/object.json') }
37
39
 
38
40
  it 'should include phones' do
39
- stub_get('phone/?user=1').to_return(:body => phone_body, :status => 200)
41
+ stub_get('phone/?user=1').to_return(body: phone_body, status: 200)
40
42
  expect(subject.user.get(1).phones.count).to eq 3
41
- expect(subject.user.get(1).phones.map(&:phone)).to match_array(['7755555555', '7755555577', '310-310-3310'])
43
+ expect(subject.user.get(1).phones.map(&:phone)).to match_array(%w[7755555555 7755555577 310-310-3310])
42
44
  end
43
45
  end
44
46
  end
@@ -47,7 +49,7 @@ describe ActionKitRest::User do
47
49
  let(:body) { '' }
48
50
  let(:status) { 404 }
49
51
 
50
- it "should raise an exception" do
52
+ it 'should raise an exception' do
51
53
  expect { subject.user.get(1) }.to raise_error(ActionKitRest::Response::NotFound)
52
54
  end
53
55
  end
@@ -59,8 +61,8 @@ describe ActionKitRest::User do
59
61
  subject { ActionKitRest.new(host: 'test.com', username: 'alice', password: 'somesecret') }
60
62
 
61
63
  before(:each) do
62
- stub_get(request_path).with(basic_auth: ['alice', 'somesecret'])
63
- .to_return(body: body, status: 200, headers: {content_type: "application/json; charset=utf-8"})
64
+ stub_get(request_path).with(basic_auth: %w[alice somesecret])
65
+ .to_return(body: body, status: 200, headers: { content_type: 'application/json; charset=utf-8' })
64
66
  end
65
67
 
66
68
  it 'should return a user object' do
data/spec/spec_helper.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rspec'
2
4
  require 'webmock/rspec'
3
5
 
@@ -16,11 +18,11 @@ RSpec.configure do |config|
16
18
  end
17
19
 
18
20
  config.mock_with :rspec do |mocks|
19
- mocks.syntax = [:should, :expect]
21
+ mocks.syntax = %i[should expect]
20
22
  end
21
23
 
22
24
  config.expect_with :rspec do |c|
23
- c.syntax = [:should, :expect]
25
+ c.syntax = %i[should expect]
24
26
  end
25
27
  end
26
28
 
@@ -37,11 +39,11 @@ def stub_put(path)
37
39
  end
38
40
 
39
41
  def stub_action_kit_request(method, path)
40
- stub_request(method, 'https://test.com/rest/v1/' + path)
42
+ stub_request(method, "https://test.com/rest/v1/#{path}")
41
43
  end
42
44
 
43
45
  def fixture_path
44
- File.expand_path("../fixtures", __FILE__)
46
+ File.expand_path('fixtures', __dir__)
45
47
  end
46
48
 
47
49
  def fixture(file)
@@ -1,4 +1,6 @@
1
- shared_context "stub_logger" do
1
+ # frozen_string_literal: true
2
+
3
+ shared_context 'stub_logger' do
2
4
  before(:each) do
3
5
  logger = double
4
6
  allow(logger).to receive(:debug).and_return(true)
@@ -6,4 +8,4 @@ shared_context "stub_logger" do
6
8
  allow(ActionKitRest).to receive(:logger).and_return(logger)
7
9
  allow(Vertebrae::Base).to receive(:logger).and_return(logger)
8
10
  end
9
- end
11
+ end
metadata CHANGED
@@ -1,99 +1,105 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: action_kit_rest
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.2
4
+ version: 0.4.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nathan Woodhull
8
8
  - Diego Marcet
9
- - Jacinda Moore
9
+ - Grey Moore
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2020-01-13 00:00:00.000000000 Z
13
+ date: 2021-09-29 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: vertebrae
17
17
  requirement: !ruby/object:Gem::Requirement
18
18
  requirements:
19
- - - "~>"
19
+ - - ">="
20
20
  - !ruby/object:Gem::Version
21
- version: 0.5.0
21
+ version: 0.6.0
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
25
25
  requirements:
26
- - - "~>"
26
+ - - ">="
27
27
  - !ruby/object:Gem::Version
28
- version: 0.5.0
28
+ version: 0.6.0
29
29
  - !ruby/object:Gem::Dependency
30
- name: rspec
30
+ name: bundler
31
31
  requirement: !ruby/object:Gem::Requirement
32
32
  requirements:
33
- - - "~>"
33
+ - - ">="
34
34
  - !ruby/object:Gem::Version
35
- version: '3.7'
35
+ version: '2.0'
36
+ - - "<"
37
+ - !ruby/object:Gem::Version
38
+ version: '3.0'
36
39
  type: :development
37
40
  prerelease: false
38
41
  version_requirements: !ruby/object:Gem::Requirement
39
42
  requirements:
40
- - - "~>"
43
+ - - ">="
41
44
  - !ruby/object:Gem::Version
42
- version: '3.7'
45
+ version: '2.0'
46
+ - - "<"
47
+ - !ruby/object:Gem::Version
48
+ version: '3.0'
43
49
  - !ruby/object:Gem::Dependency
44
- name: webmock
50
+ name: byebug
45
51
  requirement: !ruby/object:Gem::Requirement
46
52
  requirements:
47
- - - "~>"
53
+ - - ">="
48
54
  - !ruby/object:Gem::Version
49
- version: '3.3'
55
+ version: '0'
50
56
  type: :development
51
57
  prerelease: false
52
58
  version_requirements: !ruby/object:Gem::Requirement
53
59
  requirements:
54
- - - "~>"
60
+ - - ">="
55
61
  - !ruby/object:Gem::Version
56
- version: '3.3'
62
+ version: '0'
57
63
  - !ruby/object:Gem::Dependency
58
- name: byebug
64
+ name: em-http-request
59
65
  requirement: !ruby/object:Gem::Requirement
60
66
  requirements:
61
67
  - - ">="
62
68
  - !ruby/object:Gem::Version
63
- version: 10.0.2
69
+ version: 1.1.5
64
70
  - - "<"
65
71
  - !ruby/object:Gem::Version
66
- version: '11.0'
72
+ version: '2.0'
67
73
  type: :development
68
74
  prerelease: false
69
75
  version_requirements: !ruby/object:Gem::Requirement
70
76
  requirements:
71
77
  - - ">="
72
78
  - !ruby/object:Gem::Version
73
- version: 10.0.2
79
+ version: 1.1.5
74
80
  - - "<"
75
81
  - !ruby/object:Gem::Version
76
- version: '11.0'
82
+ version: '2.0'
77
83
  - !ruby/object:Gem::Dependency
78
- name: bundler
84
+ name: em-synchrony
79
85
  requirement: !ruby/object:Gem::Requirement
80
86
  requirements:
81
87
  - - ">="
82
88
  - !ruby/object:Gem::Version
83
- version: '2.0'
89
+ version: 1.0.6
84
90
  - - "<"
85
91
  - !ruby/object:Gem::Version
86
- version: '3.0'
92
+ version: '2.0'
87
93
  type: :development
88
94
  prerelease: false
89
95
  version_requirements: !ruby/object:Gem::Requirement
90
96
  requirements:
91
97
  - - ">="
92
98
  - !ruby/object:Gem::Version
93
- version: '2.0'
99
+ version: 1.0.6
94
100
  - - "<"
95
101
  - !ruby/object:Gem::Version
96
- version: '3.0'
102
+ version: '2.0'
97
103
  - !ruby/object:Gem::Dependency
98
104
  name: eventmachine
99
105
  requirement: !ruby/object:Gem::Requirement
@@ -115,65 +121,61 @@ dependencies:
115
121
  - !ruby/object:Gem::Version
116
122
  version: '2.0'
117
123
  - !ruby/object:Gem::Dependency
118
- name: em-synchrony
124
+ name: juwelier
119
125
  requirement: !ruby/object:Gem::Requirement
120
126
  requirements:
121
127
  - - ">="
122
128
  - !ruby/object:Gem::Version
123
- version: 1.0.6
124
- - - "<"
125
- - !ruby/object:Gem::Version
126
- version: '2.0'
129
+ version: '0'
127
130
  type: :development
128
131
  prerelease: false
129
132
  version_requirements: !ruby/object:Gem::Requirement
130
133
  requirements:
131
134
  - - ">="
132
135
  - !ruby/object:Gem::Version
133
- version: 1.0.6
134
- - - "<"
135
- - !ruby/object:Gem::Version
136
- version: '2.0'
136
+ version: '0'
137
137
  - !ruby/object:Gem::Dependency
138
- name: em-http-request
138
+ name: rspec
139
139
  requirement: !ruby/object:Gem::Requirement
140
140
  requirements:
141
- - - ">="
142
- - !ruby/object:Gem::Version
143
- version: 1.1.5
144
- - - "<"
141
+ - - "~>"
145
142
  - !ruby/object:Gem::Version
146
- version: '2.0'
143
+ version: '3.7'
147
144
  type: :development
148
145
  prerelease: false
149
146
  version_requirements: !ruby/object:Gem::Requirement
150
147
  requirements:
151
- - - ">="
152
- - !ruby/object:Gem::Version
153
- version: 1.1.5
154
- - - "<"
148
+ - - "~>"
155
149
  - !ruby/object:Gem::Version
156
- version: '2.0'
150
+ version: '3.7'
157
151
  - !ruby/object:Gem::Dependency
158
- name: juwelier
152
+ name: rubocop
159
153
  requirement: !ruby/object:Gem::Requirement
160
154
  requirements:
161
155
  - - ">="
162
156
  - !ruby/object:Gem::Version
163
- version: 2.4.9
164
- - - "<"
165
- - !ruby/object:Gem::Version
166
- version: '3.0'
157
+ version: '0'
167
158
  type: :development
168
159
  prerelease: false
169
160
  version_requirements: !ruby/object:Gem::Requirement
170
161
  requirements:
171
162
  - - ">="
172
163
  - !ruby/object:Gem::Version
173
- version: 2.4.9
174
- - - "<"
164
+ version: '0'
165
+ - !ruby/object:Gem::Dependency
166
+ name: webmock
167
+ requirement: !ruby/object:Gem::Requirement
168
+ requirements:
169
+ - - "~>"
175
170
  - !ruby/object:Gem::Version
176
- version: '3.0'
171
+ version: '3.3'
172
+ type: :development
173
+ prerelease: false
174
+ version_requirements: !ruby/object:Gem::Requirement
175
+ requirements:
176
+ - - "~>"
177
+ - !ruby/object:Gem::Version
178
+ version: '3.3'
177
179
  description: Gem for interacting with the ActionKit API
178
180
  email: systems@controlshiftlabs.com
179
181
  executables: []
@@ -183,10 +185,11 @@ extra_rdoc_files:
183
185
  - README.md
184
186
  files:
185
187
  - ".document"
188
+ - ".github/workflows/ci.yml"
186
189
  - ".rspec"
190
+ - ".rubocop.yml"
187
191
  - ".ruby-gemset"
188
192
  - ".ruby-version"
189
- - ".travis.yml"
190
193
  - Gemfile
191
194
  - LICENSE.txt
192
195
  - README.md
@@ -244,6 +247,7 @@ files:
244
247
  - spec/lib/action_kit_rest/pages/event_campaign_page_spec.rb
245
248
  - spec/lib/action_kit_rest/pages/import_page_spec.rb
246
249
  - spec/lib/action_kit_rest/response/collection_spec.rb
250
+ - spec/lib/action_kit_rest/response/validation_error_spec.rb
247
251
  - spec/lib/action_kit_rest/response/wrapper_spec.rb
248
252
  - spec/lib/action_kit_rest/user_spec.rb
249
253
  - spec/spec_helper.rb
@@ -267,7 +271,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
267
271
  - !ruby/object:Gem::Version
268
272
  version: '0'
269
273
  requirements: []
270
- rubygems_version: 3.1.1
274
+ rubygems_version: 3.1.6
271
275
  signing_key:
272
276
  specification_version: 4
273
277
  summary: A wrapper for the ActionKit REST API
data/.travis.yml DELETED
@@ -1,3 +0,0 @@
1
- language: ruby
2
- rvm:
3
- - "2.3.4"