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

describe('prepareClickEvent', () => {
  it('should format properly based on state if found as articlePreview', () => {
    const url = 'https://www.dagbladet.no/a/123';
    const page: Page = {
      id: 'default-page',
      state: {
        general: {
          pageView: 'some-pageview-uuid',
          site: 'www.dagbladet.no',
          referrer: 'www.dinside.no',
        },
        articlePreview: {
          'dagbladet.no/123': {
            url: 'https://www.dagbladet.no/a/123',
            harvesterId: 'dagbladet.no/123',
            title:
              'EM-stjerner gnir seg i øynene over Warholm-stunt: - Helt umenneskelig',
            height: 380,
            width: 376,
            personalizationSystemUsed: 'cerebro',
            personalizationParametersRequested: 'xavier-pluss',
            position: 7,
          },
        },
      },
    };

    const expected: BlinkEvent = {
      type: 'click',
      pageView: 'some-pageview-uuid',
      site: 'www.dagbladet.no',
      referrer: 'www.dinside.no',
      version: VERSION,
      id: 'dagbladet.no/123',
      clickId: '',
      context: ['tag=a', 'tag=div&id=left-lane'],
      abId: '4f1c71885d907251b40eeeb8e9119b1e',
      article: {
        harvesterId: 'dagbladet.no/123',
        url: 'https://www.dagbladet.no/a/123',
      },
      title:
        'EM-stjerner gnir seg i øynene over Warholm-stunt: - Helt umenneskelig',
      height: 380,
      width: 376,
      personalizationSystemUsed: 'cerebro',
      personalizationParametersRequested: 'xavier-pluss',
      position: 7,
    };

    expect(
      prepareClickEvent({
        page,
        url,
        clickId: '',
        abId: '4f1c71885d907251b40eeeb8e9119b1e',
        externalId: 'dagbladet.no/123',
        context: ['tag=a', 'tag=div&id=left-lane'],
      }),
    ).toEqual(expected);
  });

  it('should not send article data if click id is present', () => {
    const url = 'https://www.dagbladet.no/a/123';
    const page: Page = {
      id: 'default-page',
      state: {
        general: {
          pageView: 'some-pageview-uuid',
          site: 'www.dagbladet.no',
          referrer: 'www.dinside.no',
        },
      },
    };

    const expected: BlinkEvent = {
      type: 'click',
      pageView: 'some-pageview-uuid',
      site: 'www.dagbladet.no',
      referrer: 'www.dinside.no',
      abId: '4f1c71885d907251b40eeeb8e9119b1e',
      version: VERSION,
      id: 'mega-tag-id1',
      clickId: 'mega-tag-id1',
      harvesterId: 'www.dagbladet.no',
      context: ['tag=a', 'tag=div&id=left-lane'],
      article: undefined,
      title: undefined,
      height: 0,
      width: 0,
      personalizationSystemUsed: undefined,
      personalizationParametersRequested: undefined,
      position: undefined,
    };

    expect(
      prepareClickEvent({
        page,
        url,
        clickId: 'mega-tag-id1',
        abId: '4f1c71885d907251b40eeeb8e9119b1e',
        externalId: '',
        context: ['tag=a', 'tag=div&id=left-lane'],
      }),
    ).toEqual(expected);
  });

  it('should format properly based on state if not found as articlePreview', () => {
    const url = 'https://www.dagbladet.no/a/123';
    const page: Page = {
      id: 'default-page',
      state: {
        general: {
          pageView: 'some-pageview-uuid',
          site: 'www.dagbladet.no',
          referrer: 'www.dinside.no',
        },
        articlePreview: {},
      },
    };
    const expected: BlinkEvent = {
      type: 'click',
      pageView: 'some-pageview-uuid',
      site: 'www.dagbladet.no',
      referrer: 'www.dinside.no',
      version: VERSION,
      id: 'dagbladet.no/123',
      clickId: '',
      abId: '4f1c71885d907251b40eeeb8e9119b1e',
      context: [],
      article: {
        harvesterId: 'dagbladet.no/123',
        url: 'https://www.dagbladet.no/a/123',
      },
      title: undefined,
      height: 0,
      width: 0,
      personalizationSystemUsed: undefined,
      personalizationParametersRequested: undefined,
      position: undefined,
    };
    expect(
      prepareClickEvent({
        page,
        url,
        clickId: '',
        externalId: 'dagbladet.no/123',
        abId: '4f1c71885d907251b40eeeb8e9119b1e',
        context: [],
      }),
    ).toEqual(expected);
  });
});
