Testing Playlist Generation Workflow in IPTV-org Repository
This test suite validates the playlist generation functionality in the IPTV repository, ensuring correct creation of M3U playlists and associated log files. It verifies the output against expected results while managing test data directories and file operations.
Test Coverage Overview
Implementation Analysis
Technical Details
Best Practices Demonstrated
iptv-org/iptv
tests/commands/playlist/generate.test.ts
import { execSync } from 'child_process'
import * as fs from 'fs-extra'
import * as glob from 'glob'
beforeEach(() => {
fs.emptyDirSync('tests/__data__/output')
execSync(
'STREAMS_DIR=tests/__data__/input/streams_generate DATA_DIR=tests/__data__/input/data PUBLIC_DIR=tests/__data__/output/.gh-pages LOGS_DIR=tests/__data__/output/logs npm run playlist:generate',
{ encoding: 'utf8' }
)
})
it('can generate playlists and logs', () => {
const playlists = glob
.sync('tests/__data__/expected/.gh-pages/**/*.m3u')
.map((file: string) => file.replace('tests/__data__/expected/', ''))
playlists.forEach((filepath: string) => {
expect(content(`output/${filepath}`), filepath).toBe(content(`expected/${filepath}`))
})
expect(content('output/logs/generators.log').split('\n').sort()).toStrictEqual(
content('expected/logs/generators.log').split('\n').sort()
)
})
function content(filepath: string) {
return fs.readFileSync(`tests/__data__/${filepath}`, {
encoding: 'utf8'
})
}