import { DeeplinkModule, DeeplinkModuleDependency, createDeeplinkModule, createDependency } from '../../source/module/Deeplink'
import { createMock, Mock } from '../mock'

describe('Deeplink', () => {
    test('offer last deeplink received before javascript initialization', async () => {
        deeplink = createDeeplinkModule()

        const emit = dependency.emitter.addListener.mock.calls[0][1]
        emit('1')
        emit('2')
        emit('3')

        const first = await new Promise((resolve) => {
            deeplink.setOnDeeplinkReceived((deeplink) => {
                resolve(deeplink)
            })
        })

        expect(first).toBe('3')
    })

    let deeplink: DeeplinkModule
    let dependency: Mock<DeeplinkModuleDependency>

    beforeEach(() => {
        dependency = createMock()
        createDependency.DeeplinkModule = () => dependency
    })
})
