49 lines
1.7 KiB
PHP
49 lines
1.7 KiB
PHP
<?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);
|
|
});
|