import test from 'ava'
import { resolve } from 'path'

test('Fail to generate without routeParams', t => {
  const Nuxt = require('../')
  const options = {
    rootDir: resolve(__dirname, 'fixtures/basic'),
    dev: false
    // no generate.routeParams
  }
  const nuxt = new Nuxt(options)
  return new Promise((resolve) => {
    var oldExit = process.exit
    var oldCE = console.error // eslint-disable-line no-console
    var _log = ''
    console.error = (s) => { _log += s } // eslint-disable-line no-console
    process.exit = (code) => {
      process.exit = oldExit
      console.error = oldCE // eslint-disable-line no-console
      t.is(code, 1)
      t.true(_log.includes('Could not generate the dynamic route /users/:id'))
      resolve()
    }
    nuxt.generate()
  })
})

test('Fail with routeParams which throw an error', t => {
  const Nuxt = require('../')
  const options = {
    rootDir: resolve(__dirname, 'fixtures/basic'),
    dev: false,
    generate: {
      routeParams: {
        '/users/:id': function () {
          return new Promise((resolve, reject) => {
            reject('Not today!')
          })
        }
      }
    }
  }
  const nuxt = new Nuxt(options)
  return new Promise((resolve) => {
    var oldExit = process.exit
    var oldCE = console.error // eslint-disable-line no-console
    var _log = ''
    console.error = (s) => { _log += s } // eslint-disable-line no-console
    process.exit = (code) => {
      process.exit = oldExit
      console.error = oldCE // eslint-disable-line no-console
      t.is(code, 1)
      t.true(_log.includes('Could not resolve routeParams[/users/:id]'))
      resolve()
    }
    nuxt.generate()
    .catch((e) => {
      t.true(e === 'Not today!')
    })
  })
})