1
0
mirror of https://github.com/kremalicious/metamask-extension.git synced 2024-11-27 04:46:10 +01:00
metamask-extension/test/unit/app/nodeify.test.js
Thomas Huang 3ba91df387
Unifies unit tests filename suffix to .test.js (#10607)
* Unifies the filename suffix to .test.js

* Display @babel/no-invalid-this rule for tx-controller.test.js

* Add test file extension to test:unit:global
2021-03-09 11:08:06 -08:00

75 lines
1.9 KiB
JavaScript

import assert from 'assert';
import nodeify from '../../../app/scripts/lib/nodeify';
describe('nodeify', function () {
const obj = {
foo: 'bar',
promiseFunc(a) {
const solution = this.foo + a;
return Promise.resolve(solution);
},
};
it('should retain original context', function (done) {
const nodified = nodeify(obj.promiseFunc, obj);
nodified('baz', (err, res) => {
if (!err) {
assert.equal(res, 'barbaz');
done();
return;
}
done(new Error(err.toString()));
});
});
it('no callback - should allow the last argument to not be a function', function (done) {
const nodified = nodeify(obj.promiseFunc, obj);
try {
nodified('baz');
done();
} catch (err) {
done(
new Error(
'should not have thrown if the last argument is not a function',
),
);
}
});
it('sync functions - returns value', function (done) {
const nodified = nodeify(() => 42);
try {
nodified((err, result) => {
if (err) {
done(new Error(`should not have thrown any error: ${err.message}`));
return;
}
assert.equal(42, result, 'got expected result');
});
done();
} catch (err) {
done(new Error(`should not have thrown any error: ${err.message}`));
}
});
it('sync functions - handles errors', function (done) {
const nodified = nodeify(() => {
throw new Error('boom!');
});
try {
nodified((err, result) => {
if (result) {
done(new Error('should not have returned any result'));
return;
}
assert.ok(err, 'got expected error');
assert.ok(err.message.includes('boom!'), 'got expected error message');
});
done();
} catch (err) {
done(new Error(`should not have thrown any error: ${err.message}`));
}
});
});