File: //usr/share/opensearch-dashboards/node_modules/async-value-promise/test.js
'use strict'
var tap = require('tap')
var AsyncValuePromise = require('./')
tap.test('resolve', t => {
var promise = new AsyncValuePromise()
promise.then(value => {
t.equal(value, 'hello')
t.end()
})
setImmediate(() => {
promise.resolve('hello')
})
})
tap.test('reject', t => {
var promise = new AsyncValuePromise()
promise.then(null, error => {
t.equal(error, 'hello')
t.end()
})
setImmediate(() => {
promise.reject('hello')
})
})
tap.test('throw on reject after resolve', t => {
var promise = new AsyncValuePromise()
promise.resolve('pass')
t.throws(() => promise.reject('fail'))
t.end()
})
tap.test('throw on resolve after reject', t => {
var promise = new AsyncValuePromise()
promise.reject('fail')
t.throws(() => promise.resolve('pass'))
t.end()
})
tap.test('catch', t => {
var promise = new AsyncValuePromise()
promise.catch(error => {
t.equal(error, 'hello')
t.end()
})
setImmediate(() => {
promise.reject('hello')
})
})
tap.test('all success', t => {
var promiseA = new AsyncValuePromise()
var promiseB = new AsyncValuePromise()
var promise = AsyncValuePromise.all([
promiseA,
promiseB
])
promise
.then((values) => {
t.equal(values[0], 'first')
t.equal(values[1], 'second')
t.end()
})
.catch(() => {
t.fail('should not reject')
})
setImmediate(() => {
promiseB.resolve('second')
setImmediate(() => {
promiseA.resolve('first')
})
})
})
tap.test('all failure', t => {
var promiseA = new AsyncValuePromise()
var promiseB = new AsyncValuePromise()
var promise = AsyncValuePromise.all([ promiseA, promiseB ])
promise
.then(() => t.fail('should not resolve'))
.catch(error => {
t.equal(error, 'error')
t.end()
})
setImmediate(() => {
promiseA.resolve('success')
promiseB.reject('error')
})
})
tap.test('all empty', t => {
var promise = AsyncValuePromise.all([])
promise
.then((values) => {
t.equal(values.length, 0)
t.end()
})
.catch(() => {
t.fail('should not reject')
})
})
tap.test('static resolve', t => {
var promise = AsyncValuePromise.resolve('hello')
promise
.then(value => {
t.equal(value, 'hello')
t.end()
})
.catch(() => t.fail('should not reject'))
})
tap.test('static reject', t => {
var promise = AsyncValuePromise.reject('hello')
promise
.then(() => t.fail('should not resolve'))
.catch(error => {
t.equal(error, 'hello')
t.end()
})
})
tap.test('catch', t => {
var promise = AsyncValuePromise.reject('world')
promise
.catch(name => 'hello ' + name)
.then(value => {
t.equal(value, 'hello world')
t.end()
})
.catch(() => t.fail('should not reject'))
})