stripe-rails 1.4.1 → 1.4.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Changelog.md +4 -0
- data/lib/stripe/plans.rb +21 -4
- data/lib/stripe/rails/version.rb +1 -1
- data/test/events_controller_spec.rb +25 -0
- data/test/plan_builder_spec.rb +74 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cc77c2742f14d5d7042f2a3ed06af604144c2d956e0fd5a627f45c01e82a9461
|
4
|
+
data.tar.gz: 570149b8d68d0429d5257e45099739ba9da0c52fe1c5432251207e98edc2f9e8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f5eb46629a7af4564ce45f3bb4f219f93413c88bc46773b2546fb8032d40441c164d62ac207e868ac2efb46622df0cb1a1256e6b9915bd9cfd3675e6d88d8a1b
|
7
|
+
data.tar.gz: f865412f3696550203443d037b26fb8472a818049014622b67391b7565c0fe97116391129378734cf7e422c110b0c8a740d1c75e913cf229b203a3315e6647c0
|
data/Changelog.md
CHANGED
data/lib/stripe/plans.rb
CHANGED
@@ -3,15 +3,21 @@ module Stripe
|
|
3
3
|
include ConfigurationBuilder
|
4
4
|
|
5
5
|
configuration_for :plan do
|
6
|
-
attr_accessor :
|
6
|
+
attr_accessor :active,
|
7
|
+
:aggregate_usage,
|
7
8
|
:amount,
|
9
|
+
:billing_scheme,
|
10
|
+
:currency,
|
8
11
|
:interval,
|
9
12
|
:interval_count,
|
10
|
-
:trial_period_days,
|
11
|
-
:currency,
|
12
13
|
:metadata,
|
14
|
+
:name,
|
15
|
+
:nickname,
|
16
|
+
:product_id,
|
13
17
|
:statement_descriptor,
|
14
|
-
:
|
18
|
+
:tiers_mode,
|
19
|
+
:trial_period_days,
|
20
|
+
:usage_type
|
15
21
|
|
16
22
|
validates_presence_of :id, :amount, :currency
|
17
23
|
|
@@ -21,7 +27,14 @@ module Stripe
|
|
21
27
|
|
22
28
|
validates :statement_descriptor, :length => { :maximum => 22 }
|
23
29
|
|
30
|
+
validates :active, inclusion: { in: [true, false] }, allow_nil: true
|
31
|
+
validates :usage_type, inclusion: { in: %w{ metered licensed } }, allow_nil: true
|
32
|
+
validates :billing_scheme, inclusion: { in: %w{ per_unit tiered } }, allow_nil: true
|
33
|
+
validates :aggregate_usage, inclusion: { in: %w{ sum last_during_period last_ever max } }, allow_nil: true
|
34
|
+
validates :tiers_mode, inclusion: { in: %w{ graduated volume } }, allow_nil: true
|
35
|
+
|
24
36
|
validate :name_or_product_id
|
37
|
+
validate :aggregate_usage_must_be_metered, if: ->(p) { p.aggregate_usage.present? }
|
25
38
|
|
26
39
|
def initialize(*args)
|
27
40
|
super(*args)
|
@@ -31,6 +44,10 @@ module Stripe
|
|
31
44
|
end
|
32
45
|
|
33
46
|
private
|
47
|
+
def aggregate_usage_must_be_metered
|
48
|
+
errors.add(:aggregate_usage, 'usage_type must be metered') unless (usage_type == 'metered')
|
49
|
+
end
|
50
|
+
|
34
51
|
def name_or_product_id
|
35
52
|
errors.add(:base, 'must have a product_id or a name') unless (@product_id.present? ^ @name.present?)
|
36
53
|
end
|
data/lib/stripe/rails/version.rb
CHANGED
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Stripe::EventsController do
|
4
|
+
parallelize_me!
|
5
|
+
include Rack::Test::Methods
|
6
|
+
|
7
|
+
let(:app) { Rails.application }
|
8
|
+
before do
|
9
|
+
header 'Accept', 'application/json'
|
10
|
+
header 'Content-Type', 'application/json'
|
11
|
+
end
|
12
|
+
|
13
|
+
describe 'the events interface' do
|
14
|
+
let(:params) {
|
15
|
+
{
|
16
|
+
id: 'evt_00000000000000',
|
17
|
+
type: 'customer.updated',
|
18
|
+
data: {object: 'customer'},
|
19
|
+
}
|
20
|
+
}
|
21
|
+
subject { post '/stripe/events', params.to_json }
|
22
|
+
|
23
|
+
it { subject.must_be :ok? }
|
24
|
+
end
|
25
|
+
end
|
data/test/plan_builder_spec.rb
CHANGED
@@ -11,6 +11,12 @@ describe 'building plans' do
|
|
11
11
|
plan.trial_period_days = 30
|
12
12
|
plan.metadata = {:number_of_awesome_things => 5}
|
13
13
|
plan.statement_descriptor = 'Acme Primo'
|
14
|
+
plan.active = true
|
15
|
+
plan.nickname = 'primo'
|
16
|
+
plan.usage_type = 'metered'
|
17
|
+
plan.billing_scheme = 'per_unit'
|
18
|
+
plan.aggregate_usage = 'sum'
|
19
|
+
plan.tiers_mode = 'graduated'
|
14
20
|
end
|
15
21
|
end
|
16
22
|
|
@@ -101,6 +107,74 @@ describe 'building plans' do
|
|
101
107
|
}.must_raise Stripe::InvalidConfigurationError
|
102
108
|
end
|
103
109
|
|
110
|
+
it 'denies invalid values for active' do
|
111
|
+
lambda {
|
112
|
+
Stripe.plan :broken do |plan|
|
113
|
+
plan.name = 'Acme as a service'
|
114
|
+
plan.amount = 999
|
115
|
+
plan.interval = 'month'
|
116
|
+
plan.active = 'whatever'
|
117
|
+
end
|
118
|
+
}.must_raise Stripe::InvalidConfigurationError
|
119
|
+
end
|
120
|
+
|
121
|
+
it 'denies invalid values for usage_type' do
|
122
|
+
lambda {
|
123
|
+
Stripe.plan :broken do |plan|
|
124
|
+
plan.name = 'Acme as a service'
|
125
|
+
plan.amount = 999
|
126
|
+
plan.interval = 'month'
|
127
|
+
plan.usage_type = 'whatever'
|
128
|
+
end
|
129
|
+
}.must_raise Stripe::InvalidConfigurationError
|
130
|
+
end
|
131
|
+
|
132
|
+
it 'denies invalid values for aggregate_usage' do
|
133
|
+
lambda {
|
134
|
+
Stripe.plan :broken do |plan|
|
135
|
+
plan.name = 'Acme as a service'
|
136
|
+
plan.amount = 999
|
137
|
+
plan.interval = 'month'
|
138
|
+
plan.aggregate_usage = 'whatever'
|
139
|
+
end
|
140
|
+
}.must_raise Stripe::InvalidConfigurationError
|
141
|
+
end
|
142
|
+
|
143
|
+
it 'denies aggregate_usage if usage type is liecensed' do
|
144
|
+
lambda {
|
145
|
+
Stripe.plan :broken do |plan|
|
146
|
+
plan.name = 'Acme as a service'
|
147
|
+
plan.amount = 999
|
148
|
+
plan.interval = 'month'
|
149
|
+
plan.usage_type = 'licensed'
|
150
|
+
plan.aggregate_usage = 'sum'
|
151
|
+
end
|
152
|
+
}.must_raise Stripe::InvalidConfigurationError
|
153
|
+
end
|
154
|
+
|
155
|
+
|
156
|
+
it 'denies invalid values for billing_scheme' do
|
157
|
+
lambda {
|
158
|
+
Stripe.plan :broken do |plan|
|
159
|
+
plan.name = 'Acme as a service'
|
160
|
+
plan.amount = 999
|
161
|
+
plan.interval = 'month'
|
162
|
+
plan.billing_scheme = 'whatever'
|
163
|
+
end
|
164
|
+
}.must_raise Stripe::InvalidConfigurationError
|
165
|
+
end
|
166
|
+
|
167
|
+
it 'denies invalid values for tiers_mode' do
|
168
|
+
lambda {
|
169
|
+
Stripe.plan :broken do |plan|
|
170
|
+
plan.name = 'Acme as a service'
|
171
|
+
plan.amount = 999
|
172
|
+
plan.interval = 'month'
|
173
|
+
plan.tiers_mode = 'whatever'
|
174
|
+
end
|
175
|
+
}.must_raise Stripe::InvalidConfigurationError
|
176
|
+
end
|
177
|
+
|
104
178
|
describe 'name and product id validation' do
|
105
179
|
it 'should be valid when using just the product id' do
|
106
180
|
Stripe.plan :prodded do |plan|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: stripe-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.4.
|
4
|
+
version: 1.4.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Charles Lowell
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2018-09-
|
13
|
+
date: 2018-09-06 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rails
|
@@ -142,6 +142,7 @@ files:
|
|
142
142
|
- test/dummy_apis_controller_spec.rb
|
143
143
|
- test/dummy_stripes_controller_spec.rb
|
144
144
|
- test/event.json
|
145
|
+
- test/events_controller_spec.rb
|
145
146
|
- test/fixtures/stripe_plans.json
|
146
147
|
- test/fixtures/stripe_plans_headers.json
|
147
148
|
- test/fixtures/stripe_plans_headers_2017.json
|
@@ -226,6 +227,7 @@ test_files:
|
|
226
227
|
- test/dummy_apis_controller_spec.rb
|
227
228
|
- test/dummy_stripes_controller_spec.rb
|
228
229
|
- test/event.json
|
230
|
+
- test/events_controller_spec.rb
|
229
231
|
- test/fixtures/stripe_plans.json
|
230
232
|
- test/fixtures/stripe_plans_headers.json
|
231
233
|
- test/fixtures/stripe_plans_headers_2017.json
|