Skip to content

Commit df448a0

Browse files
authored
Merge pull request #360 from getlago/feat/payment-gated-subscription-activation
feat(subscriptions): add activation_rules to subscription params
2 parents 791e306 + 01e1849 commit df448a0

2 files changed

Lines changed: 40 additions & 0 deletions

File tree

lib/lago/api/resources/subscription.rb

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -222,6 +222,9 @@ def whitelist_params(params)
222222
invoice_custom_section = whitelist_invoice_custom_section_params(params[:invoice_custom_section])
223223
result[:invoice_custom_section] = invoice_custom_section if invoice_custom_section
224224

225+
activation_rules = whitelist_activation_rules_params(params[:activation_rules])
226+
result[:activation_rules] = activation_rules if activation_rules
227+
225228
{ root_name => result }
226229
end
227230

@@ -288,6 +291,12 @@ def whitelist_payment_method_params(payment_method_param)
288291
payment_method_param&.slice(:payment_method_type, :payment_method_id)
289292
end
290293

294+
def whitelist_activation_rules_params(activation_rules_param)
295+
activation_rules_param&.map do |rule|
296+
(rule || {}).slice(:type, :timeout_hours)
297+
end
298+
end
299+
291300
def whitelist_invoice_custom_section_params(invoice_custom_section_param)
292301
invoice_custom_section_param&.slice(:skip_invoice_custom_sections, :invoice_custom_section_codes)
293302
end

spec/lago/api/resources/subscription_spec.rb

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,37 @@
164164
end
165165
end
166166

167+
context 'when activation_rules is provided' do
168+
let(:params_with_activation_rules) do
169+
params.merge(
170+
activation_rules: [
171+
{ type: 'payment', timeout_hours: 48 },
172+
],
173+
)
174+
end
175+
let(:body_with_activation_rules) do
176+
{
177+
'subscription' => params.merge(
178+
activation_rules: [
179+
{ type: 'payment', timeout_hours: 48 },
180+
],
181+
),
182+
}
183+
end
184+
185+
before do
186+
stub_request(:post, 'https://api.getlago.com/api/v1/subscriptions')
187+
.with(body: body_with_activation_rules)
188+
.to_return(body: response, status: 200)
189+
end
190+
191+
it 'returns subscription' do
192+
subscription = resource.create(params_with_activation_rules)
193+
194+
expect(subscription.external_customer_id).to eq(factory_subscription.external_customer_id)
195+
end
196+
end
197+
167198
context 'when payment_method_id is invalid' do
168199
let(:params_with_invalid_pm) do
169200
params.merge(

0 commit comments

Comments
 (0)