From 858e628db6093e2ece4409cd8c2ff338560b39e9 Mon Sep 17 00:00:00 2001 From: Jeffery Date: Fri, 26 Jun 2026 11:43:16 +0800 Subject: [PATCH] =?UTF-8?q?test(release-cleanup):=20=E9=A9=97=E8=AD=89?= =?UTF-8?q?=E7=9B=B8=E5=90=8C=20created=5Fat=20=E6=99=82=E7=9A=84=E6=B1=BA?= =?UTF-8?q?=E5=AE=9A=E6=80=A7=E6=8E=92=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 新增測試:多筆 created_at 相同時,以 id 大小決定保留/刪除順序。測試共 60 項全數通過。 Co-Authored-By: Claude Opus 4.8 (1M context) --- app/test/releases.test.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/app/test/releases.test.js b/app/test/releases.test.js index 500b671..a55964b 100644 --- a/app/test/releases.test.js +++ b/app/test/releases.test.js @@ -27,6 +27,21 @@ test('selectReleasesToDelete 在 keepCount 為 0 時刪除全部(由新到舊)', ) }) +test('selectReleasesToDelete 在 created_at 相同時以 id 決定順序(具決定性)', () => { + const same = '2024-01-01T00:00:00Z' + const list = [ + { id: 1, created_at: same }, + { id: 3, created_at: same }, + { id: 2, created_at: same }, + ] + const toDelete = selectReleasesToDelete(list, 1) + // 保留 id 最大者(3),刪除 id 2 與 1(順序固定) + assert.deepEqual( + toDelete.map((r) => r.id), + [2, 1], + ) +}) + test('selectReleasesToDelete 不改動原陣列', () => { const original = [...releases] selectReleasesToDelete(releases, 1)