import assert from 'node:assert/strict'; import test from 'node:test'; import { isSongReleased, releasedSongCharts, SONG_RELEASE_TIMES } from '../data/song-release.ts'; test('신규 악곡 공개 시각을 HolodoriDB의 한국 시각과 일치시킨다', () => { assert.deepEqual(SONG_RELEASE_TIMES, { m0332: Date.parse('2026-08-19T20:00:00+09:00'), m0353: Date.parse('2026-08-20T00:00:00+09:00'), m0335: Date.parse('2026-08-21T20:00:00+09:00'), m0333: Date.parse('2026-08-23T20:00:00+09:00'), m0336: Date.parse('2026-08-25T20:00:00+09:00') }); }); test('공개 시각 전에는 신규 악곡을 숨기고 공개 시각부터 표시한다', () => { const releaseTime = SONG_RELEASE_TIMES.m0332; assert.equal(isSongReleased('m0332', releaseTime - 1), false); assert.equal(isSongReleased('m0332', releaseTime), true); assert.equal(isSongReleased('existing-song', releaseTime - 1), true); }); test('채보 목록에서 공개되지 않은 악곡의 모든 난이도를 제외한다', () => { const charts = [ { songId: 'existing-song', difficulty: 'expert' }, { songId: 'm0332', difficulty: 'expert' }, { songId: 'm0332', difficulty: 'hard' } ]; assert.deepEqual(releasedSongCharts(charts, SONG_RELEASE_TIMES.m0332 - 1), [charts[0]]); assert.deepEqual(releasedSongCharts(charts, SONG_RELEASE_TIMES.m0332), charts); }); test('채보 카탈로그의 HolodoriDB 공개 시각을 수동 목록보다 우선한다', () => { const releaseTime = Date.parse('2026-08-30T00:00:00+09:00'); const charts = [ { songId: 'm0359', difficulty: 'expert', releaseTime }, { songId: 'm0359', difficulty: 'hard', releaseTime } ]; assert.deepEqual(releasedSongCharts(charts, releaseTime - 1), []); assert.deepEqual(releasedSongCharts(charts, releaseTime), charts); });