/**
 * @jest-environment jsdom
 */

import Transport from '../log-service-transport'
import { createLogger } from '../index'
import { makeContext, makeSettings } from '../../../__tests__/helpers'

jest.mock('../log-service-transport')

describe('logger', () => {
  beforeEach(() => {
    ;(Transport as jest.Mock).mockClear()
  })

  test('it logs the expected page context', () => {
    const scrollPosition = 500
    window.scrollY = scrollPosition

    const logger = createLogger(makeContext(), makeSettings())
    logger.log('foo')

    const transportLogMock = (Transport as jest.Mock).mock.instances[0].log
    expect(transportLogMock).toHaveBeenCalledTimes(1)
    const [, , context] = transportLogMock.mock.calls[0]
    expect(context).toEqual({
      version: expect.any(String),
      page: { url: 'http://localhost/', title: '', scrollPosition },
    })
  })
})
