const tape = require('tape'); const _test = require('tape-promise').default; // <---- notice 'default' const test = _test(tape); // decorate tape const fs = require('fs'); const jsonfile = require('jsonfile'); const cheerio = require('cheerio'); const path = require('path'); const Lux = require('../ncas/lu'); const sourcePath = path.join(__dirname, '/data/lu/'); const luScraper = new Lux(); const StaticServer = require('static-server'); const failure = { 'fail':true }; var server = new StaticServer({ 'rootPath': sourcePath, // required, the root of the server file tree 'port': 7357, // required, the port to listen 'name': 'my-http-server', // optional, will set "X-Powered-by" HTTP header // 'host': '10.0.0.100', // optional, defaults to any interface 'cors': '*', // optional, defaults to undefined 'followSymlink': true, // optional, defaults to a 404 error 'templates': { 'index': 'foo.html', // optional, defaults to 'index.html' 'notFound': '404.html' // optional, defaults to undefined } }); server.start(function () { console.log('Server listening to', server.port); console.log('Serving', server.rootPath); }); test.skip('LUX:: Handle Menu', async t => { t.test('🇱🇺::Extract status bar details', async t => { const psDetail = fs.readFileSync('tests/data/lu/ps_001.html'); const expectedJSON = jsonfile.readFileSync('tests/data/lu/ps_001.json'); const $ = cheerio.load(psDetail); const output = await luScraper.extractBarDetails($); t.deepEquals(output, expectedJSON, 'Extracted status bar from Page'); t.end(); }); t.test('🇱🇺::Deal with menu index', async t => { const expectedJSON = failure; // jsonfile.readFileSync(`tests/data/lu/ps_001.json`); await luScraper._initBrowser(false); luScraper.paymentServices = { 'items': 0, 'links': [], 'step': 0, 'indexStep': 0, 'visited': false, 'done' : false, 'urls': ['https://supervisedentities.apps.cssf.lu/index.html?language=en#AdvancedSearch'], 'sections' : [], 'sectionLinks' : [] }; luScraper.page = await luScraper.browser.newPage(); await luScraper.page.goto('http://127.0.0.1:7357/ps_001.html#ResultResearch', { 'waitUntil': 'networkidle0' }); await luScraper.processEntityIndex(luScraper.paymentServices); const output = {}; t.deepEquals(output, expectedJSON, 'Extracted status bar from Page'); t.end(); }); t.end(); }); test.test('LUX:: Process PS Entity', async t => { t.test('🇱🇺::Extract entity details', async t => { const psDetail = fs.readFileSync('tests/data/lu/ps_002.html'); const expectedJSON = jsonfile.readFileSync('tests/data/lu/ps_002.json'); // const $ = cheerio.load(psDetail); const output = await luScraper.extractEntityDetails(psDetail); t.deepEquals(output, expectedJSON, 'Extracted entity details from Page'); t.end(); }); t.end(); });