/** @vitest-environment jsdom */ import { describe, expect, it } from 'vitest'; import { buildWooCommerceProductUrl } from './productUrl'; describe('buildWooCommerceProductUrl', () => { it('keeps a direct HTTPS merchant PDP and preserves the selected variation attributes', () => { const url = buildWooCommerceProductUrl( 'https://merchant.example/product/linen-dress/?utm_source=private#reviews', '77', { '77': { attribute_pa_color: 'navy', pa_size: 'm' } } ); expect(url).toBe('https://merchant.example/product/linen-dress/?variation_id=77&attribute_pa_color=navy&attribute_pa_size=m'); }); it('preserves functional plain-permalink queries while removing trackers', () => { expect(buildWooCommerceProductUrl('https://merchant.example/?product=shirt&utm_source=private&gclid=secret')).toBe( 'https://merchant.example/?product=shirt' ); }); it('rejects non-HTTPS or malformed URLs', () => { expect(buildWooCommerceProductUrl('http://merchant.example/product/shirt/', '7')).toBeNull(); expect(buildWooCommerceProductUrl('/relative/product', '7')).toBeNull(); }); it('drops malformed variation ids and disallowed attribute keys', () => { expect(buildWooCommerceProductUrl('https://merchant.example/product/shirt/?variation_id=5&attribute_pa_color=red', '7&coupon=x', { '7&coupon=x': { 'not safe!': 'secret' }, })).toBe('https://merchant.example/product/shirt/'); }); });