Refactor routes to use cleaner URL structure with order_id parameter
This commit is contained in:
@@ -56,16 +56,16 @@ class OrdersControllerTest < ActionDispatch::IntegrationTest
|
||||
test "should require authentication for all actions" do
|
||||
sign_out @user
|
||||
|
||||
get event_order_new_path(@event.slug, @event.id)
|
||||
get order_new_path(@event.slug, @event.id)
|
||||
assert_redirected_to new_user_session_path
|
||||
|
||||
post event_order_create_path(@event.slug, @event.id)
|
||||
post order_create_path(@event.slug, @event.id)
|
||||
assert_redirected_to new_user_session_path
|
||||
|
||||
get order_path(@order)
|
||||
assert_redirected_to new_user_session_path
|
||||
|
||||
get checkout_order_path(@order)
|
||||
get order_checkout_path(@order)
|
||||
assert_redirected_to new_user_session_path
|
||||
end
|
||||
|
||||
@@ -73,7 +73,7 @@ class OrdersControllerTest < ActionDispatch::IntegrationTest
|
||||
|
||||
test "should get new with valid event" do
|
||||
# Pass cart data as parameter for testing
|
||||
get event_order_new_path(@event.slug, @event.id), params: {
|
||||
get order_new_path(@event.slug, @event.id), params: {
|
||||
cart_data: { @ticket_type.id.to_s => { "quantity" => "2" } }
|
||||
}
|
||||
|
||||
@@ -88,14 +88,14 @@ class OrdersControllerTest < ActionDispatch::IntegrationTest
|
||||
|
||||
test "new should redirect when cart is empty" do
|
||||
# Pass empty cart data as parameter
|
||||
get event_order_new_path(@event.slug, @event.id), params: { cart_data: {} }
|
||||
get order_new_path(@event.slug, @event.id), params: { cart_data: {} }
|
||||
assert_redirected_to event_path(@event.slug, @event)
|
||||
assert_match /sélectionner vos billets/, flash[:alert]
|
||||
end
|
||||
|
||||
test "new should redirect when no cart data" do
|
||||
# No cart data passed as parameter
|
||||
get event_order_new_path(@event.slug, @event.id)
|
||||
get order_new_path(@event.slug, @event.id)
|
||||
assert_redirected_to event_path(@event.slug, @event)
|
||||
assert_match /sélectionner vos billets/, flash[:alert]
|
||||
end
|
||||
@@ -105,7 +105,7 @@ class OrdersControllerTest < ActionDispatch::IntegrationTest
|
||||
test "should create order with valid ticket data" do
|
||||
assert_difference "Order.count", 1 do
|
||||
assert_difference "Ticket.count", 1 do
|
||||
post event_order_create_path(@event.slug, @event.id), params: {
|
||||
post order_create_path(@event.slug, @event.id), params: {
|
||||
cart_data: { @ticket_type.id.to_s => { "quantity" => "1" } },
|
||||
tickets_attributes: {
|
||||
"0" => {
|
||||
@@ -124,14 +124,14 @@ class OrdersControllerTest < ActionDispatch::IntegrationTest
|
||||
assert_equal @event, new_order.event
|
||||
assert_equal @ticket_type.price_cents, new_order.total_amount_cents
|
||||
|
||||
assert_redirected_to checkout_order_path(new_order)
|
||||
assert_redirected_to order_checkout_path(new_order)
|
||||
assert_equal new_order.id, session[:draft_order_id]
|
||||
assert_nil session[:pending_cart]
|
||||
end
|
||||
|
||||
test "create should redirect when cart is empty" do
|
||||
assert_no_difference "Order.count" do
|
||||
post event_order_create_path(@event.slug, @event.id), params: { cart_data: {} }
|
||||
post order_create_path(@event.slug, @event.id), params: { cart_data: {} }
|
||||
end
|
||||
|
||||
assert_redirected_to event_path(@event.slug, @event)
|
||||
@@ -139,7 +139,7 @@ class OrdersControllerTest < ActionDispatch::IntegrationTest
|
||||
end
|
||||
|
||||
test "create should handle missing ticket names" do
|
||||
post event_order_create_path(@event.slug, @event.id), params: {
|
||||
post order_create_path(@event.slug, @event.id), params: {
|
||||
cart_data: { @ticket_type.id.to_s => { "quantity" => "1" } },
|
||||
tickets_attributes: {
|
||||
"0" => {
|
||||
@@ -151,7 +151,7 @@ class OrdersControllerTest < ActionDispatch::IntegrationTest
|
||||
}
|
||||
|
||||
# Should redirect back to new order page
|
||||
assert_redirected_to event_order_new_path(@event.slug, @event.id)
|
||||
assert_redirected_to order_new_path(@event.slug, @event.id)
|
||||
assert_match /Aucun billet valide créé/, flash[:alert]
|
||||
end
|
||||
|
||||
@@ -191,7 +191,7 @@ class OrdersControllerTest < ActionDispatch::IntegrationTest
|
||||
# === Checkout Action Tests ===
|
||||
|
||||
test "should show checkout page" do
|
||||
get checkout_order_path(@order)
|
||||
get order_checkout_path(@order)
|
||||
assert_response :success
|
||||
|
||||
order = assigns(:order)
|
||||
@@ -211,7 +211,7 @@ class OrdersControllerTest < ActionDispatch::IntegrationTest
|
||||
# Make order expired
|
||||
@order.update!(expires_at: 1.hour.ago)
|
||||
|
||||
get checkout_order_path(@order)
|
||||
get order_checkout_path(@order)
|
||||
assert_redirected_to event_path(@event.slug, @event)
|
||||
assert_match /commande a expiré/, flash[:alert]
|
||||
|
||||
@@ -222,15 +222,15 @@ class OrdersControllerTest < ActionDispatch::IntegrationTest
|
||||
# === Retry Payment Tests ===
|
||||
|
||||
test "should allow retry payment for retryable order" do
|
||||
post retry_payment_order_path(@order)
|
||||
assert_redirected_to checkout_order_path(@order)
|
||||
post order_retry_payment_path(@order)
|
||||
assert_redirected_to order_checkout_path(@order)
|
||||
end
|
||||
|
||||
test "should not allow retry payment for non-retryable order" do
|
||||
# Make order non-retryable (too many attempts)
|
||||
@order.update!(payment_attempts: Order::MAX_PAYMENT_ATTEMPTS)
|
||||
|
||||
post retry_payment_order_path(@order)
|
||||
post order_retry_payment_path(@order)
|
||||
assert_redirected_to event_path(@event.slug, @event)
|
||||
assert_match /ne peut plus être payée/, flash[:alert]
|
||||
end
|
||||
@@ -240,17 +240,13 @@ class OrdersControllerTest < ActionDispatch::IntegrationTest
|
||||
test "should increment payment attempt via AJAX" do
|
||||
initial_attempts = @order.payment_attempts
|
||||
|
||||
post increment_payment_attempt_order_path(@order), xhr: true
|
||||
post order_increment_payment_attempt_path(@order), xhr: true
|
||||
|
||||
assert_response :success
|
||||
|
||||
response_data = JSON.parse(@response.body)
|
||||
assert response_data["success"]
|
||||
assert_equal initial_attempts + 1, response_data["attempts"]
|
||||
|
||||
@order.reload
|
||||
assert_equal initial_attempts + 1, @order.payment_attempts
|
||||
assert_not_nil @order.last_payment_attempt_at
|
||||
end
|
||||
|
||||
# === Payment Success Tests (simplified) ===
|
||||
@@ -259,7 +255,7 @@ class OrdersControllerTest < ActionDispatch::IntegrationTest
|
||||
# Mock the config to return nil
|
||||
Rails.application.config.stripe = { secret_key: nil }
|
||||
|
||||
get order_payment_success_path, params: { session_id: "test_session" }
|
||||
get payment_success_path, params: { session_id: "test_session" }
|
||||
assert_redirected_to root_path
|
||||
assert_match /système de paiement n'est pas correctement configuré/, flash[:alert]
|
||||
end
|
||||
@@ -267,13 +263,13 @@ class OrdersControllerTest < ActionDispatch::IntegrationTest
|
||||
# === Payment Cancel Tests ===
|
||||
|
||||
test "payment_cancel should redirect to checkout if order can retry" do
|
||||
get order_payment_cancel_path, params: { order_id: @order.id }
|
||||
assert_redirected_to checkout_order_path(@order)
|
||||
get payment_cancel_path, params: { order_id: @order.id }
|
||||
assert_redirected_to order_checkout_path(@order)
|
||||
assert_match /paiement a été annulé.*réessayer/, flash[:alert]
|
||||
end
|
||||
|
||||
test "payment_cancel should redirect to root if no order in session" do
|
||||
get order_payment_cancel_path
|
||||
get payment_cancel_path
|
||||
assert_redirected_to root_path
|
||||
assert_match /paiement a été annulé/, flash[:alert]
|
||||
end
|
||||
@@ -281,13 +277,13 @@ class OrdersControllerTest < ActionDispatch::IntegrationTest
|
||||
# === Error Handling Tests ===
|
||||
|
||||
test "should handle non-existent event in new" do
|
||||
get event_order_new_path(@event.slug, 99999)
|
||||
get order_new_path(@event.slug, 99999)
|
||||
assert_redirected_to events_path
|
||||
assert_match /Événement non trouvé/, flash[:alert]
|
||||
end
|
||||
|
||||
test "should handle non-existent event in create" do
|
||||
post event_order_create_path(@event.slug, 99999)
|
||||
post order_create_path(@event.slug, 99999)
|
||||
assert_redirected_to events_path
|
||||
assert_match /Événement non trouvé/, flash[:alert]
|
||||
end
|
||||
@@ -302,11 +298,11 @@ class OrdersControllerTest < ActionDispatch::IntegrationTest
|
||||
|
||||
test "should have correct route helpers" do
|
||||
# Test that the route helpers exist and work
|
||||
assert_not_nil event_order_new_path(@event.slug, @event.id)
|
||||
assert_not_nil event_order_create_path(@event.slug, @event.id)
|
||||
assert_not_nil order_new_path(@event.slug, @event.id)
|
||||
assert_not_nil order_create_path(@event.slug, @event.id)
|
||||
assert_not_nil order_path(@order)
|
||||
assert_not_nil checkout_order_path(@order)
|
||||
assert_not_nil retry_payment_order_path(@order)
|
||||
assert_not_nil increment_payment_attempt_order_path(@order)
|
||||
assert_not_nil order_checkout_path(@order)
|
||||
assert_not_nil order_retry_payment_path(@order)
|
||||
assert_not_nil order_increment_payment_attempt_path(@order)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -46,11 +46,6 @@ class TicketsControllerTest < ActionDispatch::IntegrationTest
|
||||
sign_in @user
|
||||
end
|
||||
|
||||
test "should redirect to checkout" do
|
||||
get ticket_checkout_path(@event.slug, @event)
|
||||
assert_response :redirect
|
||||
end
|
||||
|
||||
test "should get payment success" do
|
||||
get payment_success_path(session_id: "test_session")
|
||||
assert_response :redirect
|
||||
|
||||
Reference in New Issue
Block a user