import createBlink from '../main';
import { VERSION } from '../config/config';
import jest from 'jest-mock';

describe('Video play integration tests', () => {
  it('should not send a single video start event', () => {
    const mockSend = jest.fn();

    const blink = createBlink({
      send: mockSend,
      sendDirect: mockSend,
    });

    // First send of a pageInit event, to set the general state
    blink.pageInit({
      url: 'http://some.site',
      pageView: 'the-pageview-id',
      referrer: 'www.sol.no',
      site: 'www.kk.no',
    });

    blink.videoPlay({
      videoId: '123',
      playerId: 'test-player-id',
      time: new Date(2),
      position: 0,
      volume: 100,
      reason: 'autostart',
      muted: false,
    });

    expect(mockSend.mock.calls.length).toBe(1);
  });

  it('should not send a single video start event', () => {
    const mockSend = jest.fn();

    const blink = createBlink({
      send: mockSend,
      sendDirect: mockSend,
    });

    // First send of a pageInit event, to set the general state
    blink.pageInit({
      url: 'http://some.site',
      pageView: 'the-pageview-id',
      referrer: 'www.sol.no',
      site: 'www.kk.no',
    });

    blink.videoPlay({
      videoId: '123',
      playerId: 'test-player-id',
      time: new Date(2),
      position: 0,
      volume: 100,
      reason: 'autostart',
      muted: false,
    });

    expect(JSON.stringify(mockSend.mock.calls)).toEqual(
      JSON.stringify([
        [
          [
            {
              pageView: 'the-pageview-id',
              referrer: 'www.sol.no',
              site: 'www.kk.no',
              version: VERSION,
              type: 'videoPlay',
              id: '123',
              videoId: '123',
              videoPlayPosition: 0,
              videoPlayMuted: false,
              videoPlayReason: 'autostart',
              time: new Date('1970-01-01T00:00:00.002Z'),
            },
          ],
        ],
      ]),
    );
  });
});
