import prepareActiveTimeEvent from '../prepare-active-time-event';
import { VERSION } from '../../config/config';
import { BlinkEvent } from '../../types';
import { Page } from '../../selectors/get-page-state';

describe('prepareActiveTimeEvent', () => {
  it('should format properly based on page state', () => {
    const id = 'dagbladet.no/123';
    const page: Page = {
      id: 'default',
      state: {
        general: {
          pageView: 'some-pageview-uuid',
          site: 'www.dagbladet.no',
          referrer: 'www.dinside.no',
          pageScrollMaxOffsetY: 500,
          pageScrollLatestOffsetY: 240,
        },
        activeTime: {
          'dagbladet.no/123': {
            id: 'dagbladet.no/123',
            url: 'https://www.dagbladet.no/a/123',
            activity: [
              {
                type: 'start',
                time: new Date(6),
              },
              { type: 'stop', time: new Date(10) },
            ],
          },
        },
        screen: {
          events: [],
        },
      },
    };
    const expected: BlinkEvent = {
      type: 'activeTime',
      pageView: 'some-pageview-uuid',
      site: 'www.dagbladet.no',
      referrer: 'www.dinside.no',
      version: VERSION,
      id: 'dagbladet.no/123',
      article: {
        url: 'https://www.dagbladet.no/a/123',
        harvesterId: 'dagbladet.no/123',
      },
      activeTime: 4,
      pageScrollLatestOffsetY: 240,
      pageScrollMaxOffsetY: 500,
    };

    expect(prepareActiveTimeEvent({ id, page })).toEqual(expected);
  });

  it('should work even though it has no previous article preview', () => {
    const id = 'dagbladet.no/123';
    const page: Page = {
      id: 'default-page',
      state: {
        general: {
          pageView: 'some-pageview-uuid',
          site: 'www.dagbladet.no',
          referrer: 'www.dinside.no',
        },
        activeTime: {
          'dagbladet.no/123': {
            id: 'dagbladet.no/123',
            url: 'https://www.dagbladet.no/a/123',
            activity: [
              { type: 'start', time: new Date(6) },
              { type: 'stop', time: new Date(10) },
            ],
          },
        },
        screen: {
          events: [],
        },
      },
    };
    const expected: BlinkEvent = {
      type: 'activeTime',
      pageView: 'some-pageview-uuid',
      site: 'www.dagbladet.no',
      referrer: 'www.dinside.no',
      version: VERSION,
      id: 'dagbladet.no/123',
      article: {
        url: 'https://www.dagbladet.no/a/123',
        harvesterId: 'dagbladet.no/123',
      },
      activeTime: 4,
      pageScrollMaxOffsetY: 0,
      pageScrollLatestOffsetY: 0,
    };

    expect(prepareActiveTimeEvent({ id, page })).toEqual(expected);
  });
});
