Skip to content

Commit 9fb894b

Browse files
committed
feat(purchase_order_number): Add the new field to REST API Subscriptions
1 parent 9c8e804 commit 9fb894b

4 files changed

Lines changed: 22 additions & 1 deletion

File tree

app/controllers/api/v1/subscriptions_controller.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,7 @@ def create_params
176176
:ending_at,
177177
:progressive_billing_disabled,
178178
:consolidate_invoice,
179+
:purchase_order_number,
179180
invoice_custom_section: [
180181
:skip_invoice_custom_sections,
181182
{invoice_custom_section_codes: []}
@@ -201,6 +202,7 @@ def update_params
201202
:billing_entity_id,
202203
:billing_entity_code,
203204
:consolidate_invoice,
205+
:purchase_order_number,
204206
activation_rules: [:type, :timeout_hours],
205207
invoice_custom_section: [
206208
:skip_invoice_custom_sections,

app/serializers/v1/subscription_serializer.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ def serialize
3030
on_termination_invoice: model.on_termination_invoice,
3131
progressive_billing_disabled: model.progressive_billing_disabled,
3232
consolidate_invoice: model.consolidate_invoice,
33+
purchase_order_number: model.purchase_order_number,
3334
cancellation_reason: model.cancellation_reason,
3435
activated_at: model.activated_at&.iso8601
3536
}

spec/requests/api/v1/subscriptions_controller_spec.rb

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
billing_time: "anniversary",
3535
subscription_at:,
3636
ending_at:,
37+
purchase_order_number: "PO-123",
3738
invoice_custom_section: {
3839
invoice_custom_section_codes: [section_1.code]
3940
},
@@ -84,6 +85,7 @@
8485
billing_time: "anniversary",
8586
subscription_at: Time.current.iso8601,
8687
ending_at: (Time.current + 1.year).iso8601,
88+
purchase_order_number: "PO-123",
8789
previous_plan_code: nil,
8890
next_plan_code: nil,
8991
downgrade_plan_date: nil
@@ -1703,6 +1705,21 @@ def test_termination(expected_on_termination_credit_note: nil, expected_on_termi
17031705
end
17041706
end
17051707

1708+
context "when updating purchase_order_number" do
1709+
let(:update_params) { {purchase_order_number: "PO-123"} }
1710+
let(:subscription) { create(:subscription, customer:, plan:) }
1711+
1712+
it "updates purchase_order_number" do
1713+
subject
1714+
1715+
expect(response).to have_http_status(:success)
1716+
expect(json[:subscription][:purchase_order_number]).to eq("PO-123")
1717+
1718+
subscription = Subscription.find_by(external_id: json[:subscription][:external_id])
1719+
expect(subscription.purchase_order_number).to eq("PO-123")
1720+
end
1721+
end
1722+
17061723
context "with multuple subscriptions" do
17071724
let(:update_params) do
17081725
{name: "subscription name new"}

spec/serializers/v1/subscription_serializer_spec.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
let(:started_at) { Time.zone.parse("2024-04-23 10:02:03") }
99
let(:ending_at) { Time.zone.parse("2024-06-30") }
1010
let(:subscription) do
11-
create(:subscription, created_at: started_at, started_at:, ending_at:)
11+
create(:subscription, created_at: started_at, started_at:, ending_at:, purchase_order_number: "PO-123")
1212
end
1313

1414
let(:includes) { %i[customer plan entitlements] }
@@ -34,6 +34,7 @@
3434
"status" => subscription.status,
3535
"billing_time" => subscription.billing_time,
3636
"created_at" => "2024-04-23T10:02:03Z",
37+
"purchase_order_number" => "PO-123",
3738
"ending_at" => ending_at.iso8601,
3839
"trial_ended_at" => nil,
3940
"started_at" => "2024-04-23T10:02:03.000Z",

0 commit comments

Comments
 (0)