Refactor routes to use cleaner URL structure with order_id parameter

This commit is contained in:
kbe
2025-09-06 03:12:11 +02:00
parent 01b545c83e
commit d9d43f45e5
11 changed files with 75 additions and 101 deletions

View File

@@ -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

View File

@@ -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