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); });