This commit is contained in:
Aleksandr Statciuk 2022-01-10 00:34:05 +03:00
parent 299cf26cd6
commit ce525ed13c
13 changed files with 199 additions and 207 deletions

View file

@ -0,0 +1 @@
[{"id":"AndorraTV.ad","name":["Andorra TV"],"logo":null,"country":"AD","site":"andorradifusio.ad"}]

View 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}]}

View 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&apos;arxiu: 10 anys d&apos;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>

View file

@ -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)
}

View file

@ -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')
})

View file

@ -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)
}

View file

@ -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')
})

View file

@ -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',