/* eslint-disable global-require, no-undef */
import assert from 'assert';
import cheerio from 'cheerio';

// don't run this on CI b/c we want to avoid network requests
if (
  process.env.CI ||
  (typeof __karma__ !== 'undefined' && __karma__.config.args[0] === '--CI')
) {
  if (cheerio.browser) {
    require('../dist/mercury.web');
  }
  // eslint-disable-next-line no-unused-expressions
  typeof Mercury === 'undefined' && require('../dist/mercury');
  describe('Tests', () => {
    it('do not run because this is CI and we do not want network requests', () => {
      assert.equal(true, true);
    });
  });
} else {
  if (cheerio.browser) {
    require('../dist/mercury.web');
  }
  const Merc =
    typeof Mercury === 'undefined' ? require('../dist/mercury') : Mercury;

  describe('Is Mercury build working', () => {
    let urls = [
      {
        url:
          'http://www.cnn.com/2016/11/05/middleeast/iraq-mosul-isis-offensive/',
        title: `Iraqi troops storm town south of Mosul${
          Merc.browser ? ' | CNN' : ''
        }`,
      },
      {
        url:
          'https://www.cnn.com/2019/01/30/politics/trump-intel-chiefs-foreign-policy-iran-isis-north-korea/index.html',
        title: `Trump chastises intel chiefs after they contradict him on Iran and claims of foreign policy success${
          Merc.browser ? ' | CNN Politics' : ''
        }`,
      },
    ];
    if (Merc.browser) {
      const proxyUrl = 'http://localhost:3000/';
      urls = urls.map(article => ({
        title: article.title,
        url: proxyUrl + article.url,
      }));
    }
    urls.map(article =>
      it(`gets this title right ${article.title}`, done => {
        Merc.parse(article.url)
          .then(result => {
            assert.equal(article.title, result.title);
            done();
          })
          .catch(e => {
            console.log(e.name, e.message); // eslint-disable-line no-console
            assert.equal(true, false);
            done();
          });
      }, 15000)
    );
  });
}
