feat: Add manual payout system for countries without Stripe Global Payouts

This commit is contained in:
kbe
2025-09-17 08:35:20 +02:00
parent 3c1e17c2af
commit c74140c431
12 changed files with 375 additions and 28 deletions

View File

@@ -41,6 +41,26 @@ class Admin::PayoutsControllerTest < ActionDispatch::IntegrationTest
assert_equal :failed, @payout.reload.status
end
test "mark_as_manually_processed updates payout status" do
sign_in @admin_user
@payout.update(status: :pending)
post mark_as_manually_processed_admin_payout_url(@payout)
assert_redirected_to admin_payouts_path
assert_flash :notice, /marked as manually processed/
assert @payout.reload.completed?
assert @payout.manual_payout?
end
test "mark_as_manually_processed fails for completed payout" do
sign_in @admin_user
@payout.update(status: :completed)
post mark_as_manually_processed_admin_payout_url(@payout)
assert_redirected_to admin_payouts_path
assert_flash :alert, /Cannot mark this payout as manually processed/
end
test "requires admin authentication" do
patch admin_payout_url(@payout)
assert_redirected_to new_user_session_path

View File

@@ -135,6 +135,17 @@ class Promoter::PayoutsControllerTest < ActionDispatch::IntegrationTest
assert_flash :alert, /Event not eligible for payout/
end
test "show renders manual payout details correctly" do
sign_in @user
@user.update(is_professionnal: true)
payout = Payout.create!(user: @user, event: @event, amount_cents: 1000, fee_cents: 100, status: :completed, stripe_payout_id: "MANUAL_abc123")
get promoter_payout_url(payout)
assert_response :success
assert_match "Manual Payout ID", @response.body
assert_match "Manual Transfer", @response.body
end
# Create failure: validation errors
test "create payout fails with validation errors" do
sign_in @user