mandant-crm/backend/tests/Feature/Modules/Search/SearchTest.php

50 lines
1.7 KiB
PHP
Raw Normal View History

<?php
use App\Models\User;
use App\Modules\Client\Models\Client;
use Illuminate\Foundation\Testing\RefreshDatabase;
uses(RefreshDatabase::class);
it('returns clients matching name', function () {
$user = User::factory()->create(['role' => 'staff']);
Client::factory()->create(['name' => 'Müller GmbH', 'client_number' => 'K001']);
Client::factory()->create(['name' => 'Schmidt AG', 'client_number' => 'K002']);
$response = $this->actingAs($user)->getJson('/api/search?q=Müller');
$response->assertStatus(200)
->assertJsonCount(1, 'data')
->assertJsonPath('data.0.name', 'Müller GmbH');
});
it('returns clients matching client_number', function () {
$user = User::factory()->create(['role' => 'staff']);
Client::factory()->create(['name' => 'Alpha GmbH', 'client_number' => 'K999']);
Client::factory()->create(['name' => 'Beta GmbH', 'client_number' => 'K001']);
$response = $this->actingAs($user)->getJson('/api/search?q=K999');
$response->assertStatus(200)
->assertJsonCount(1, 'data')
->assertJsonPath('data.0.client_number', 'K999');
});
it('returns empty array for no match', function () {
$user = User::factory()->create(['role' => 'staff']);
Client::factory()->create(['name' => 'Alpha GmbH', 'client_number' => 'K001']);
$response = $this->actingAs($user)->getJson('/api/search?q=ZZZ');
$response->assertStatus(200)->assertJsonCount(0, 'data');
});
it('requires auth', function () {
$this->getJson('/api/search?q=test')->assertStatus(401);
});
it('requires q parameter', function () {
$user = User::factory()->create(['role' => 'staff']);
$this->actingAs($user)->getJson('/api/search')->assertStatus(422);
});