import NavigationEventHandler from '../index'
import BaseEventHandler from '../../base'
import { EventCallbackOptions } from '../../base'
import { createLogger } from '../../../utils/logger'
import { makeContext, makeSettings } from '../../../__tests__/helpers'

const logger = createLogger(makeContext(), makeSettings())

describe('NavigationEventHandler', () => {
  let handlerSpy: jest.SpyInstance<void, [options: EventCallbackOptions, extraProperties?: Record<string, unknown>]>
  let _subject: NavigationEventHandler

  describe('#event_name', () => {
    test('it is correct', () => {
      _subject = new NavigationEventHandler(logger)

      expect(_subject.eventName).toBe('navigation')
    })
  })

  describe('#handle', () => {
    const options = {
      productIdType: 'test-id-type',
      productId: 'test-id',
    }

    beforeEach(() => {
      handlerSpy = jest.spyOn(BaseEventHandler.prototype, 'handle')
      _subject = new NavigationEventHandler(logger)
    })

    test('it calls super with the right params', () => {
      _subject.handle(options)

      expect(handlerSpy).toHaveBeenCalledWith(options)
    })
  })
})
