test(release-cleanup): 新增 validate/releases/tags/gitea-client 單元測試
以 node:test 內建測試器涵蓋純函式(isEmptyOrNull/requireValue/requireInteger、 selectReleasesToDelete、categorizeTags)與 GiteaClient 分頁/刪除邏輯,共 19 項測試。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
b1aa8730a2
commit
15ffa4ffb6
@@ -0,0 +1,34 @@
|
||||
import { test } from 'node:test'
|
||||
import assert from 'node:assert/strict'
|
||||
import { selectReleasesToDelete } from '../releases.js'
|
||||
|
||||
const releases = [
|
||||
{ id: 1, tag_name: 'v1.0.0', created_at: '2024-01-01T00:00:00Z' },
|
||||
{ id: 3, tag_name: 'v3.0.0', created_at: '2024-03-01T00:00:00Z' },
|
||||
{ id: 2, tag_name: 'v2.0.0', created_at: '2024-02-01T00:00:00Z' },
|
||||
]
|
||||
|
||||
test('selectReleasesToDelete 保留最新的 keepCount 筆,刪除其餘', () => {
|
||||
const toDelete = selectReleasesToDelete(releases, 2)
|
||||
assert.equal(toDelete.length, 1)
|
||||
assert.equal(toDelete[0].tag_name, 'v1.0.0')
|
||||
})
|
||||
|
||||
test('selectReleasesToDelete 在數量不超過保留數時回傳空陣列', () => {
|
||||
assert.deepEqual(selectReleasesToDelete(releases, 3), [])
|
||||
assert.deepEqual(selectReleasesToDelete(releases, 5), [])
|
||||
})
|
||||
|
||||
test('selectReleasesToDelete 在 keepCount 為 0 時刪除全部(由新到舊)', () => {
|
||||
const toDelete = selectReleasesToDelete(releases, 0)
|
||||
assert.deepEqual(
|
||||
toDelete.map((r) => r.tag_name),
|
||||
['v3.0.0', 'v2.0.0', 'v1.0.0'],
|
||||
)
|
||||
})
|
||||
|
||||
test('selectReleasesToDelete 不改動原陣列', () => {
|
||||
const original = [...releases]
|
||||
selectReleasesToDelete(releases, 1)
|
||||
assert.deepEqual(releases, original)
|
||||
})
|
||||
Reference in New Issue
Block a user