summaryrefslogtreecommitdiff
path: root/test/addons-napi/test_promise/test.js
blob: 4c2a2e5e76c9fbb9b049e6b319ac22d15292d7ee (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
'use strict';

const common = require('../../common');
const test_promise = require(`./build/${common.buildType}/test_promise`);
const assert = require('assert');

let expected_result, promise;

// A resolution
expected_result = 42;
promise = test_promise.createPromise();
promise.then(
  common.mustCall(function(result) {
    assert.strictEqual(result, expected_result,
                       'promise resolved as expected');
  }),
  common.mustNotCall());
test_promise.concludeCurrentPromise(expected_result, true);

// A rejection
expected_result = 'It\'s not you, it\'s me.';
promise = test_promise.createPromise();
promise.then(
  common.mustNotCall(),
  common.mustCall(function(result) {
    assert.strictEqual(result, expected_result,
                       'promise rejected as expected');
  }));
test_promise.concludeCurrentPromise(expected_result, false);

// Chaining
promise = test_promise.createPromise();
promise.then(
  common.mustCall(function(result) {
    assert.strictEqual(result, 'chained answer',
                       'resolving with a promise chains properly');
  }),
  common.mustNotCall());
test_promise.concludeCurrentPromise(Promise.resolve('chained answer'), true);

assert.strictEqual(test_promise.isPromise(promise), true,
                   'natively created promise is recognized as a promise');

assert.strictEqual(test_promise.isPromise(Promise.reject(-1)), true,
                   'Promise created with JS is recognized as a promise');

assert.strictEqual(test_promise.isPromise(2.4), false,
                   'Number is recognized as not a promise');

assert.strictEqual(test_promise.isPromise('I promise!'), false,
                   'String is recognized as not a promise');

assert.strictEqual(test_promise.isPromise(undefined), false,
                   'undefined is recognized as not a promise');

assert.strictEqual(test_promise.isPromise(null), false,
                   'null is recognized as not a promise');

assert.strictEqual(test_promise.isPromise({}), false,
                   'an object is recognized as not a promise');