diff --git a/app/controllers/settings/payments_controller.rb b/app/controllers/settings/payments_controller.rb index 7a5f3dd53..e94463311 100644 --- a/app/controllers/settings/payments_controller.rb +++ b/app/controllers/settings/payments_controller.rb @@ -5,7 +5,7 @@ class Settings::PaymentsController < ApplicationController def show @family = Current.family - @one_time_contribution_url = stripe&.payment_link_url(payment_link_id:) + @one_time_contribution_url = stripe&.payment_link_url(payment_link_id:) if payment_link_id.present? end private diff --git a/test/controllers/settings/payments_controller_test.rb b/test/controllers/settings/payments_controller_test.rb index 2c45c31a9..00fa866a5 100644 --- a/test/controllers/settings/payments_controller_test.rb +++ b/test/controllers/settings/payments_controller_test.rb @@ -49,4 +49,19 @@ class Settings::PaymentsControllerTest < ActionDispatch::IntegrationTest ) assert_select "p", text: I18n.t("views.settings.payments.show.payment_via_stripe") end + + test "shows payment settings without contribution link when payment link id is missing" do + @family.update!(stripe_customer_id: "cus_test123") + ENV.stubs(:[]).with("STRIPE_PAYMENT_LINK_ID").returns(nil) + Provider::Registry.expects(:get_provider).with(:stripe).never + + get settings_payment_path + assert_response :success + assert_select( + "a", + text: I18n.t("views.settings.payments.show.one_time_contribution_link_text"), + count: 0 + ) + assert_select "p", text: I18n.t("views.settings.payments.show.payment_via_stripe") + end end