iptv/tests/commands/update-database.test.js
2021-12-31 11:49:22 +03:00

110 lines
4.0 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

const fs = require('fs')
const path = require('path')
const { execSync } = require('child_process')
beforeEach(() => {
fs.rmdirSync('tests/__data__/temp', { recursive: true })
fs.mkdirSync('tests/__data__/temp')
fs.copyFileSync('tests/__data__/input/update-database.test.db', 'tests/__data__/temp/test.db')
})
it('can update database', () => {
const result = execSync(
'DB_FILEPATH=tests/__data__/temp/test.db LOGS_PATH=tests/__data__/input/logs EPG_CODES_FILEPATH=tests/__data__/input/codes.json node scripts/commands/update-database.js',
{ encoding: 'utf8' }
)
const database = fs.readFileSync('tests/__data__/temp/test.db', { encoding: 'utf8' })
const lines = database.split('\n')
expect(JSON.parse(lines[0])).toMatchObject({
name: 'ЛДПР ТВ',
id: 'LDPRTV.ru',
filepath: 'tests/__data__/output/channels/ru.m3u',
src_country: { name: 'Russia', code: 'RU', lang: 'rus' },
tvg_country: 'RU',
countries: [{ name: 'Russia', code: 'RU', lang: 'rus' }],
regions: [
{ name: 'Asia', code: 'ASIA' },
{ name: 'Commonwealth of Independent States', code: 'CIS' },
{ name: 'Europe, the Middle East and Africa', code: 'EMEA' },
{ name: 'Europe', code: 'EUR' }
],
languages: [{ name: 'Russian', code: 'rus' }],
categories: [{ name: 'General', slug: 'general', nsfw: false }],
tvg_url: '',
guides: ['https://iptv-org.github.io/epg/guides/ru/tv.yandex.ru.epg.xml'],
logo: 'https://iptvx.one/icn/ldpr-tv.png',
resolution: { height: 1080, width: 1920 },
status: { label: '', code: 'online', level: 1 },
url: 'http://46.46.143.222:1935/live/mp4:ldpr.stream/playlist.m3u8',
http: { referrer: '', 'user-agent': '' },
is_nsfw: false,
is_broken: false,
updated: true,
cluster_id: 1,
_id: '2ST8btby3mmsgPF0'
})
expect(JSON.parse(lines[1])).toMatchObject({
name: 'BBC News HD',
id: 'BBCNews.uk',
filepath: 'tests/__data__/output/channels/uk.m3u',
src_country: { name: 'United Kingdom', code: 'UK', lang: 'eng' },
tvg_country: 'UK',
countries: [{ name: 'United Kingdom', code: 'UK', lang: 'eng' }],
regions: [
{ name: 'Europe, the Middle East and Africa', code: 'EMEA' },
{ name: 'Europe', code: 'EUR' }
],
languages: [{ name: 'English', code: 'eng' }],
categories: [{ name: 'News', slug: 'news', nsfw: false }],
tvg_url: '',
guides: [],
logo: 'https://i.imgur.com/eNPIQ9f.png',
resolution: { height: 720, width: null },
status: { label: 'Not 24/7', code: 'not_247', level: 3 },
url: 'http://1111296894.rsc.cdn77.org/LS-ATL-54548-6/index.m3u8',
http: { referrer: '', 'user-agent': '' },
is_nsfw: false,
is_broken: false,
updated: false,
cluster_id: 3,
_id: '3TbieV1ptnZVCIdn'
})
expect(JSON.parse(lines[2])).toMatchObject({
name: 'ATV',
id: 'AndorraTV.ad',
filepath: 'tests/__data__/output/channels/ad.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: ['https://iptv-org.github.io/epg/guides/ad/andorradifusio.ad.epg.xml'],
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: true,
cluster_id: 1
})
expect(JSON.parse(lines[4])).toMatchObject({
id: 'KayhanTV.af',
status: { label: 'Geo-blocked', code: 'geo_blocked', level: 2 },
is_broken: false,
updated: false
})
expect(JSON.parse(lines[5])).toMatchObject({
id: 'Sharq.af',
status: { label: 'Offline', code: 'offline', level: 5 },
is_broken: true,
updated: true
})
})