import { afterEach, describe, expect, it, vi } from 'vitest'; import { insideVK, onVKPath, vkLaunchParams } from './vk'; describe('vk launch detection', () => { afterEach(() => vi.unstubAllGlobals()); it('is not inside VK and not on the VK path without a location (node / SSR)', () => { expect(onVKPath()).toBe(false); expect(insideVK()).toBe(false); expect(vkLaunchParams()).toBe(''); }); it('detects the dedicated /vk/ entry path', () => { vi.stubGlobal('location', { pathname: '/vk/', search: '' }); expect(onVKPath()).toBe(true); vi.stubGlobal('location', { pathname: '/app/', search: '' }); expect(onVKPath()).toBe(false); }); it('returns the signed launch query only when a sign is present', () => { vi.stubGlobal('location', { pathname: '/vk/', search: '?vk_user_id=1&vk_ts=2&sign=abc' }); expect(vkLaunchParams()).toBe('vk_user_id=1&vk_ts=2&sign=abc'); expect(insideVK()).toBe(true); }); it('treats a URL carrying no sign as not a VK launch', () => { vi.stubGlobal('location', { pathname: '/vk/', search: '?utm_source=catalog' }); expect(vkLaunchParams()).toBe(''); expect(insideVK()).toBe(false); }); });