Ajoute fiche d'identité informatique, catalogue prestataires et schémas draw.io

- Fiche d'identité par organisation (technicien référent, FAI, IP publiques,
  prestataires liés) accessible depuis un nouveau menu.
- Nouveau module Prestataires dédié (catalogue léger réutilisable entre
  communes, avec journal de suivi des échanges) plutôt que de détourner les
  organisations de type "Fournisseur".
- Nouveau menu Infrastructure par organisation avec schémas réseau/fonctionnel
  édités via draw.io embarqué (URL configurable, cf. réglages admin).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
mrKamoo
2026-08-21 15:55:23 +02:00
co-authored by Claude Sonnet 5
parent 74c0b01a2e
commit 3c87ced1e4
28 changed files with 1365 additions and 1 deletions
+75
View File
@@ -0,0 +1,75 @@
<?php
namespace Tests\Feature;
use App\Models\Organization;
use App\Models\User;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Livewire\Livewire;
use Tests\TestCase;
class InfrastructureTest extends TestCase
{
use RefreshDatabase;
public function test_infrastructure_index_page_renders_for_an_authenticated_user(): void
{
$user = User::factory()->create();
$org = Organization::create(['name' => 'Test Commune', 'slug' => 'test-commune', 'org_type' => 'client']);
$response = $this->actingAs($user)->get(route('organizations.infrastructure.index', $org));
$response->assertOk();
$response->assertSee('Infrastructure');
}
public function test_can_create_a_diagram_and_it_opens_in_the_editor(): void
{
$user = User::factory()->create();
$org = Organization::create(['name' => 'Test Commune', 'slug' => 'test-commune', 'org_type' => 'client']);
$this->actingAs($user);
Livewire::test('infrastructure.index', ['organization' => $org])
->set('newDiagramName', 'Schéma réseau - Mairie')
->call('createDiagram')
->assertHasNoErrors();
$this->assertDatabaseHas('documents', [
'organization_id' => $org->id,
'name' => 'Schéma réseau - Mairie',
'type' => 'diagram',
]);
$document = $org->documents()->where('type', 'diagram')->firstOrFail();
$response = $this->get(route('organizations.infrastructure.edit', [$org, $document]));
$response->assertOk();
$response->assertSee('Schéma réseau - Mairie');
}
public function test_saving_a_diagram_creates_a_new_version_only_when_content_changed(): void
{
$user = User::factory()->create();
$org = Organization::create(['name' => 'Test Commune', 'slug' => 'test-commune', 'org_type' => 'client']);
$document = $org->documents()->create([
'name' => 'Schéma test',
'type' => 'diagram',
'content' => '<mxfile>old</mxfile>',
'current_version' => 1,
'created_by' => $user->id,
]);
$document->versions()->create(['version' => 1, 'content' => '<mxfile>old</mxfile>', 'created_by' => $user->id]);
$this->actingAs($user);
Livewire::test('documents.diagram-editor', ['organization' => $org, 'document' => $document])
->call('saveDiagram', '<mxfile>new</mxfile>');
$document->refresh();
$this->assertSame('<mxfile>new</mxfile>', $document->content);
$this->assertSame(2, $document->current_version);
$this->assertCount(2, $document->versions);
}
}