import { OctokitReleaseLookup } from '../src/asset-lookup'
import { Platform } from '../src/os'
import { HugoReleaseTransformer } from '../src/hugo'
import { DartSass, Hugo } from '../src/constants'
import { DartSassReleaseTransformer } from '../src/dart-sass'

beforeEach(() => {
  jest.resetModules()
})

describe('Asset lookup', () => {
  test('Hugo: should return valid version', async () => {
    const releaseLookup = new OctokitReleaseLookup()

    const release = await releaseLookup.getRelease(
      Hugo.Org,
      Hugo.Repo,
      'latest',
      HugoReleaseTransformer
    )
    expect(release.tag_name).toMatch(new RegExp('\\d+.\\d+.\\d+'))
    const archiveUrl = release.assetUrl(new Platform(), false)
    expect(archiveUrl).not.toBe(undefined)
  })

  test('Dart-Sass: should return valid version', async () => {
    const octoVersionDetermination = new OctokitReleaseLookup()

    const release = await octoVersionDetermination.getRelease(
      DartSass.Org,
      DartSass.Repo,
      '',
      DartSassReleaseTransformer
    )
    expect(release.tag_name).toMatch(new RegExp('\\d+.\\d+.\\d+'))
    const archiveUrl = release.assetUrl(new Platform())
    expect(archiveUrl).not.toBe(undefined)
  })
})