From 6ec705cfcc944d9d944f41232b61b6f9127d1f2a Mon Sep 17 00:00:00 2001 From: Aleksandr Statciuk Date: Fri, 14 Jan 2022 17:29:21 +0300 Subject: [PATCH] Update create-database.js --- scripts/commands/create-database.js | 2 ++ .../input/{ => sites}/example.com.config.js | 0 .../example.com_ca-nl.channels.xml} | 0 .../sites/example.com_en-ee.channels.xml | 6 ++++ tests/commands/create-database.test.js | 29 +++++++++++++++---- 5 files changed, 32 insertions(+), 5 deletions(-) rename tests/__data__/input/{ => sites}/example.com.config.js (100%) rename tests/__data__/input/{example.com_us.channels.xml => sites/example.com_ca-nl.channels.xml} (100%) create mode 100644 tests/__data__/input/sites/example.com_en-ee.channels.xml diff --git a/scripts/commands/create-database.js b/scripts/commands/create-database.js index 12ae33c9..1ad9e214 100644 --- a/scripts/commands/create-database.js +++ b/scripts/commands/create-database.js @@ -34,12 +34,14 @@ async function loadChannels() { for (const filepath of files) { const dir = file.dirname(filepath) const filename = file.basename(filepath) + const [_, gid] = filename.match(/_([a-z-]+)\.channels\.xml/i) || [null, null] const items = await parser.parseChannels(filepath) for (const item of items) { const countryCode = item.xmltv_id.split('.')[1] item.country = countryCode ? countryCode.toUpperCase() : null item.channelsPath = filepath item.configPath = `${dir}/${item.site}.config.js` + item.gid = gid channels.push(item) } } diff --git a/tests/__data__/input/example.com.config.js b/tests/__data__/input/sites/example.com.config.js similarity index 100% rename from tests/__data__/input/example.com.config.js rename to tests/__data__/input/sites/example.com.config.js diff --git a/tests/__data__/input/example.com_us.channels.xml b/tests/__data__/input/sites/example.com_ca-nl.channels.xml similarity index 100% rename from tests/__data__/input/example.com_us.channels.xml rename to tests/__data__/input/sites/example.com_ca-nl.channels.xml diff --git a/tests/__data__/input/sites/example.com_en-ee.channels.xml b/tests/__data__/input/sites/example.com_en-ee.channels.xml new file mode 100644 index 00000000..9b5e1b74 --- /dev/null +++ b/tests/__data__/input/sites/example.com_en-ee.channels.xml @@ -0,0 +1,6 @@ + + + + 1+2 + + \ No newline at end of file diff --git a/tests/commands/create-database.test.js b/tests/commands/create-database.test.js index bde74fd8..ea714560 100644 --- a/tests/commands/create-database.test.js +++ b/tests/commands/create-database.test.js @@ -7,7 +7,7 @@ beforeEach(() => { fs.mkdirSync('tests/__data__/output') execSync( - 'DB_DIR=tests/__data__/output/database node scripts/commands/create-database.js --channels=tests/__data__/input/*.channels.xml --max-clusters=1', + 'DB_DIR=tests/__data__/output/database node scripts/commands/create-database.js --channels=tests/__data__/input/sites/*.channels.xml --max-clusters=1', { encoding: 'utf8' } ) }) @@ -15,15 +15,29 @@ beforeEach(() => { it('can create channels database', () => { const output = content('tests/__data__/output/database/channels.db') - expect(output).toMatchObject({ + expect(output[0]).toMatchObject({ + lang: 'en', + country: 'LV', + xmltv_id: '1Plus2.lv', + site_id: '1341', + name: '1+2', + site: 'example.com', + channelsPath: 'tests/__data__/input/sites/example.com_en-ee.channels.xml', + configPath: 'tests/__data__/input/sites/example.com.config.js', + gid: 'en-ee', + cluster_id: 1 + }) + + expect(output[1]).toMatchObject({ lang: 'ru', country: 'US', xmltv_id: 'CNNInternationalEurope.us', site_id: '140', name: 'CNN International Europe', site: 'example.com', - channelsPath: 'tests/__data__/input/example.com_us.channels.xml', - configPath: 'tests/__data__/input/example.com.config.js', + channelsPath: 'tests/__data__/input/sites/example.com_ca-nl.channels.xml', + configPath: 'tests/__data__/input/sites/example.com.config.js', + gid: 'ca-nl', cluster_id: 1 }) }) @@ -33,5 +47,10 @@ function content(filepath) { encoding: 'utf8' }) - return JSON.parse(data) + return data + .split('\n') + .filter(l => l) + .map(l => { + return JSON.parse(l) + }) }