44 lines
1.8 KiB
TypeScript
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);
|
|
});
|