Files
Ressources-relationnel/tests/Feature/SuggestionTest.php
T
Azmog 1c26abfbc6
CI - Intégration continue / quality-and-tests (push) Successful in 3m13s
CD - Déploiement continu / deploy (push) Successful in 3m2s
Revert "feat: ajout du provisionnement des comptes Gitea pour les utilisateurs lors de la soumission de suggestions"
This reverts commit 85572bd258.
2026-07-07 23:59:47 +02:00

96 lines
2.9 KiB
PHP

<?php
namespace Tests\Feature;
use App\Models\Role;
use App\Models\Utilisateur;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Http;
use Tests\TestCase;
class SuggestionTest extends TestCase
{
use RefreshDatabase;
private function utilisateur(): Utilisateur
{
$role = Role::create(['Nom' => 'Utilisateur']);
return Utilisateur::create([
'Pseudo' => 'JeanTest',
'Email' => 'jean.test@example.com',
'MotDePasse' => Hash::make('motdepasse123'),
'ID_Role' => $role->ID_Role,
'Statut' => 'Actif',
]);
}
private function configurerGitea(): void
{
config([
'services.gitea.url' => 'https://gitea.test',
'services.gitea.token' => 'fake-token',
'services.gitea.repo' => 'Groupe1/Ressources-relationnel',
]);
}
public function test_le_formulaire_de_suggestion_exige_une_authentification(): void
{
$this->get('/suggestions/nouveau')->assertRedirect('/login');
}
public function test_une_suggestion_valide_cree_un_ticket_gitea(): void
{
$this->configurerGitea();
Http::fake([
'*/api/v1/repos/*/issues' => Http::response(['number' => 42], 201),
]);
$response = $this->actingAs($this->utilisateur())->post('/suggestions', [
'type' => 'Correction',
'titre' => 'Faute dans une ressource',
'description' => 'Il y a une faute à corriger sur la page des ressources.',
]);
$response->assertRedirect(route('suggestions.create'));
$response->assertSessionHas('success');
Http::assertSent(function ($request) {
return str_contains($request->url(), '/api/v1/repos/Groupe1/Ressources-relationnel/issues')
&& $request['title'] === '[Correction] Faute dans une ressource'
&& str_contains($request['body'], 'JeanTest');
});
}
public function test_une_suggestion_invalide_est_rejetee(): void
{
Http::fake();
$response = $this->actingAs($this->utilisateur())->post('/suggestions', [
'type' => 'Inconnu',
'titre' => 'x',
'description' => 'court',
]);
$response->assertSessionHasErrors(['type', 'titre', 'description']);
Http::assertNothingSent();
}
public function test_un_echec_gitea_affiche_une_erreur(): void
{
$this->configurerGitea();
Http::fake([
'*/api/v1/repos/*/issues' => Http::response(['message' => 'nope'], 500),
]);
$response = $this->actingAs($this->utilisateur())->post('/suggestions', [
'type' => 'Ajout',
'titre' => 'Nouvelle fonctionnalité utile',
'description' => 'Ce serait bien d\'ajouter un filtre par thème.',
]);
$response->assertSessionHasErrors('gitea');
}
}