- Add Payout model with associations to User and Event - Create payout requests for completed events with proper earnings calculation - Exclude refunded tickets from payout calculations - Add promoter dashboard views for managing payouts - Implement admin interface for processing payouts - Integrate with Stripe for actual payment processing - Add comprehensive tests for payout functionality Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
55 lines
1.4 KiB
Ruby
55 lines
1.4 KiB
Ruby
require "test_helper"
|
|
|
|
class Promoter::PayoutsControllerTest < ActionDispatch::IntegrationTest
|
|
setup do
|
|
@user = users(:one)
|
|
@event = events(:concert_event)
|
|
@payout = payouts(:one)
|
|
end
|
|
|
|
test "should get index" do
|
|
sign_in @user
|
|
# Make the user a promoter
|
|
@user.update(is_professionnal: true)
|
|
get promoter_payouts_url
|
|
assert_response :success
|
|
end
|
|
|
|
test "should get show" do
|
|
sign_in @user
|
|
# Make the user a promoter
|
|
@user.update(is_professionnal: true)
|
|
# Create a payout that belongs to the user
|
|
payout = Payout.create!(
|
|
user: @user,
|
|
event: @event,
|
|
amount_cents: 1000,
|
|
fee_cents: 100
|
|
)
|
|
get promoter_payout_url(payout)
|
|
assert_response :success
|
|
end
|
|
|
|
test "should create payout" do
|
|
sign_in @user
|
|
# Make the user a promoter
|
|
@user.update(is_professionnal: true)
|
|
# Make the user the owner of the event
|
|
@event.update(user: @user)
|
|
# Make the event end in the past
|
|
@event.update(end_time: 1.day.ago)
|
|
# Create some earnings for the event
|
|
@event.earnings.create!(
|
|
user: @user,
|
|
order: orders(:paid_order),
|
|
amount_cents: 1000,
|
|
fee_cents: 100,
|
|
status: :pending
|
|
)
|
|
assert_difference('Payout.count', 1) do
|
|
post promoter_payouts_url, params: { event_id: @event.id }
|
|
end
|
|
assert_redirected_to promoter_payout_path(Payout.last)
|
|
end
|
|
end
|