import './index';
import { expect } from 'chai';
import { TimelineSk } from './timeline-sk';

import {
  setUpElementUnderTest,
  eventPromise,
  noEventPromise,
} from '../../../infra-sk/modules/test_util';
import { MoveFrameEvent, MoveFrameEventDetail } from '../events';

describe('timeline-sk', () => {
  const newInstance = setUpElementUnderTest<TimelineSk>('timeline-sk');

  let timelineSk: TimelineSk;
  beforeEach(() => {
    timelineSk = newInstance();
  });

  describe('playback', () => {
    it('Starts playing from last position', async () => {
      const promise1 = eventPromise<CustomEvent<MoveFrameEventDetail>>(
        MoveFrameEvent,
        100
      );
      timelineSk.item = 0;
      expect((await promise1).detail.frame).to.equal(0);
      // click play
      const promise2 = eventPromise<CustomEvent<MoveFrameEventDetail>>(
        MoveFrameEvent,
        100
      );
      const pb = timelineSk.querySelector<HTMLElement>('#play-button-v')!;
      pb.click();
      expect((await promise2).detail.frame).to.equal(1);
      // click pause
      pb.click();
      await noEventPromise(MoveFrameEvent, 100);
    });
  });
});
