touhou-tagger
Version:
从 THBWiki 自动填写东方 Project CD 曲目信息.
52 lines (42 loc) • 1.77 kB
text/typescript
import { copyFile, readFile } from 'fs/promises'
import { beforeEach, describe, expect, test } from 'vitest'
import { flacReader } from '../src/core/reader/flac/flac-reader.js'
import { mp3Reader } from '../src/core/reader/mp3/mp3-reader.js'
import { flacWriter } from '../src/core/writer/flac/flac-writer.js'
import { mp3Writer } from '../src/core/writer/mp3/mp3-writer.js'
import {
cleanTmp,
createMetadata,
expectMetadata,
fixturePath,
metadataConfig,
tmpPath,
} from './helpers.js'
beforeEach(cleanTmp)
describe('metadata read/write', () => {
test('writes and reads MP3 metadata', async () => {
const writePath = tmpPath('metadata.mp3')
const cover = await readFile(fixturePath('cover.jpg'))
const metadata = createMetadata(cover)
await copyFile(fixturePath('audio-blank.mp3'), writePath)
mp3Writer.config = metadataConfig()
await mp3Writer.write(metadata, writePath)
mp3Reader.config = metadataConfig()
const actual = await mp3Reader.read(writePath)
expectMetadata(actual, metadata)
expect(actual.lyricLanguage).toBe(metadata.lyricLanguage)
expect(actual.coverImage?.equals(cover)).toBe(true)
})
test('writes and reads FLAC metadata', async () => {
const writePath = tmpPath('metadata.flac')
const cover = await readFile(fixturePath('cover.jpg'))
const metadata = createMetadata(cover)
await copyFile(fixturePath('audio-blank.flac'), writePath)
flacWriter.config = metadataConfig()
await flacWriter.write(metadata, writePath)
flacReader.config = metadataConfig()
const actual = await flacReader.read(writePath)
expectMetadata(actual, metadata)
expect(actual.coverImage?.equals(cover)).toBe(true)
})
})