mirror of
https://github.com/iptv-org/epg.git
synced 2025-05-10 00:50:09 -04:00
wip
This commit is contained in:
parent
299cf26cd6
commit
ce525ed13c
13 changed files with 199 additions and 207 deletions
1
tests/__data__/expected/api/channels.json
Normal file
1
tests/__data__/expected/api/channels.json
Normal file
|
@ -0,0 +1 @@
|
|||
[{"id":"AndorraTV.ad","name":["Andorra TV"],"logo":null,"country":"AD","site":"andorradifusio.ad"}]
|
1
tests/__data__/expected/api/programs.json
Normal file
1
tests/__data__/expected/api/programs.json
Normal file
|
@ -0,0 +1 @@
|
|||
{"AndorraTV.ad":[{"channel":"AndorraTV.ad","title":[{"lang":"ca","value":"InfoNeu "}],"description":[],"categories":[],"image":null,"start":1641711600,"stop":1641715200},{"channel":"AndorraTV.ad","title":[{"lang":"ca","value":"Club Piolet"}],"description":[],"categories":[],"image":null,"start":1641715200,"stop":1641718800},{"channel":"AndorraTV.ad","title":[{"lang":"ca","value":"InfoNeu "}],"description":[],"categories":[],"image":null,"start":1641718800,"stop":1641729600},{"channel":"AndorraTV.ad","title":[{"lang":"ca","value":"Andorra Actualitat (RNA)"}],"description":[],"categories":[],"image":null,"start":1641729600,"stop":1641730800},{"channel":"AndorraTV.ad","title":[{"lang":"ca","value":"El Trànsit"}],"description":[],"categories":[],"image":null,"start":1641730800,"stop":1641732000},{"channel":"AndorraTV.ad","title":[{"lang":"ca","value":"El Trànsit"}],"description":[],"categories":[],"image":null,"start":1641732000,"stop":1641732300},{"channel":"AndorraTV.ad","title":[{"lang":"ca","value":"Informatiu migdia"}],"description":[],"categories":[],"image":null,"start":1641732300,"stop":1641733800},{"channel":"AndorraTV.ad","title":[{"lang":"ca","value":"El Trànsit"}],"description":[],"categories":[],"image":null,"start":1641733800,"stop":1641736200},{"channel":"AndorraTV.ad","title":[{"lang":"ca","value":"La Terre vue du Sport"}],"description":[],"categories":[],"image":null,"start":1641736200,"stop":1641736800},{"channel":"AndorraTV.ad","title":[{"lang":"ca","value":"Informatiu migdia"}],"description":[],"categories":[],"image":null,"start":1641736800,"stop":1641738300},{"channel":"AndorraTV.ad","title":[{"lang":"ca","value":"Club Piolet"}],"description":[],"categories":[],"image":null,"start":1641738300,"stop":1641741900},{"channel":"AndorraTV.ad","title":[{"lang":"ca","value":"Informatiu migdia"}],"description":[],"categories":[],"image":null,"start":1641741900,"stop":1641743400},{"channel":"AndorraTV.ad","title":[{"lang":"ca","value":"El Trànsit"}],"description":[],"categories":[],"image":null,"start":1641743400,"stop":1641750900},{"channel":"AndorraTV.ad","title":[{"lang":"ca","value":"La rotonda"}],"description":[],"categories":[],"image":null,"start":1641750900,"stop":1641753600},{"channel":"AndorraTV.ad","title":[{"lang":"ca","value":"Club Piolet"}],"description":[],"categories":[],"image":null,"start":1641753600,"stop":1641757200},{"channel":"AndorraTV.ad","title":[{"lang":"ca","value":"El Trànsit"}],"description":[],"categories":[],"image":null,"start":1641757200,"stop":1641757500},{"channel":"AndorraTV.ad","title":[{"lang":"ca","value":"Informatiu vespre"}],"description":[],"categories":[],"image":null,"start":1641757500,"stop":1641759000},{"channel":"AndorraTV.ad","title":[{"lang":"ca","value":"Recull setmanal"}],"description":[],"categories":[],"image":null,"start":1641759000,"stop":1641761100},{"channel":"AndorraTV.ad","title":[{"lang":"ca","value":"Memòries d'arxiu: 10 anys d'ATV"}],"description":[],"categories":[],"image":null,"start":1641761100,"stop":1641763800},{"channel":"AndorraTV.ad","title":[{"lang":"ca","value":"El cafè dels matins"}],"description":[],"categories":[],"image":null,"start":1641763800,"stop":1641766800},{"channel":"AndorraTV.ad","title":[{"lang":"ca","value":"La Terre vue du Sport"}],"description":[],"categories":[],"image":null,"start":1641766800,"stop":1641767400},{"channel":"AndorraTV.ad","title":[{"lang":"ca","value":"Informatiu vespre"}],"description":[],"categories":[],"image":null,"start":1641767400,"stop":1641772800},{"channel":"AndorraTV.ad","title":[{"lang":"ca","value":"Àrea Andorra Difusió"}],"description":[],"categories":[],"image":null,"start":1641772800,"stop":1641776400}]}
|
26
tests/__data__/expected/guides/epg.xml
Normal file
26
tests/__data__/expected/guides/epg.xml
Normal file
|
@ -0,0 +1,26 @@
|
|||
<?xml version="1.0" encoding="UTF-8" ?><tv>
|
||||
<channel id="AndorraTV.ad"><display-name>Andorra TV</display-name><url>https://andorradifusio.ad</url></channel>
|
||||
<programme start="20220109070000 +0000" stop="20220109080000 +0000" channel="AndorraTV.ad"><title lang="ca">InfoNeu</title></programme>
|
||||
<programme start="20220109080000 +0000" stop="20220109090000 +0000" channel="AndorraTV.ad"><title lang="ca">Club Piolet</title></programme>
|
||||
<programme start="20220109090000 +0000" stop="20220109120000 +0000" channel="AndorraTV.ad"><title lang="ca">InfoNeu</title></programme>
|
||||
<programme start="20220109120000 +0000" stop="20220109122000 +0000" channel="AndorraTV.ad"><title lang="ca">Andorra Actualitat (RNA)</title></programme>
|
||||
<programme start="20220109122000 +0000" stop="20220109124000 +0000" channel="AndorraTV.ad"><title lang="ca">El Trànsit</title></programme>
|
||||
<programme start="20220109124000 +0000" stop="20220109124500 +0000" channel="AndorraTV.ad"><title lang="ca">El Trànsit</title></programme>
|
||||
<programme start="20220109124500 +0000" stop="20220109131000 +0000" channel="AndorraTV.ad"><title lang="ca">Informatiu migdia</title></programme>
|
||||
<programme start="20220109131000 +0000" stop="20220109135000 +0000" channel="AndorraTV.ad"><title lang="ca">El Trànsit</title></programme>
|
||||
<programme start="20220109135000 +0000" stop="20220109140000 +0000" channel="AndorraTV.ad"><title lang="ca">La Terre vue du Sport</title></programme>
|
||||
<programme start="20220109140000 +0000" stop="20220109142500 +0000" channel="AndorraTV.ad"><title lang="ca">Informatiu migdia</title></programme>
|
||||
<programme start="20220109142500 +0000" stop="20220109152500 +0000" channel="AndorraTV.ad"><title lang="ca">Club Piolet</title></programme>
|
||||
<programme start="20220109152500 +0000" stop="20220109155000 +0000" channel="AndorraTV.ad"><title lang="ca">Informatiu migdia</title></programme>
|
||||
<programme start="20220109155000 +0000" stop="20220109175500 +0000" channel="AndorraTV.ad"><title lang="ca">El Trànsit</title></programme>
|
||||
<programme start="20220109175500 +0000" stop="20220109184000 +0000" channel="AndorraTV.ad"><title lang="ca">La rotonda</title></programme>
|
||||
<programme start="20220109184000 +0000" stop="20220109194000 +0000" channel="AndorraTV.ad"><title lang="ca">Club Piolet</title></programme>
|
||||
<programme start="20220109194000 +0000" stop="20220109194500 +0000" channel="AndorraTV.ad"><title lang="ca">El Trànsit</title></programme>
|
||||
<programme start="20220109194500 +0000" stop="20220109201000 +0000" channel="AndorraTV.ad"><title lang="ca">Informatiu vespre</title></programme>
|
||||
<programme start="20220109201000 +0000" stop="20220109204500 +0000" channel="AndorraTV.ad"><title lang="ca">Recull setmanal</title></programme>
|
||||
<programme start="20220109204500 +0000" stop="20220109213000 +0000" channel="AndorraTV.ad"><title lang="ca">Memòries d'arxiu: 10 anys d'ATV</title></programme>
|
||||
<programme start="20220109213000 +0000" stop="20220109222000 +0000" channel="AndorraTV.ad"><title lang="ca">El cafè dels matins</title></programme>
|
||||
<programme start="20220109222000 +0000" stop="20220109223000 +0000" channel="AndorraTV.ad"><title lang="ca">La Terre vue du Sport</title></programme>
|
||||
<programme start="20220109223000 +0000" stop="20220110000000 +0000" channel="AndorraTV.ad"><title lang="ca">Informatiu vespre</title></programme>
|
||||
<programme start="20220110000000 +0000" stop="20220110010000 +0000" channel="AndorraTV.ad"><title lang="ca">Àrea Andorra Difusió</title></programme>
|
||||
</tv>
|
|
@ -5,26 +5,32 @@ const { execSync } = require('child_process')
|
|||
beforeEach(() => {
|
||||
fs.rmdirSync('tests/__data__/output', { recursive: true })
|
||||
fs.mkdirSync('tests/__data__/output')
|
||||
})
|
||||
|
||||
it('can create channels database', () => {
|
||||
const results = execSync(
|
||||
execSync(
|
||||
'DB_DIR=tests/__data__/output/database node scripts/commands/create-database.js --channels=tests/__data__/input/site.channels.xml --max-clusters=1',
|
||||
{ encoding: 'utf8' }
|
||||
)
|
||||
})
|
||||
|
||||
const database = fs.readFileSync(path.resolve('tests/__data__/output/database/channels.db'), {
|
||||
encoding: 'utf8'
|
||||
})
|
||||
const item = database.split('\n').find(i => i.includes('AndorraTV.ad'))
|
||||
expect(JSON.parse(item)).toMatchObject({
|
||||
name: 'Andorra TV',
|
||||
it('can create channels database', () => {
|
||||
const output = content('tests/__data__/output/database/channels.db')
|
||||
|
||||
expect(output).toMatchObject({
|
||||
lang: 'ca',
|
||||
xmltv_id: 'AndorraTV.ad',
|
||||
site_id: 'atv',
|
||||
name: 'Andorra TV',
|
||||
site: 'andorradifusio.ad',
|
||||
channelsPath: 'tests/__data__/input/site.channels.xml',
|
||||
configPath: 'tests/__data__/input/andorradifusio.ad.config.js',
|
||||
cluster_id: 1
|
||||
})
|
||||
})
|
||||
|
||||
function content(filepath) {
|
||||
const data = fs.readFileSync(path.resolve(filepath), {
|
||||
encoding: 'utf8'
|
||||
})
|
||||
|
||||
return JSON.parse(data)
|
||||
}
|
||||
|
|
|
@ -5,17 +5,15 @@ const { execSync } = require('child_process')
|
|||
beforeEach(() => {
|
||||
fs.rmdirSync('tests/__data__/output', { recursive: true })
|
||||
fs.mkdirSync('tests/__data__/output')
|
||||
fs.copyFileSync('tests/__data__/input/channels.db', 'tests/__data__/temp/channels.db')
|
||||
})
|
||||
|
||||
afterEach(() => {
|
||||
fs.rmdirSync('tests/__data__/temp', { recursive: true })
|
||||
fs.mkdirSync('tests/__data__/temp')
|
||||
})
|
||||
|
||||
it('can create valid matrix', () => {
|
||||
const result = execSync('DB_DIR=tests/__data__/temp node scripts/commands/create-matrix.js', {
|
||||
encoding: 'utf8'
|
||||
})
|
||||
const result = execSync(
|
||||
'DB_DIR=tests/__data__/input/database node scripts/commands/create-matrix.js',
|
||||
{
|
||||
encoding: 'utf8'
|
||||
}
|
||||
)
|
||||
|
||||
expect(result).toBe('::set-output name=matrix::{"cluster_id":[1]}\n')
|
||||
})
|
||||
|
|
|
@ -5,47 +5,38 @@ const { execSync } = require('child_process')
|
|||
beforeEach(() => {
|
||||
fs.rmdirSync('tests/__data__/output', { recursive: true })
|
||||
fs.mkdirSync('tests/__data__/output')
|
||||
fs.mkdirSync('tests/__data__/output/api')
|
||||
|
||||
execSync(
|
||||
'PUBLIC_DIR=tests/__data__/output DB_DIR=tests/__data__/input/database node scripts/commands/generate-guides.js',
|
||||
{ encoding: 'utf8' }
|
||||
)
|
||||
})
|
||||
|
||||
it('can generate channels.json', () => {
|
||||
const result = execSync(
|
||||
'PUBLIC_DIR=tests/__data__/output DB_DIR=tests/__data__/input/database node scripts/commands/generate-guides.js',
|
||||
{ encoding: 'utf8' }
|
||||
)
|
||||
const json = fs.readFileSync(path.resolve('tests/__data__/output/api/channels.json'), {
|
||||
encoding: 'utf8'
|
||||
})
|
||||
const parsed = JSON.parse(json)
|
||||
expect(parsed[0]).toMatchObject({
|
||||
id: 'AndorraTV.ad',
|
||||
name: ['Andorra TV'],
|
||||
logo: null,
|
||||
country: 'AD'
|
||||
})
|
||||
const output = content('tests/__data__/output/api/channels.json')
|
||||
const expected = content('tests/__data__/expected/api/channels.json')
|
||||
|
||||
expect(output).toBe(expected)
|
||||
})
|
||||
|
||||
it('can generate programs.json', () => {
|
||||
const result = execSync(
|
||||
'PUBLIC_DIR=tests/__data__/output DB_DIR=tests/__data__/input/database node scripts/commands/generate-guides.js',
|
||||
{ encoding: 'utf8' }
|
||||
)
|
||||
const json = fs.readFileSync(path.resolve('tests/__data__/output/api/programs.json'), {
|
||||
const output = content('tests/__data__/output/api/programs.json')
|
||||
const expected = content('tests/__data__/expected/api/programs.json')
|
||||
|
||||
expect(output).toBe(expected)
|
||||
})
|
||||
|
||||
it('can generate epg.xml', () => {
|
||||
const output = content('tests/__data__/output/guides/epg.xml')
|
||||
const expected = content('tests/__data__/expected/guides/epg.xml')
|
||||
|
||||
expect(output).toBe(expected)
|
||||
})
|
||||
|
||||
function content(filepath) {
|
||||
const data = fs.readFileSync(path.resolve(filepath), {
|
||||
encoding: 'utf8'
|
||||
})
|
||||
const parsed = JSON.parse(json)
|
||||
const program = parsed['AndorraTV.ad'][0]
|
||||
expect(Object.keys(program).sort()).toEqual([
|
||||
'categories',
|
||||
'channel',
|
||||
'description',
|
||||
'image',
|
||||
'start',
|
||||
'stop',
|
||||
'title'
|
||||
])
|
||||
expect(Array.isArray(program.title)).toBe(true)
|
||||
expect(Array.isArray(program.description)).toBe(true)
|
||||
expect(Array.isArray(program.categories)).toBe(true)
|
||||
expect(program.image === null || typeof program.image === 'string').toBe(true)
|
||||
})
|
||||
|
||||
return JSON.stringify(data)
|
||||
}
|
||||
|
|
|
@ -5,20 +5,22 @@ const { execSync } = require('child_process')
|
|||
beforeEach(() => {
|
||||
fs.rmdirSync('tests/__data__/output', { recursive: true })
|
||||
fs.mkdirSync('tests/__data__/output')
|
||||
})
|
||||
|
||||
it('can load cluster', () => {
|
||||
const result = execSync(
|
||||
execSync(
|
||||
'DB_DIR=tests/__data__/input/database LOGS_DIR=tests/__data__/output/logs node scripts/commands/load-cluster.js --cluster-id=1',
|
||||
{ encoding: 'utf8' }
|
||||
)
|
||||
const logs = fs.readFileSync(
|
||||
})
|
||||
|
||||
it('can load cluster', () => {
|
||||
const output = fs.readFileSync(
|
||||
path.resolve('tests/__data__/output/logs/load-cluster/cluster_1.log'),
|
||||
{
|
||||
encoding: 'utf8'
|
||||
}
|
||||
)
|
||||
const lines = logs.split('\n')
|
||||
const lines = output.split('\n')
|
||||
const parsed = JSON.parse(lines[0])
|
||||
|
||||
expect(parsed._id).toBe('K1kaxwsWVjsRIZL6')
|
||||
})
|
||||
|
|
|
@ -5,20 +5,20 @@ const { execSync } = require('child_process')
|
|||
beforeEach(() => {
|
||||
fs.rmdirSync('tests/__data__/output', { recursive: true })
|
||||
fs.mkdirSync('tests/__data__/output')
|
||||
fs.mkdirSync('tests/__data__/output/database')
|
||||
fs.copyFileSync('tests/__data__/input/programs.db', 'tests/__data__/output/database/programs.db')
|
||||
})
|
||||
|
||||
it('can save results', () => {
|
||||
const result = execSync(
|
||||
execSync(
|
||||
'DB_DIR=tests/__data__/output/database LOGS_PATH=tests/__data__/input/logs node scripts/commands/save-results.js',
|
||||
{ encoding: 'utf8' }
|
||||
)
|
||||
const logs = fs.readFileSync(path.resolve('tests/__data__/output/database/programs.db'), {
|
||||
})
|
||||
|
||||
it('can save results', () => {
|
||||
const output = fs.readFileSync(path.resolve('tests/__data__/output/database/programs.db'), {
|
||||
encoding: 'utf8'
|
||||
})
|
||||
const lines = logs.split('\n')
|
||||
const lines = output.split('\n')
|
||||
const parsed = JSON.parse(lines[0])
|
||||
|
||||
expect(Object.keys(parsed).sort()).toEqual([
|
||||
'_id',
|
||||
'category',
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue