chargehound 2.2.0 → 2.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 31be9dbdfb185724f781b20725eb877783e3c664
4
- data.tar.gz: 9319f70f475d27941ba96704aec1eacf799ae49d
2
+ SHA256:
3
+ metadata.gz: 3a82e732eb0a7cdf16eaf13488aa3802d99b14f39ea1270e588ac92f9e6ec7f9
4
+ data.tar.gz: a14307daea1deb3817aba7767d6f88bc0e84395af7502c55acbc5508415df4f1
5
5
  SHA512:
6
- metadata.gz: f02ea14de6beeb51ab586ebd55a2be71b9e2ac0398b6a0f5350b16fbfbcfb723b6ba3185ef746aa38ad3682e1dc74ec19907d5d4997558c218fc81614a888930
7
- data.tar.gz: 16ec1a8b42319611385c23586084898dc5be3ec2ebf17d85945d3ac2ff25981e1aa69c38f5c0318cabb9e8fb6a79ec9e24f3f102528cef2280b43d8247d93a41
6
+ metadata.gz: 3c2cc970865ac3e79011460b39636fd0fe4399abae617428fb4edd6a59a1ceeca1ae103fcad2fa89f0bfe272da1ae97b05379a6c253ff060e8d4b7544300c711
7
+ data.tar.gz: 0a821e6464dbac1257fcb0d73a91c58894e97ed2968729b00abdf8e2d311fd2812c5f45c3f7faafe51fc3722031c2138f94755b77e49cec0f6d7bc1e686c6019
@@ -0,0 +1,24 @@
1
+ name: Ruby
2
+
3
+ on:
4
+ push:
5
+ branches: [ main ]
6
+ pull_request:
7
+ branches: [ main ]
8
+
9
+ jobs:
10
+ build:
11
+ runs-on: ubuntu-latest
12
+ strategy:
13
+ matrix:
14
+ ruby: [ '2.4', '2.5', '2.6']
15
+ name: Test Ruby ${{ matrix.ruby }}
16
+ steps:
17
+ - uses: actions/checkout@v2
18
+ - uses: actions/setup-ruby@v1
19
+ with:
20
+ ruby-version: ${{ matrix.ruby }}
21
+ - run: |
22
+ gem install bundler
23
+ bundle install --jobs 4 --retry 3
24
+ bundle exec rake test
@@ -0,0 +1,36 @@
1
+ name: JRuby
2
+
3
+ on:
4
+ push:
5
+ branches: [ main ]
6
+ pull_request:
7
+ branches: [ main ]
8
+
9
+ jobs:
10
+ build:
11
+ runs-on: ubuntu-latest
12
+ strategy:
13
+ matrix:
14
+ ruby: [ 'jruby-9.2.9.0', 'jruby-head' ]
15
+ name: Test Ruby ${{ matrix.ruby }}
16
+ steps:
17
+ - name: Install libraries
18
+ run: sudo apt install haveged
19
+ - uses: actions/checkout@v2
20
+ - name: Set up RVM
21
+ run: |
22
+ curl -sSL https://get.rvm.io | bash
23
+ - name: Set up Ruby
24
+ run: |
25
+ source $HOME/.rvm/scripts/rvm
26
+ rvm install ${{ matrix.ruby }} --binary
27
+ rvm --default use ${{ matrix.ruby }}
28
+ - name: Install dependencies
29
+ run: |
30
+ source $HOME/.rvm/scripts/rvm
31
+ gem install bundler --no-document
32
+ bundle install
33
+ - name: Run test
34
+ run: |
35
+ source $HOME/.rvm/scripts/rvm
36
+ rake test
data/.rubocop.yml CHANGED
@@ -1,5 +1,23 @@
1
1
  Metrics/MethodLength:
2
2
  Enabled: false
3
3
 
4
+ Metrics/BlockLength:
5
+ Enabled: false
6
+
7
+ Gemspec/RequiredRubyVersion:
8
+ Enabled: false
9
+
10
+ Style/SymbolArray:
11
+ Enabled: false
12
+
4
13
  Style/SpecialGlobalVars:
5
14
  Enabled: false
15
+
16
+ Metrics/ClassLength:
17
+ Enabled: false
18
+
19
+ Metrics/AbcSize:
20
+ Enabled: false
21
+
22
+ Style/BlockDelimiters:
23
+ Enabled: false
data/CHANGELOG CHANGED
@@ -14,3 +14,13 @@
14
14
  - Add Accept endpoint
15
15
  2.2.0 November, 2017
16
16
  - Add support for overriding version
17
+ 2.2.1 Febuary, 2018
18
+ - Update rubocop version
19
+ 2.2.2 September, 2018
20
+ - Update docs
21
+ 2.3.0 April, 2019
22
+ - Add Correspondence model
23
+ 2.4.0 Sept, 2019
24
+ - Add PastPayment model
25
+ 2.5.0 Feb, 2021
26
+ - Surface error types
data/chargehound.gemspec CHANGED
@@ -6,18 +6,18 @@ Gem::Specification.new do |spec|
6
6
  spec.name = 'chargehound'
7
7
  spec.version = Chargehound::VERSION
8
8
  spec.platform = Gem::Platform::RUBY
9
- spec.required_ruby_version = '>= 1.9.3'
9
+ spec.required_ruby_version = '>= 2.0.0'
10
10
  spec.authors = ['Chargehound']
11
11
  spec.email = ['support@chargehound.com']
12
12
  spec.homepage = 'https://www.chargehound.com'
13
13
  spec.summary = 'Ruby bindings for the Chargehound API'
14
- spec.description = 'Automatically fight disputes in Stripe'
14
+ spec.description = 'Automatically fight disputes'
15
15
  spec.license = 'MIT'
16
16
 
17
- spec.add_development_dependency 'bundler', '~> 1.5'
17
+ spec.add_development_dependency 'bundler'
18
18
  spec.add_development_dependency 'minitest', '~> 5.8'
19
- spec.add_development_dependency 'rake', '~> 11.1'
20
- spec.add_development_dependency 'rubocop', '0.41.0'
19
+ spec.add_development_dependency 'rake', '~> 12.3'
20
+ spec.add_development_dependency 'rubocop', '~> 0.49'
21
21
  spec.add_development_dependency 'webmock', '~> 2.3'
22
22
 
23
23
  spec.files = `git ls-files`.split($/)
@@ -39,10 +39,7 @@ module Chargehound
39
39
  end
40
40
 
41
41
  def build_http_opts
42
- {
43
- use_ssl: true,
44
- read_timeout: Chargehound.timeout
45
- }
42
+ { use_ssl: true, read_timeout: Chargehound.timeout }
46
43
  end
47
44
 
48
45
  def build_headers(body)
@@ -100,7 +97,15 @@ module Chargehound
100
97
  def convert(dict)
101
98
  case dict['object']
102
99
  when 'dispute'
103
- dict['products'].map! { |item| Product.new(item) }
100
+ dict['products'] = dict.fetch('products', []).map { |item|
101
+ Product.new(item)
102
+ }
103
+ dict['correspondence'] = dict.fetch('correspondence', []).map { |item|
104
+ CorrespondenceItem.new(item)
105
+ }
106
+ dict['past_payments'] = dict.fetch('past_payments', []).map { |item|
107
+ PastPayment.new(item)
108
+ }
104
109
  Dispute.new(dict)
105
110
  when 'list'
106
111
  dict['data'].map! { |item| convert item }
@@ -11,7 +11,8 @@ module Chargehound
11
11
  end
12
12
 
13
13
  # A list of disputes
14
- # This endpoint will list all the disputes that we have synced from Stripe.
14
+ # This endpoint will list all the disputes that we have synced from your
15
+ # payment processor.
15
16
  # By default the disputes will be ordered by `created` with the most recent
16
17
  # dispute first. { }`has_more` will be `true` if more results are available.
17
18
  # @option [Hash] params the query parameters
@@ -37,9 +38,9 @@ module Chargehound
37
38
 
38
39
  # Submitting a dispute
39
40
  # You will want to submit the dispute through Chargehound after you recieve
40
- # a notification from Stripe of a new dispute. With one `POST` request
41
- # you can update a dispute with the evidence fields and send the generated
42
- # response to Stripe.
41
+ # a webhook notification of a new dispute. With one `POST` request
42
+ # you can update a dispute with the evidence fields and submit the generated
43
+ # response.
43
44
  # The response will have a `201` status if the submit was successful.
44
45
  # The dispute will also be in the submitted state.
45
46
  # @param dispute_id A dispute id
@@ -1,11 +1,12 @@
1
1
  module Chargehound
2
2
  # Cast Chargehound API errors to custom error types
3
3
  class ChargehoundError < StandardError
4
- attr_reader :status, :message
4
+ attr_reader :status, :message, :type
5
5
 
6
6
  def initialize(error_response)
7
7
  @message = error_response['message']
8
8
  @status = error_response['status']
9
+ @type = error_response['type']
9
10
  status_string = @status.nil? ? '' : "(Status #{@status}) "
10
11
  super("#{status_string}#{message}")
11
12
  end
@@ -40,6 +40,12 @@ module Chargehound
40
40
  class Product < ChargehoundObject
41
41
  end
42
42
 
43
+ class CorrespondenceItem < ChargehoundObject
44
+ end
45
+
46
+ class PastPayment < ChargehoundObject
47
+ end
48
+
43
49
  # Expose response properties via this struct on response objects
44
50
  HTTPResponse = Struct.new(:status)
45
51
  end
@@ -1,3 +1,3 @@
1
1
  module Chargehound
2
- VERSION = '2.2.0'.freeze
2
+ VERSION = '2.5.0'.freeze
3
3
  end
@@ -75,18 +75,100 @@ dispute_with_product_info_response = {
75
75
  ]
76
76
  }
77
77
 
78
- dispute_response = {
78
+ dispute_with_correspondence_info_update = {
79
+ fields: {
80
+ customer_name: 'Susie'
81
+ },
82
+ correspondence: [
83
+ {
84
+ to: 'customer@example.com',
85
+ from: 'noreply@example.com',
86
+ subject: 'Your Order',
87
+ body: 'Your order was received.',
88
+ caption: 'Order confirmation email.'
89
+ }, {
90
+ to: 'customer@example.com',
91
+ from: 'noreply@example.com',
92
+ subject: 'Your Order',
93
+ body: 'Your order was delivered.',
94
+ caption: 'Delivery confirmation email.'
95
+ }
96
+ ]
97
+ }
98
+
99
+ dispute_with_correspondence_info_response = {
100
+ id: 'dp_123',
101
+ object: 'dispute',
102
+ fields: {
103
+ customer_name: 'Susie'
104
+ },
105
+ correspondence: [
106
+ {
107
+ to: 'customer@example.com',
108
+ from: 'noreply@example.com',
109
+ subject: 'Your Order',
110
+ body: 'Your order was received.',
111
+ caption: 'Order confirmation email.'
112
+ }, {
113
+ to: 'customer@example.com',
114
+ from: 'noreply@example.com',
115
+ subject: 'Your Order',
116
+ body: 'Your order was delivered.',
117
+ caption: 'Delivery confirmation email.'
118
+ }
119
+ ]
120
+ }
121
+
122
+ dispute_with_past_payments_update = {
123
+ fields: {
124
+ customer_name: 'Susie'
125
+ },
126
+ past_payments: [
127
+ {
128
+ id: 'ch_1',
129
+ amount: 20_000,
130
+ currency: 'usd',
131
+ charged_at: '2019-09-10 11:09:41PM UTC'
132
+ }, {
133
+ id: 'ch_2',
134
+ amount: 50_000,
135
+ currency: 'usd',
136
+ charged_at: '2019-09-03 11:09:41PM UTC'
137
+ }
138
+ ]
139
+ }
140
+
141
+ dispute_with_past_payments_response = {
79
142
  id: 'dp_123',
80
143
  object: 'dispute',
81
- products: []
144
+ fields: {
145
+ customer_name: 'Susie'
146
+ },
147
+ past_payments: [
148
+ {
149
+ id: 'ch_1',
150
+ amount: 20_000,
151
+ currency: 'usd',
152
+ charged_at: '2019-09-10 11:09:41PM UTC'
153
+ }, {
154
+ id: 'ch_2',
155
+ amount: 50_000,
156
+ currency: 'usd',
157
+ charged_at: '2019-09-03 11:09:41PM UTC'
158
+ }
159
+ ]
160
+ }
161
+
162
+ dispute_response = {
163
+ id: 'dp_123',
164
+ object: 'dispute'
82
165
  }
83
166
 
84
167
  dispute_list_response = {
85
168
  object: 'list',
86
169
  data: [{
87
170
  id: 'dp_123',
88
- object: 'dispute',
89
- products: []
171
+ object: 'dispute'
90
172
  }]
91
173
  }
92
174
 
@@ -145,7 +227,9 @@ describe Chargehound::Disputes do
145
227
  data: [{
146
228
  id: 'dp_123',
147
229
  object: 'dispute',
148
- products: []
230
+ products: [],
231
+ correspondence: [],
232
+ past_payments: []
149
233
  }],
150
234
  response: {
151
235
  status: '200'
@@ -174,6 +258,24 @@ describe Chargehound::Disputes do
174
258
  assert_requested stub
175
259
  end
176
260
 
261
+ it 'can list disputes filtered by state' do
262
+ stub = stub_request(:get, 'https://api.chargehound.com/v1/disputes?state=needs_response')
263
+ .with(headers: get_headers)
264
+ .to_return(body: dispute_list_response.to_json)
265
+
266
+ Chargehound::Disputes.list(state: %w[needs_response])
267
+ assert_requested stub
268
+ end
269
+
270
+ it 'can list disputes filtered by multiple states' do
271
+ stub = stub_request(:get, 'https://api.chargehound.com/v1/disputes?state=needs_response&state=warning_needs_response')
272
+ .with(headers: get_headers)
273
+ .to_return(body: dispute_list_response.to_json)
274
+
275
+ Chargehound::Disputes.list(state: %w[needs_response warning_needs_response])
276
+ assert_requested stub
277
+ end
278
+
177
279
  it 'can retrieve a dispute' do
178
280
  stub = stub_request(:get, 'https://api.chargehound.com/v1/disputes/dp_123')
179
281
  .with(headers: get_headers)
@@ -242,6 +344,59 @@ describe Chargehound::Disputes do
242
344
  assert_requested stub
243
345
  end
244
346
 
347
+ it 'can submit a dispute with correspondence data' do
348
+ stub = stub_request(:post, 'https://api.chargehound.com/v1/disputes/dp_123/submit')
349
+ .with(headers: post_headers,
350
+ body: dispute_with_correspondence_info_update.to_json)
351
+ .to_return(body: dispute_with_correspondence_info_response.to_json,
352
+ status: 201)
353
+
354
+ Chargehound::Disputes.submit('dp_123',
355
+ dispute_with_correspondence_info_update)
356
+ assert_requested stub
357
+ end
358
+
359
+ it 'has a model for correspondence data' do
360
+ stub = stub_request(:post, 'https://api.chargehound.com/v1/disputes/dp_123/submit')
361
+ .with(headers: post_headers,
362
+ body: dispute_with_correspondence_info_update.to_json)
363
+ .to_return(body: dispute_with_correspondence_info_response.to_json,
364
+ status: 201)
365
+
366
+ dispute = Chargehound::Disputes.submit(
367
+ 'dp_123', dispute_with_correspondence_info_update
368
+ )
369
+
370
+ assert_instance_of(Chargehound::CorrespondenceItem,
371
+ dispute.correspondence[0])
372
+ assert_requested stub
373
+ end
374
+
375
+ it 'can submit a dispute with past payments data' do
376
+ stub = stub_request(:post, 'https://api.chargehound.com/v1/disputes/dp_123/submit')
377
+ .with(headers: post_headers,
378
+ body: dispute_with_past_payments_update.to_json)
379
+ .to_return(body: dispute_with_past_payments_response.to_json,
380
+ status: 201)
381
+
382
+ Chargehound::Disputes.submit('dp_123', dispute_with_past_payments_update)
383
+ assert_requested stub
384
+ end
385
+
386
+ it 'has a model for past payments data' do
387
+ stub = stub_request(:post, 'https://api.chargehound.com/v1/disputes/dp_123/submit')
388
+ .with(headers: post_headers,
389
+ body: dispute_with_past_payments_update.to_json)
390
+ .to_return(body: dispute_with_past_payments_response.to_json,
391
+ status: 201)
392
+
393
+ dispute = Chargehound::Disputes.submit('dp_123',
394
+ dispute_with_past_payments_update)
395
+
396
+ assert_instance_of(Chargehound::PastPayment, dispute.past_payments[0])
397
+ assert_requested stub
398
+ end
399
+
245
400
  it 'can update a dispute' do
246
401
  stub = stub_request(:put, 'https://api.chargehound.com/v1/disputes/dp_123')
247
402
  .with(headers: post_headers, body: dispute_update.to_json)
@@ -260,4 +415,15 @@ describe Chargehound::Disputes do
260
415
  Chargehound::Disputes.update('dp_123', dispute_with_product_info_update)
261
416
  assert_requested stub
262
417
  end
418
+
419
+ it 'can update a dispute with correspondence data' do
420
+ stub = stub_request(:put, 'https://api.chargehound.com/v1/disputes/dp_123')
421
+ .with(headers: post_headers,
422
+ body: dispute_with_correspondence_info_update.to_json)
423
+ .to_return(body: dispute_response.to_json)
424
+
425
+ Chargehound::Disputes.update('dp_123',
426
+ dispute_with_correspondence_info_update)
427
+ assert_requested stub
428
+ end
263
429
  end
data/test/error_test.rb CHANGED
@@ -7,6 +7,14 @@ error_response = {
7
7
  }
8
8
  }
9
9
 
10
+ error_response_typed = {
11
+ 'error' => {
12
+ 'status' => 400,
13
+ 'message' => 'Bad Request',
14
+ 'type' => 'invalid_request'
15
+ }
16
+ }
17
+
10
18
  describe Chargehound::ChargehoundError do
11
19
  before do
12
20
  Chargehound.api_key = 'API_KEY'
@@ -19,7 +27,13 @@ describe Chargehound::ChargehoundError do
19
27
  it 'should propagate errors' do
20
28
  stub_request(:any, 'https://api.chargehound.com/v1/disputes').to_raise(StandardError)
21
29
 
22
- assert_raises(StandardError, proc { Chargehound::Disputes.list })
30
+ # `assert_raises` has trouble on jruby,
31
+ # so we simply write the code
32
+ begin
33
+ Chargehound::Disputes.list
34
+ rescue StandardError => error
35
+ assert(error.is_a?(StandardError))
36
+ end
23
37
  end
24
38
 
25
39
  it 'should return typed chargehound errors from the API' do
@@ -38,6 +52,35 @@ describe Chargehound::ChargehoundError do
38
52
  end
39
53
  end
40
54
 
55
+ it 'should surface the error type' do
56
+ stub_request(:any, 'https://api.chargehound.com/v1/disputes').to_raise(StandardError)
57
+
58
+ # `assert_raises` has trouble on jruby,
59
+ # so we simply write the code
60
+ begin
61
+ Chargehound::Disputes.list
62
+ rescue StandardError => error
63
+ assert(error.is_a?(StandardError))
64
+ end
65
+ end
66
+
67
+ it 'should return typed chargehound errors from the API' do
68
+ stub_request(:any, 'https://api.chargehound.com/v1/disputes')
69
+ .to_return(status: 400, body: error_response_typed.to_json)
70
+
71
+ # `assert_raises` doesn't like Chargehound::ChargehoundBadRequestError,
72
+ # so we simply write the code
73
+ begin
74
+ Chargehound::Disputes.list
75
+ rescue Chargehound::ChargehoundBadRequestError => error
76
+ assert(error.is_a?(Chargehound::ChargehoundBadRequestError))
77
+ assert_equal(400, error.status)
78
+ assert_equal('Bad Request', error.message)
79
+ assert_equal('invalid_request', error.type)
80
+ assert_equal('(Status 400) Bad Request', error.to_s)
81
+ end
82
+ end
83
+
41
84
  it 'should throw a typed error on timeout' do
42
85
  stub_request(:any, 'https://api.chargehound.com/v1/disputes').to_timeout
43
86
 
metadata CHANGED
@@ -1,29 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chargehound
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.0
4
+ version: 2.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chargehound
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-11-07 00:00:00.000000000 Z
11
+ date: 2021-02-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '1.5'
19
+ version: '0'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '1.5'
26
+ version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: minitest
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -44,28 +44,28 @@ dependencies:
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '11.1'
47
+ version: '12.3'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '11.1'
54
+ version: '12.3'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rubocop
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - '='
59
+ - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: 0.41.0
61
+ version: '0.49'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - '='
66
+ - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: 0.41.0
68
+ version: '0.49'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: webmock
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -80,7 +80,7 @@ dependencies:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
82
  version: '2.3'
83
- description: Automatically fight disputes in Stripe
83
+ description: Automatically fight disputes
84
84
  email:
85
85
  - support@chargehound.com
86
86
  executables: []
@@ -88,9 +88,10 @@ extensions: []
88
88
  extra_rdoc_files:
89
89
  - README.md
90
90
  files:
91
+ - ".github/workflows/ruby.yml"
92
+ - ".github/workflows/rvm.yml"
91
93
  - ".gitignore"
92
94
  - ".rubocop.yml"
93
- - ".travis.yml"
94
95
  - CHANGELOG
95
96
  - Gemfile
96
97
  - LICENSE
@@ -112,7 +113,7 @@ homepage: https://www.chargehound.com
112
113
  licenses:
113
114
  - MIT
114
115
  metadata: {}
115
- post_install_message:
116
+ post_install_message:
116
117
  rdoc_options: []
117
118
  require_paths:
118
119
  - lib
@@ -120,16 +121,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
120
121
  requirements:
121
122
  - - ">="
122
123
  - !ruby/object:Gem::Version
123
- version: 1.9.3
124
+ version: 2.0.0
124
125
  required_rubygems_version: !ruby/object:Gem::Requirement
125
126
  requirements:
126
127
  - - ">="
127
128
  - !ruby/object:Gem::Version
128
129
  version: '0'
129
130
  requirements: []
130
- rubyforge_project:
131
- rubygems_version: 2.6.11
132
- signing_key:
131
+ rubygems_version: 3.1.4
132
+ signing_key:
133
133
  specification_version: 4
134
134
  summary: Ruby bindings for the Chargehound API
135
135
  test_files:
data/.travis.yml DELETED
@@ -1,13 +0,0 @@
1
- language: ruby
2
-
3
- rvm:
4
- - 2.0.0
5
- - 2.1
6
- - 2.2
7
- - 2.3.0
8
- - 2.3.1
9
- - jruby-9.1.5.0
10
-
11
- sudo: false
12
-
13
- script: bundle exec rake test