import preparePerformanceEvent from '../prepare-performance-event';
import { Page } from '../../selectors/get-page-state';

import { VERSION } from '../../config/config';

import { BlinkEvent } from '../../types';
import { PerformanceTimings } from '../../main';

describe('preparePerformanceEvent', () => {
  it('should format properly based on state', () => {
    const page: Page = {
      id: 'default',
      state: {
        general: {
          pageView: 'performance-event-pageview',
          url: 'https://www.lommelegen.no/a/1234',
          site: 'www.lommelegen.no',
          referrer: 'www.dagbladet.no',
        },
      },
    };

    const performanceTimings: PerformanceTimings = {
      domContentLoadedEventEnd: 1,
      domContentLoadedEventStart: 2,
      domInteractive: 3,
      loadEventEnd: 4,
      loadEventStart: 5,
      responseEnd: 6,
      responseStart: 7,
    };

    const expected: BlinkEvent = {
      id: 'lommelegen.no/1234',
      type: 'performance',
      performanceTimings: {
        domContentLoadedEventEnd: 1,
        domContentLoadedEventStart: 2,
        domInteractive: 3,
        loadEventEnd: 4,
        loadEventStart: 5,
        responseEnd: 6,
        responseStart: 7,
      },
      pageView: 'performance-event-pageview',
      site: 'www.lommelegen.no',
      referrer: 'www.dagbladet.no',
      version: VERSION,
    };
    expect(preparePerformanceEvent({ page, performanceTimings })).toEqual(
      expected,
    );
  });
});
