import MastodonAPI from '@/mastodon/api_client'
import { Worker } from 'jest-worker'

jest.mock('axios', () => {
  const mockAxios = jest.requireActual('axios')
  mockAxios.get = (_path: string) => {
    return new Promise(resolve => {
      setTimeout(() => {
        console.log('hoge')
        resolve({
          data: 'hoge',
          status: 200,
          statusText: '200OK',
          headers: [],
          config: {}
        })
      }, 5000)
    })
  }
  return mockAxios
})

const worker = async (client: MastodonAPI.Client) => {
  const w: any = new Worker(require.resolve('./cancelWorker.ts'))
  await w.cancel(client)
}

// Could not use jest-worker under typescript.
// I'm waiting for resolve this issue.
// https://github.com/facebook/jest/issues/8872
describe.skip('cancel', () => {
  const client = new MastodonAPI.Client('testToken', 'https://pleroma.io/api/v1')
  it('should be raised', async () => {
    const getPromise = client.get<{}>('/timelines/home')
    worker(client)
    await expect(getPromise).rejects.toThrow()
  })
})