| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- <?php
- namespace Tests\Unit\Services;
- use App\Services\NavigationContextService;
- use Illuminate\Http\Request;
- use Tests\TestCase;
- class NavigationContextServiceTest extends TestCase
- {
- public function test_builds_back_navigation_stack_from_get_requests(): void
- {
- session()->start();
- $service = app(NavigationContextService::class);
- $indexRequest = Request::create('https://crm.test/reclamations?filters[comment]=abc', 'GET');
- $showRequest = Request::create('https://crm.test/reclamations/show/10', 'GET');
- $token = $service->getOrCreateToken($indexRequest);
- $service->rememberCurrentPage($indexRequest, $token);
- $service->rememberCurrentPage($showRequest, $token);
- $backUrl = $service->backUrl($showRequest, $token, 'https://crm.test/reclamations');
- $parentUrl = $service->parentUrl($token, 'https://crm.test/reclamations');
- $this->assertSame('https://crm.test/reclamations?filters%5Bcomment%5D=abc', $backUrl);
- $this->assertSame('https://crm.test/reclamations?filters%5Bcomment%5D=abc', $parentUrl);
- }
- public function test_remember_current_page_moves_duplicate_url_to_stack_end_without_duplication(): void
- {
- session()->start();
- $service = app(NavigationContextService::class);
- $indexRequest = Request::create('https://crm.test/catalog?page=2', 'GET');
- $showRequest = Request::create('https://crm.test/catalog/15?nav=test-token', 'GET');
- $token = $service->getOrCreateToken($indexRequest);
- $service->rememberCurrentPage($indexRequest, $token);
- $service->rememberCurrentPage($showRequest, $token);
- $service->rememberCurrentPage($indexRequest, $token);
- $contexts = session('navigation');
- $stack = $contexts[$token]['stack'] ?? [];
- $this->assertSame([
- 'https://crm.test/catalog/15',
- 'https://crm.test/catalog?page=2',
- ], $stack);
- }
- public function test_parent_url_returns_fallback_when_stack_has_single_entry(): void
- {
- session()->start();
- $service = app(NavigationContextService::class);
- $request = Request::create('https://crm.test/product_sku/55', 'GET');
- $token = $service->getOrCreateToken($request);
- $service->rememberCurrentPage($request, $token);
- $this->assertSame('https://crm.test/product_sku', $service->parentUrl($token, 'https://crm.test/product_sku'));
- }
- }
|