a649a41ce4
В смс дорог каждый символ: вместо длинного хвоста с метками сервер сам подставляет канал и дату рассылки (дд-мм), чтобы разные рассылки не слипались. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
37 lines
1.5 KiB
PHP
37 lines
1.5 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
/**
|
|
* Короткие ссылки для рассылок (spec 2026-07-13 §7): в смс дорог каждый символ,
|
|
* поэтому вместо длинного хвоста с метками даём liderra.ru/s — он сам подставит
|
|
* канал и дату рассылки, и учёт увидит смс отдельно от прямых заходов.
|
|
*/
|
|
test('/s ведёт на лендинг с меткой смс и датой рассылки', function () {
|
|
$r = $this->get('/s');
|
|
|
|
$r->assertRedirect();
|
|
$url = $r->headers->get('Location');
|
|
|
|
expect($url)->toContain('utm_source=sms');
|
|
expect($url)->toContain('utm_medium=sms');
|
|
expect($url)->toContain('utm_campaign='.now()->format('d-m'));
|
|
expect($url)->toStartWith('https://liderra.ru/?');
|
|
});
|
|
|
|
test('/hh ведёт на лендинг с меткой вакансии', function () {
|
|
$url = (string) $this->get('/hh')->headers->get('Location');
|
|
|
|
expect($url)->toContain('utm_source=hh')->toContain('utm_medium=vacancy');
|
|
});
|
|
|
|
test('/tg ведёт на лендинг с меткой телеграма', function () {
|
|
$url = (string) $this->get('/tg')->headers->get('Location');
|
|
|
|
expect($url)->toContain('utm_source=tg');
|
|
});
|
|
|
|
test('переход по короткой ссылке — постоянный редирект (302), не ломает историю браузера', function () {
|
|
$this->get('/s')->assertStatus(302);
|
|
});
|