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

describe('Ad DFP test', () => {
  it('should not send if only screen enter 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',
      abCookie: 38,
      commercialSegments: 'sport,soccer,gardening',
      site: 'www.kk.no',
    });
    expect(mockSend.mock.calls.length).toBe(0);

    blink.adLoad({
      id: 'ad-banner',
      offsetTop: 200,
      offsetHeight: 50,
      scrollTop: 100,
    });

    blink.dfpSlotOnload({
      id: 'ad-banner',
      name: 'medium-rectangle',
      scrollTop: 150,
    });
    // We expect that dfpSlotOnload did send something
    expect(mockSend.mock.calls.length).toBe(1);

    blink.dfpImpressionViewable({
      id: 'ad-banner',
      scrollTop: 250,
    });
    // We expect that dfpSlotOnload did send something
    expect(mockSend.mock.calls.length).toBe(2);

    blink.dfpSlotRenderEnded({
      adUnitPath: '/8578/dagbladet.no/seksjoner/fourfourtwo/artikkel',
      advertiserId: 15450672,
      campaignId: 207698592,
      creativeId: 555,
      id: 'ad-banner',
      lineItemId: 444,
      sourceAgnosticCreativeId: 138234849528,
      sourceAgnosticLineItemId: 104949072,
      size: [320, 250],
      scrollTop: 190,
      bidder: 'rubicon',
      prebidWinningBid: '45.70',
    });

    // We expect that dfpSlotOnload did send something
    expect(mockSend.mock.calls.length).toBe(3);

    const ad = mockSend.mock.calls[2][0][0];
    expect(ad).toEqual({
      id: 'ad-banner',
      adId: 'ad-banner',
      type: 'ads',
      version: VERSION,
      site: 'www.kk.no',
      pageView: 'the-pageview-id',
      referrer: 'www.sol.no',
      inscreenTime: 0,
      inscreenTime0: 0,
      dfp: {
        inscreen: 1,
        loaded: 1,
        rendered: 1,
        name: 'medium-rectangle',
        adUnitPath: '/8578/dagbladet.no/seksjoner/fourfourtwo/artikkel',
        advertiserId: 15450672,
        creativeId: 555,
        campaignId: 207698592,
        lineItemId: 444,
        sourceAgnosticCreativeId: 138234849528,
        sourceAgnosticLineItemId: 104949072,
        size: [320, 250],
        bidder: 'rubicon',
        prebidWinningBid: '45.70',
      },
      scroll: {
        offsetHeight: 50,
        offsetTop: 200,
        pos: {
          adLoad: 100,
          inscreenDFP: 250,
          slotOnload: 150,
          slotRenderEnded: 190,
        },
      },
    });
  });
});
