🏡 index : quine-global/webdriverio.git

import { uploadEventData } from '../../src/testOps/requestUtils.js'
import { describe, expect, it, vi, afterEach } from 'vitest'
import { TESTOPS_BUILD_COMPLETED_ENV, BROWSERSTACK_TESTHUB_JWT } from '../../src/constants.js'

vi.mock('fetch')
describe('uploadEventData', () => {
    const mockedFetch = vi.mocked(fetch)

    afterEach(() => {
        vi.resetAllMocks()
    })

    it('should send request', async () => {
        process.env[TESTOPS_BUILD_COMPLETED_ENV] = 'true'
        process.env[BROWSERSTACK_TESTHUB_JWT] = 'jwt'
        mockedFetch.mockReturnValueOnce(Promise.resolve(Response.json({})))

        expect(async () => uploadEventData( { event_type: 'testRunStarted' } )).not.toThrowError()
        expect(fetch).toBeCalledTimes(1)
    })

    it('should throw error if request fails', async () => {
        process.env[TESTOPS_BUILD_COMPLETED_ENV] = 'true'
        process.env[BROWSERSTACK_TESTHUB_JWT] = 'jwt'
        mockedFetch.mockReturnValueOnce(Promise.reject(Response.json({})))

        await expect(uploadEventData( { event_type: 'testRunStarted' } )).rejects.toThrow()
        expect(fetch).toBeCalledTimes(1)
    })

    it('should throw error if JWT token is missing and not throw error', async () => {
        process.env[TESTOPS_BUILD_COMPLETED_ENV] = 'true'
        delete process.env[BROWSERSTACK_TESTHUB_JWT]

        await expect(uploadEventData( { event_type: 'testRunStarted' } )).rejects.toThrow()
        expect(mockedFetch).toBeCalledTimes(0)
    })
})