37a8a5c17f
FN-3: онбординг-confirm не ставил users.email_verified_at — поле вне fillable, mass-assign его гасил. RegistrationService::confirm теперь forceFill is_active + email_verified_at. TDD ConfirmSetsEmailVerifiedAtTest. FN-2: миграция 2026_06_19_130000 дропнула таблицу reminders, но забыла ALTER COLUMN notification_preferences SET DEFAULT — реальный DB-дефолт оставался с мёртвым ключом reminder, расходясь с каноном schema.sql v8.45. Новая миграция 2026_06_22_120000 метаданные-only выравнивает дефолт под канон. squawk 0 issues, применено dev+testing, проверено psql. CHANGELOG v8.50 + шапка schema.sql. TDD NotifPrefsDefaultNoReminderTest. FN-1 переоценён как не-баг кода: resolvePlatforms даёт B2+B3 корректно, B3-miss — supplier-side Doubles, джоба сама ретраит. Зафиксировано в отчёте приёмки. Прод не трогался. Накат — позже вместе с остальным. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
21 lines
926 B
PHP
21 lines
926 B
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
use Illuminate\Support\Facades\DB;
|
|
|
|
// FN-2 (приёмка 22.06.2026): DEFAULT колонки users.notification_preferences содержал
|
|
// мёртвый ключ "reminder" (фича «Напоминания» снята в v8.45, но миграция
|
|
// drop_reminders_table забыла поправить дефолт). Контракт: дефолт без "reminder".
|
|
test('DEFAULT users.notification_preferences не содержит мёртвый ключ reminder', function () {
|
|
$def = DB::selectOne(
|
|
"SELECT column_default FROM information_schema.columns
|
|
WHERE table_name = 'users' AND column_name = 'notification_preferences'"
|
|
);
|
|
|
|
expect($def)->not->toBeNull();
|
|
expect($def->column_default)->not->toContain('reminder');
|
|
// sanity: канон-события на месте
|
|
expect($def->column_default)->toContain('new_lead');
|
|
});
|