const fs = require('fs') const path = require('path') const { execSync } = require('child_process') beforeEach(() => { fs.rmdirSync('tests/__data__/output', { recursive: true }) fs.mkdirSync('tests/__data__/output') }) it('can create database', () => { execSync( 'DB_FILEPATH=tests/__data__/output/test.db node scripts/commands/create-database.js --input-dir=tests/__data__/input/channels --max-clusters=1', { encoding: 'utf8' } ) const database = fs.readFileSync(path.resolve('tests/__data__/output/test.db'), { encoding: 'utf8' }) const item = database.split('\n').find(i => i.includes('ATV.ad')) expect(JSON.parse(item)).toMatchObject({ name: 'ATV', id: 'ATV.ad', filepath: 'tests/__data__/input/channels/ad_example.m3u', src_country: { name: 'Andorra', code: 'AD', lang: 'cat' }, tvg_country: 'AD', countries: [{ name: 'Andorra', code: 'AD', lang: 'cat' }], regions: [ { name: 'Europe, the Middle East and Africa', code: 'EMEA' }, { name: 'Europe', code: 'EUR' } ], languages: [{ name: 'Catalan', code: 'cat' }], categories: [{ name: 'General', slug: 'general', nsfw: false }], tvg_url: '', guides: [], logo: 'https://i.imgur.com/kJCjeQ4.png', resolution: { height: 720, width: null }, status: { label: 'Offline', code: 'offline', level: 5 }, url: 'https://iptv-all.lanesh4d0w.repl.co/andorra/atv', http: { referrer: '', 'user-agent': '' }, is_nsfw: false, is_broken: true, updated: false, cluster_id: 1 }) })