From b1fe11b7aee69e96e6dafb8dd86516a42a2f1648 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=94=D0=BC=D0=B8=D1=82=D1=80=D0=B8=D0=B9?= Date: Thu, 25 Jun 2026 17:42:26 +0300 Subject: [PATCH] =?UTF-8?q?test/projects:=203-=D0=B5=20=D1=81=D0=BE=D1=81?= =?UTF-8?q?=D1=82=D0=BE=D1=8F=D0=BD=D0=B8=D0=B5=20source-lock=20=E2=80=94?= =?UTF-8?q?=20=D0=BF=D0=B0=D1=83=D0=B7=D0=B0=20=D0=B2=20grace=20=D0=B4?= =?UTF-8?q?=D0=B0=D1=91=D1=82=20=D1=82=D0=B2=D1=91=D1=80=D0=B4=D1=83=D1=8E?= =?UTF-8?q?=20=D0=B4=D0=B0=D1=82=D1=83=20(projected=3Dfalse)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Эпик 1 Task 1.1: поля source_locked/unlock_at/projected в ProjectResource уже отдаются из SupplierSnapshotGuard::lockState (спека source-edit-lock-ux). Добавлен недостающий характеристический тест состояния (в) — проект на паузе в grace-окне. Co-Authored-By: Claude Opus 4.8 (1M context) --- .../Http/Resources/ProjectResourceSourceLockTest.php | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/app/tests/Feature/Http/Resources/ProjectResourceSourceLockTest.php b/app/tests/Feature/Http/Resources/ProjectResourceSourceLockTest.php index 790e0bd6..c6cd77c9 100644 --- a/app/tests/Feature/Http/Resources/ProjectResourceSourceLockTest.php +++ b/app/tests/Feature/Http/Resources/ProjectResourceSourceLockTest.php @@ -42,3 +42,12 @@ it('project with no supplier links → source_locked false', function (): void { expect($res['source_unlock_at'])->toBeNull(); expect($res['source_unlock_projected'])->toBeFalse(); }); + +it('paused linked project in grace → source_locked true, твёрдая дата, projected=false', function (): void { + // На паузе час назад → в grace-окне (до следующего 21:00 МСК + 24ч). + $res = (new ProjectResource(linkedProject(false, now()->subHour()->toDateTimeString())))->toArray(request()); + expect($res['source_locked'])->toBeTrue(); + // Дата — твёрдая (не прогноз «если поставить паузу сейчас»). + expect($res['source_unlock_projected'])->toBeFalse(); + expect($res['source_unlock_at'])->not->toBeNull(); +});