import assert from 'assert';
import cheerio from 'cheerio';

import HTML from './fixtures/get-weight';
import {
  getWeight,
} from './index';

describe('Generic Extractor Utils', () => {
  describe('getWeight(node)', () => {
    it('returns a score of 25 if node has positive id', () => {
      const $ = cheerio.load(HTML.positiveId);
      assert.equal(getWeight($('div')), 25);
    });

    it('returns a score of -25 if node has negative id', () => {
      const $ = cheerio.load(HTML.negativeId);
      assert.equal(getWeight($('div')), -25);
    });

    it('returns a score of 25 if node has positive class', () => {
      const $ = cheerio.load(HTML.positiveClass);
      assert.equal(getWeight($('div')), 25);
    });

    it('returns a score of -25 if node has negative class', () => {
      const $ = cheerio.load(HTML.negativeClass);
      assert.equal(getWeight($('div')), -25);
    });

    it('returns a score of 25 if node has both positive id and class', () => {
      const $ = cheerio.load(HTML.positiveIdAndClass);
      assert.equal(getWeight($('div')), 25);
    });

    it('returns a score of 25 if node has pos id and neg class', () => {
      // is this really wanted? id="entry" class="adbox"
      // should get positive score?
      const $ = cheerio.load(HTML.positiveIdNegClass);
      assert.equal(getWeight($('div')), 25);
    });

    it('returns a score of 10 if node has pos img class', () => {
      const $ = cheerio.load(HTML.positivePhotoClass);
      assert.equal(getWeight($('div')), 10);
    });

    it('returns a score of 35 if node has pos id pos img class', () => {
      const $ = cheerio.load(HTML.positiveIdAndPhoto);
      assert.equal(getWeight($('div')), 35);
    });

    it("adds an add'l 25 (total 50) if node uses entry-content-asset class", () => {
      const $ = cheerio.load(HTML.entryContentAsset);
      assert.equal(getWeight($('div')), 50);
    });
  });
});
