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) })