diff --git a/app/Http/Controllers/Api/Localized/RecipeController.php b/app/Http/Controllers/Api/Localized/RecipeController.php index a135223..de196fc 100644 --- a/app/Http/Controllers/Api/Localized/RecipeController.php +++ b/app/Http/Controllers/Api/Localized/RecipeController.php @@ -6,6 +6,7 @@ use App\Http\Resources\Api\RecipeCollection; use App\Http\Resources\Api\RecipeResource; use App\Models\Recipe; +use App\Support\Api\ContentLocale; use Illuminate\Database\Eloquent\Builder; use Throwable; @@ -23,7 +24,7 @@ public function index(RecipeIndexRequest $request): RecipeCollection ->with(['label', 'tags']) ->when($request->filled('search'), function (Builder $query) use ($request): void { $searchTerm = '%' . $request->string('search') . '%'; - $locale = app()->getLocale(); + $locale = ContentLocale::get(); $query->where(function (Builder $query) use ($searchTerm, $locale): void { $query->whereLike('name->' . $locale, $searchTerm) diff --git a/tests/Feature/Http/Controllers/Api/Localized/RecipeControllerTest.php b/tests/Feature/Http/Controllers/Api/Localized/RecipeControllerTest.php index b13216d..e35fa1c 100644 --- a/tests/Feature/Http/Controllers/Api/Localized/RecipeControllerTest.php +++ b/tests/Feature/Http/Controllers/Api/Localized/RecipeControllerTest.php @@ -114,8 +114,6 @@ public function it_filters_recipes_by_label_id(): void #[Test] public function it_filters_recipes_by_search_term(): void { - // Note: Search uses app locale which is set by ApiLocalizationMiddleware - // The URL prefix de-DE sets the locale to 'de' Recipe::factory()->for($this->country)->create([ 'name' => ['de' => 'Spaghetti Carbonara', 'en' => 'Spaghetti Carbonara'], ]); @@ -131,6 +129,24 @@ public function it_filters_recipes_by_search_term(): void ->assertJsonPath('data.0.name', 'Spaghetti Carbonara'); } + #[Test] + public function it_filters_recipes_by_search_term_using_content_locale(): void + { + Recipe::factory()->for($this->country)->create([ + 'name' => ['de' => 'Hähnchen Teriyaki', 'en' => 'Chicken Teriyaki'], + ]); + + Recipe::factory()->for($this->country)->create([ + 'name' => ['de' => 'Pizza Margherita', 'en' => 'Pizza Margherita'], + ]); + + $response = $this->apiGet('/de-DE/recipes?search=Hähnchen'); + + $response->assertOk() + ->assertJsonCount(1, 'data') + ->assertJsonPath('data.0.name', 'Hähnchen Teriyaki'); + } + #[Test] public function it_filters_recipes_by_difficulty(): void {