From 91e7cd4b825547cd76084cad20c0846c9e0042e3 Mon Sep 17 00:00:00 2001 From: Lovro Colic Date: Tue, 19 May 2026 11:04:50 +0200 Subject: [PATCH 1/3] add support for invoice consolidation --- lib/lago/api/resources/subscription.rb | 1 + spec/factories/subscription.rb | 1 + spec/lago/api/resources/subscription_spec.rb | 52 ++++++++++++++++++++ 3 files changed, 54 insertions(+) diff --git a/lib/lago/api/resources/subscription.rb b/lib/lago/api/resources/subscription.rb index fb01e9dc..005dc319 100644 --- a/lib/lago/api/resources/subscription.rb +++ b/lib/lago/api/resources/subscription.rb @@ -212,6 +212,7 @@ def whitelist_params(params) subscription_at: params[:subscription_at], ending_at: params[:ending_at], plan_overrides: params[:plan_overrides], + consolidate_invoice: params[:consolidate_invoice], }.compact payment_method_params = whitelist_payment_method_params(params[:payment_method]) diff --git a/spec/factories/subscription.rb b/spec/factories/subscription.rb index add2616b..853cffb7 100644 --- a/spec/factories/subscription.rb +++ b/spec/factories/subscription.rb @@ -15,5 +15,6 @@ terminated_at { nil } canceled_at { nil } created_at { '2022-05-05T12:27:30Z' } + consolidate_invoice { true } end end diff --git a/spec/lago/api/resources/subscription_spec.rb b/spec/lago/api/resources/subscription_spec.rb index 7f7150be..7b217da3 100644 --- a/spec/lago/api/resources/subscription_spec.rb +++ b/spec/lago/api/resources/subscription_spec.rb @@ -194,6 +194,32 @@ expect { resource.create(params_with_invalid_pm) }.to raise_error Lago::Api::HttpError end end + + context 'when consolidate_invoice is provided' do + let(:params_with_consolidate) { params.merge(consolidate_invoice: false) } + let(:body_with_consolidate) do + { + 'subscription' => params_with_consolidate, + } + end + let(:response_with_consolidate) do + { + 'subscription' => factory_subscription.to_h.merge(consolidate_invoice: false), + }.to_json + end + + before do + stub_request(:post, 'https://api.getlago.com/api/v1/subscriptions') + .with(body: body_with_consolidate) + .to_return(body: response_with_consolidate, status: 200) + end + + it 'forwards consolidate_invoice to the API and returns it' do + subscription = resource.create(params_with_consolidate) + + expect(subscription.consolidate_invoice).to eq(false) + end + end end describe '#delete' do @@ -353,6 +379,32 @@ expect { resource.update(params_with_invalid_pm, '123') }.to raise_error Lago::Api::HttpError end end + + context 'when consolidate_invoice is provided' do + let(:params_with_consolidate) { { consolidate_invoice: false } } + let(:body_with_consolidate) do + { + 'subscription' => params_with_consolidate, + } + end + let(:response_with_consolidate) do + { + 'subscription' => factory_subscription.to_h.merge(consolidate_invoice: false), + }.to_json + end + + before do + stub_request(:put, 'https://api.getlago.com/api/v1/subscriptions/123') + .with(body: body_with_consolidate) + .to_return(body: response_with_consolidate, status: 200) + end + + it 'forwards consolidate_invoice to the API and returns it' do + subscription = resource.update(params_with_consolidate, '123') + + expect(subscription.consolidate_invoice).to eq(false) + end + end end describe '#get' do From 0e8227923dd8cebc670e9c204366ee7df1472d6d Mon Sep 17 00:00:00 2001 From: Lovro Colic Date: Tue, 19 May 2026 11:12:47 +0200 Subject: [PATCH 2/3] fix linter --- spec/lago/api/resources/subscription_spec.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spec/lago/api/resources/subscription_spec.rb b/spec/lago/api/resources/subscription_spec.rb index 7b217da3..013421fc 100644 --- a/spec/lago/api/resources/subscription_spec.rb +++ b/spec/lago/api/resources/subscription_spec.rb @@ -217,7 +217,7 @@ it 'forwards consolidate_invoice to the API and returns it' do subscription = resource.create(params_with_consolidate) - expect(subscription.consolidate_invoice).to eq(false) + expect(subscription.consolidate_invoice).to be(false) end end end @@ -402,7 +402,7 @@ it 'forwards consolidate_invoice to the API and returns it' do subscription = resource.update(params_with_consolidate, '123') - expect(subscription.consolidate_invoice).to eq(false) + expect(subscription.consolidate_invoice).to be(false) end end end From 515af38c7912b563e2fefb13a8b58ae1f4bb3109 Mon Sep 17 00:00:00 2001 From: Lovro Colic Date: Tue, 19 May 2026 11:27:28 +0200 Subject: [PATCH 3/3] fix specs --- spec/lago/api/resources/subscription_spec.rb | 57 ++------------------ 1 file changed, 4 insertions(+), 53 deletions(-) diff --git a/spec/lago/api/resources/subscription_spec.rb b/spec/lago/api/resources/subscription_spec.rb index 013421fc..28cf5de7 100644 --- a/spec/lago/api/resources/subscription_spec.rb +++ b/spec/lago/api/resources/subscription_spec.rb @@ -35,6 +35,7 @@ subscription_at: factory_subscription.subscription_at, billing_time: factory_subscription.billing_time, ending_at: factory_subscription.ending_at, + consolidate_invoice: factory_subscription.consolidate_invoice, plan_overrides: { amount_cents: 1000, minimum_commitment: { @@ -69,6 +70,7 @@ expect(subscription.subscription_at).to eq(factory_subscription.subscription_at) expect(subscription.billing_time).to eq(factory_subscription.billing_time) expect(subscription.ending_at).to eq(factory_subscription.ending_at) + expect(subscription.consolidate_invoice).to eq(factory_subscription.consolidate_invoice) end end @@ -194,32 +196,6 @@ expect { resource.create(params_with_invalid_pm) }.to raise_error Lago::Api::HttpError end end - - context 'when consolidate_invoice is provided' do - let(:params_with_consolidate) { params.merge(consolidate_invoice: false) } - let(:body_with_consolidate) do - { - 'subscription' => params_with_consolidate, - } - end - let(:response_with_consolidate) do - { - 'subscription' => factory_subscription.to_h.merge(consolidate_invoice: false), - }.to_json - end - - before do - stub_request(:post, 'https://api.getlago.com/api/v1/subscriptions') - .with(body: body_with_consolidate) - .to_return(body: response_with_consolidate, status: 200) - end - - it 'forwards consolidate_invoice to the API and returns it' do - subscription = resource.create(params_with_consolidate) - - expect(subscription.consolidate_invoice).to be(false) - end - end end describe '#delete' do @@ -266,7 +242,7 @@ end describe '#update' do - let(:params) { { name: 'new name' } } + let(:params) { { name: 'new name', consolidate_invoice: factory_subscription.consolidate_invoice } } let(:body) do { 'subscription' => params, @@ -287,6 +263,7 @@ expect(subscription.plan_code).to eq(factory_subscription.plan_code) expect(subscription.status).to eq(factory_subscription.status) expect(subscription.external_id).to eq(factory_subscription.external_id) + expect(subscription.consolidate_invoice).to eq(factory_subscription.consolidate_invoice) end end @@ -379,32 +356,6 @@ expect { resource.update(params_with_invalid_pm, '123') }.to raise_error Lago::Api::HttpError end end - - context 'when consolidate_invoice is provided' do - let(:params_with_consolidate) { { consolidate_invoice: false } } - let(:body_with_consolidate) do - { - 'subscription' => params_with_consolidate, - } - end - let(:response_with_consolidate) do - { - 'subscription' => factory_subscription.to_h.merge(consolidate_invoice: false), - }.to_json - end - - before do - stub_request(:put, 'https://api.getlago.com/api/v1/subscriptions/123') - .with(body: body_with_consolidate) - .to_return(body: response_with_consolidate, status: 200) - end - - it 'forwards consolidate_invoice to the API and returns it' do - subscription = resource.update(params_with_consolidate, '123') - - expect(subscription.consolidate_invoice).to be(false) - end - end end describe '#get' do