Files
HolodoriCalc/src/lib/engine/song-release.test.ts
T
2026-08-29 23:49:56 +09:00

44 lines
1.8 KiB
TypeScript

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