import test from 'tape'
import Uppy from '../../src/core/Core.js'
import Acquirer1Plugin from './mocks/plugin-acquirer1.js'
// import Acquirer2Plugin from './mocks/plugin-acquirer2.js'

test('core', function (t) {
  t.equal(typeof new Uppy(), 'object', '`new Uppy()` should return an `object`')
  t.equal(typeof Uppy(), 'object', '`Uppy()` without `new` should also return an `object`')
  // t.ok(uppy instanceof Uppy, '`uppy` should be an instance of `Core` core')
  t.end()
})

test('use plugins', function (t) {
  const uppy = new Uppy()
  uppy
    .use(Acquirer1Plugin)

  t.equal(Object.keys(uppy.plugins).length, 1, 'should add a plugin to the plugins stack')
  t.end()
})

test('noDuplicates', function (t) {
  const uppyTwoAcquirers = new Uppy()

  uppyTwoAcquirers.use(Acquirer1Plugin)
  const fn = uppyTwoAcquirers.use.bind(uppyTwoAcquirers, Acquirer1Plugin)

  t.throws(fn, new RegExp('Uppy is currently limited to running one of every plugin'))
  t.end()
})

// test('autoProceed', function (t) {
//   const uppyOneAcquirer = new Core()
//   uppyOneAcquirer
//     .use(Acquirer1Plugin)
//     .run()
//
//   const uppyTwoAcquirers = new Core()
//   uppyTwoAcquirers
//     .use(Acquirer1Plugin)
//     .use(Acquirer2Plugin)
//     .run()
//
//   t.equal(uppyOneAcquirer.opts.autoProceed, true, 'should autoProceed if only one acquirer is used')
//   t.equal(uppyTwoAcquirers.opts.autoProceed, false, 'should not autoProceed if more than one acquirer is used')
//   t.end()
// })
