import { expect } from 'chai';
import List from '../../../src/scripts/components/list';

describe('components/list', () => {
  let instance: List | null;
  let choicesElement: HTMLDivElement;

  beforeEach(() => {
    choicesElement = document.createElement('div');
    instance = new List({
      element: choicesElement,
    });
  });

  afterEach(() => {
    document.body.innerHTML = '';
    instance = null;
  });

  describe('constructor', () => {
    it('assigns choices element to class', () => {
      expect(instance).to.not.be.null;
      if (!instance) {
        return;
      }
      expect(instance.element).to.equal(choicesElement);
    });

    it('sets the height of the element', () => {
      expect(instance).to.not.be.null;
      if (!instance) {
        return;
      }
      expect(instance.height).to.deep.equal(choicesElement.scrollTop);
    });
  });

  describe('scrollToTop', () => {
    it("sets the position's scroll position to 0", () => {
      expect(instance).to.not.be.null;
      if (!instance) {
        return;
      }
      instance.element.scrollTop = 10;
      instance.scrollToTop();
      expect(instance.element.scrollTop).to.equal(0);
    });
  });
});
