SearchMetadataResponseTest.php 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. <?php
  2. namespace Webkul\BagistoApi\Tests\Unit\Http\Middleware;
  3. use Illuminate\Http\Request;
  4. use Illuminate\Http\JsonResponse;
  5. use Tests\TestCase;
  6. use Webkul\BagistoApi\Http\Middleware\SearchMetadataResponse;
  7. class SearchMetadataResponseTest extends TestCase
  8. {
  9. public function test_it_adds_search_metadata_to_rest_response_meta(): void
  10. {
  11. $request = Request::create('/api/shop/products', 'GET');
  12. $request->attributes->set('bagistoapi.search_metadata', $this->metadata());
  13. $response = (new SearchMetadataResponse())->handle(
  14. $request,
  15. fn () => response()->json(['member' => []])
  16. );
  17. $this->assertInstanceOf(JsonResponse::class, $response);
  18. $this->assertSame($this->metadata(), $response->getData(true)['meta']['searchMetadata']);
  19. }
  20. public function test_it_adds_search_metadata_to_graphql_extensions(): void
  21. {
  22. $request = Request::create('/api/graphql', 'POST');
  23. $request->attributes->set('bagistoapi.search_metadata', $this->metadata());
  24. $response = (new SearchMetadataResponse())->handle(
  25. $request,
  26. fn () => response()->json(['data' => ['products' => []]])
  27. );
  28. $this->assertInstanceOf(JsonResponse::class, $response);
  29. $this->assertSame($this->metadata(), $response->getData(true)['extensions']['searchMetadata']);
  30. }
  31. private function metadata(): array
  32. {
  33. return [
  34. 'originalQuery' => 'readyy',
  35. 'effectiveQuery' => 'ready',
  36. 'resultMessage' => 'These are results for: ready',
  37. 'searchInsteadMessage' => 'Search instead for readyy',
  38. ];
  39. }
  40. }