| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- <?php
- namespace Webkul\BagistoApi\Tests\Unit\Services;
- use Illuminate\Http\Request;
- use Mockery;
- use Tests\TestCase;
- use Webkul\Marketing\Contracts\SearchLog;
- use Webkul\Marketing\Repositories\SearchLogRepository;
- use Webkul\Marketing\Services\SearchLogService;
- class SearchLogServiceTest extends TestCase
- {
- public function test_it_records_normalized_search_details_and_request_ip(): void
- {
- $repository = Mockery::mock(SearchLogRepository::class);
- $searchLog = Mockery::mock(SearchLog::class);
- $request = Request::create(
- '/api/shop/products?query=readyy&suggest=1',
- 'GET',
- server: ['REMOTE_ADDR' => '203.0.113.10']
- );
- $repository->shouldReceive('create')
- ->once()
- ->with([
- 'search_text' => 'readyy',
- 'query_text' => 'ready',
- 'results' => 12,
- 'ip_address' => '203.0.113.10',
- ])
- ->andReturn($searchLog);
- $result = (new SearchLogService($repository))->record(
- ' readyy ',
- ' ready ',
- 12,
- $request
- );
- $this->assertSame($searchLog, $result);
- }
- public function test_it_clamps_negative_result_counts_to_zero(): void
- {
- $repository = Mockery::mock(SearchLogRepository::class);
- $searchLog = Mockery::mock(SearchLog::class);
- $repository->shouldReceive('create')
- ->once()
- ->with(Mockery::on(fn (array $data) => $data['results'] === 0))
- ->andReturn($searchLog);
- (new SearchLogService($repository))->record(
- 'missing',
- 'missing',
- -1,
- Request::create('/')
- );
- }
- public function test_it_only_records_when_suggest_is_enabled(): void
- {
- $repository = Mockery::mock(SearchLogRepository::class);
- $searchLog = Mockery::mock(SearchLog::class);
- $service = new SearchLogService($repository);
- $repository->shouldNotReceive('create');
- $this->assertNull($service->recordWhenSuggested(
- false,
- 'readyy',
- 'ready',
- 12,
- Request::create('/')
- ));
- $repository = Mockery::mock(SearchLogRepository::class);
- $repository->shouldReceive('create')->once()->andReturn($searchLog);
- $this->assertSame(
- $searchLog,
- (new SearchLogService($repository))->recordWhenSuggested(
- '1',
- 'readyy',
- 'ready',
- 12,
- Request::create('/')
- )
- );
- }
- }
|