package router import ( "testing" "github.com/stretchr/testify/assert" "apskel-pos-be/config" "apskel-pos-be/internal/middleware" ) // Gin panics at startup when two routes disagree on a path parameter's name at the // same position (say /outlets/:id/x next to /outlets/:outlet_id/y). Registering every // route here catches that in a test instead of on deploy. Handlers are nil: nothing is // served, only registered. func TestAllRoutesRegister(t *testing.T) { r := &Router{ config: &config.Config{}, authMiddleware: middleware.NewAuthMiddleware(nil), customerAuthMiddleware: middleware.NewCustomerAuthMiddleware("test"), } engine := r.Init() registered := map[string]bool{} for _, route := range engine.Routes() { registered[route.Method+" "+route.Path] = true } for _, want := range []string{ "GET /api/v1/customer/wallet", "GET /api/v1/customer/wallet/transactions", "GET /api/v1/marketing/customers/:id/wallet", "POST /api/v1/marketing/customers/:id/wallet/adjust", "GET /api/v1/outlets/:outlet_id/loyalty-settings", "PUT /api/v1/outlets/:outlet_id/loyalty-settings", "GET /api/v1/customer/pin/status", "POST /api/v1/customer/pin/otp", "POST /api/v1/customer/pin", "PUT /api/v1/customer/pin", "POST /api/v1/customer/pin/reset", "DELETE /api/v1/marketing/customers/:id/pin", "GET /api/v1/marketing/customers/:id/security-events", } { assert.True(t, registered[want], want) } }