feat: Implement promoter payout system for event revenue processing
- 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>
This commit is contained in:
@@ -1,18 +1,54 @@
|
||||
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
|
||||
get promoter_payouts_index_url
|
||||
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
|
||||
get promoter_payouts_show_url
|
||||
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 get create" do
|
||||
get promoter_payouts_create_url
|
||||
assert_response :success
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user