Forum
/
Topics

Probleme de route

Publié le 16 février 2024 par Stephenas30

J'ai créé un back pour mon site de test cependant, pendant le test, cela me retourne toujours un erreur 404. Voici mon controlleur :

1<?php
2 
3namespace App\Http\Controllers;
4 
5use Illuminate\Http\Request;
6use App\Http\Requests\CreateLocationRequest;
7use App\Models\Voiture;
8use App\Models\Location;
9use App\Models\Client;
10 
11class LocationVoitureController extends Controller
12{
13 public function index()
14 {
15 $cars = Voiture::all();
16 return view('cars.index', compact('cars'));
17 }
18 
19 public function creationRental(CreateLocationRequest $request)
20 {
21 dd($request->all());
22 // Validez les données de la requête si nécessaire
23 
24 $rental = new Location();
25 $rental->voiture_id = $request->input('voiture_id');
26 $rental->client_id = $request->input('client_id');
27 $rental->date_depart = $request->input('date_depart');
28 $rental->date_retour = $request->input('date_retour');
29 $rental->lieu_depart = $request->input('lieu_depart');
30 $rental->lieu_depart_detaille = $request->input('lieu_depart_detaille');
31 $rental->lieu_retour = $request->input('lieu_retour');
32 $rental->lieu_retour_detaille = $request->input('lieu_retour_detaille');
33 $rental->hotel = $request->input('hotel');
34 $rental->souhait = $request->input('souhait');
35 $rental->assurance = $request->input('assurance');
36 $rental->payement = $request->input('payement');
37 
38 $rental->save();
39 
40 return response()->json(['message' => 'Location de voiture créée avec succès'], 200);
41 //return redirect()->route('cars.index');
42 }
43 
44 public function showRental($id)
45 {
46 $rental = Location::findOrFail($id);
47 return view('rentals.show', compact('rental'));
48 }
49}

et voici mon route dans api.php :

1<?php
2 
3use Illuminate\Http\Request;
4use Illuminate\Support\Facades\Route;
5use App\Http\Controllers\LocationVoitureController;
6 
7/*
8|--------------------------------------------------------------------------
9| API Routes
10|--------------------------------------------------------------------------
11|
12| Here is where you can register API routes for your application. These
13| routes are loaded by the RouteServiceProvider and all of them will
14| be assigned to the "api" middleware group. Make something great!
15|
16*/
17 
18Route::middleware('auth:sanctum')->get('/user', function (Request $request) {
19 return $request->user();
20});
21 
22Route::post('/location/create', [LocationVoitureController::class, 'creationRental'])->name('location.create');

Voici mon model :

1<?php
2 
3namespace App\Models;
4 
5use Illuminate\Database\Eloquent\Factories\HasFactory;
6use Illuminate\Database\Eloquent\Model;
7 
8class Location extends Model
9{
10 use HasFactory;
11 
12 protected $fillable = ['voiture_id', 'client_id', 'date_depart', 'date_retour', 'lieu_depart', 'lieu_retour', 'assurance', 'payement'];
13 
14 public function voiture()
15 {
16 return $this->belongsTo(Voiture::class);
17 }
18 
19 public function client()
20 {
21 return $this->belongsTo(Client::class);
22 }
23}

et pour terminer voici mon fichier test :

1<?php
2 
3namespace Tests\Feature;
4 
5use Illuminate\Foundation\Testing\RefreshDatabase;
6use Illuminate\Foundation\Testing\WithFaker;
7use Tests\TestCase;
8use App\Http\Requests\CreateLocationRequest;
9use App\Http\Controllers\LocationVoitureController;
10 
11class PostTest extends TestCase
12{
13 use RefreshDatabase;
14 
15 public function testCreateRental()
16 {
17 $this->withoutMiddleware(\App\Http\Middleware\Authenticate::class);
18 // Préparation des données de test
19 $requestData = [
20 'voiture_id' => 18,
21 'client_id' => 18,
22 'date_depart' => '2024-02-15 08:00:00',
23 'date_retour' => '2024-02-20 20:00:00',
24 'lieu_depart' => 'Majunga',
25 'lieu_retour' => 'Tana',
26 'lieu_depart_detaille' => 'Amborovia',
27 'lieu_retour_detaille' => 'Ivato',
28 'hotel' => 'Brazzers',
29 'souhait' => 'Je veux un bisou',
30 'assurance' => 'ABC',
31 'payement' => 'VISA'
32 ];
33 
34 // Exécution de la requête POST
35 $response = $this->post('/location/create', $requestData);
36 
37 // Assertion sur le statut de la réponse
38 $response->assertStatus(200); // Vous pouvez ajuster selon le statut attendu après une redirection
39 }
40}

Quelqu'un peut m'aider?

2 réponses
Mathieu De Gracia, Il y a 2 mois

Hi,

Pour visualiser les routes de ton application, tu peux faire la commande suivante :

1php artisan route:list

Tu vas p'tete y voir une anomalie provoquant ton 404

William Suppo, Il y a 2 mois

Salut,

Les routes dans le fichiers api.php sont préfixées de /api

Essaie de modifier ton test comme ceci :

1$response = $this->post('/api/location/create', $requestData);