diff --git a/app/serializers/v1/invoices/billing_period_serializer.rb b/app/serializers/v1/invoices/billing_period_serializer.rb index cc2252fe21d..6ee93aeeacd 100644 --- a/app/serializers/v1/invoices/billing_period_serializer.rb +++ b/app/serializers/v1/invoices/billing_period_serializer.rb @@ -12,6 +12,8 @@ def serialize subscription_to_datetime: model.to_datetime.iso8601, charges_from_datetime: model.charges_from_datetime.iso8601, charges_to_datetime: model.charges_to_datetime.iso8601, + fixed_charges_from_datetime: model.fixed_charges_from_datetime&.iso8601, + fixed_charges_to_datetime: model.fixed_charges_to_datetime&.iso8601, invoicing_reason: model.invoicing_reason } end diff --git a/spec/factories/invoice_subscriptions.rb b/spec/factories/invoice_subscriptions.rb index d39aaa1e82e..3d4a520a6f7 100644 --- a/spec/factories/invoice_subscriptions.rb +++ b/spec/factories/invoice_subscriptions.rb @@ -15,6 +15,8 @@ to_datetime { timestamp.end_of_month } charges_from_datetime { from_datetime - 1.month } charges_to_datetime { to_datetime.end_of_month } + fixed_charges_from_datetime { from_datetime.beginning_of_month } + fixed_charges_to_datetime { to_datetime.end_of_month } end end end diff --git a/spec/serializers/v1/invoices/billing_period_serializer_spec.rb b/spec/serializers/v1/invoices/billing_period_serializer_spec.rb index cdfc48a5e03..4741851e2fc 100644 --- a/spec/serializers/v1/invoices/billing_period_serializer_spec.rb +++ b/spec/serializers/v1/invoices/billing_period_serializer_spec.rb @@ -10,15 +10,27 @@ it "serializes the object" do result = JSON.parse(serializer.to_json) - aggregate_failures do + expect(result["billing_period"]["lago_subscription_id"]).to eq(invoice_subscription.subscription_id) + expect(result["billing_period"]["external_subscription_id"]).to eq(invoice_subscription.subscription.external_id) + expect(result["billing_period"]["lago_plan_id"]).to eq(invoice_subscription.subscription.plan_id) + expect(result["billing_period"]["subscription_from_datetime"]).to eq(invoice_subscription.from_datetime.iso8601) + expect(result["billing_period"]["subscription_to_datetime"]).to eq(invoice_subscription.to_datetime.iso8601) + expect(result["billing_period"]["charges_from_datetime"]).to eq(invoice_subscription.charges_from_datetime.iso8601) + expect(result["billing_period"]["charges_to_datetime"]).to eq(invoice_subscription.charges_to_datetime.iso8601) + expect(result["billing_period"]["fixed_charges_from_datetime"]).to eq(invoice_subscription.fixed_charges_from_datetime.iso8601) + expect(result["billing_period"]["fixed_charges_to_datetime"]).to eq(invoice_subscription.fixed_charges_to_datetime.iso8601) + expect(result["billing_period"]["invoicing_reason"]).to eq(invoice_subscription.invoicing_reason) + end + + context "when legacy invoice subscription without fixed charges boundaries" do + let(:invoice_subscription) { build(:invoice_subscription, :boundaries, fixed_charges_from_datetime: nil, fixed_charges_to_datetime: nil) } + + it "serializes the object without fixed charges boundaries" do + result = JSON.parse(serializer.to_json) + expect(result["billing_period"]["lago_subscription_id"]).to eq(invoice_subscription.subscription_id) - expect(result["billing_period"]["external_subscription_id"]).to eq(invoice_subscription.subscription.external_id) - expect(result["billing_period"]["lago_plan_id"]).to eq(invoice_subscription.subscription.plan_id) - expect(result["billing_period"]["subscription_from_datetime"]).to eq(invoice_subscription.from_datetime.iso8601) - expect(result["billing_period"]["subscription_to_datetime"]).to eq(invoice_subscription.to_datetime.iso8601) - expect(result["billing_period"]["charges_from_datetime"]).to eq(invoice_subscription.charges_from_datetime.iso8601) - expect(result["billing_period"]["charges_to_datetime"]).to eq(invoice_subscription.charges_to_datetime.iso8601) - expect(result["billing_period"]["invoicing_reason"]).to eq(invoice_subscription.invoicing_reason) + expect(result["billing_period"]["fixed_charges_from_datetime"]).to be_nil + expect(result["billing_period"]["fixed_charges_to_datetime"]).to be_nil end end end