46 lines
1.4 KiB
JavaScript
46 lines
1.4 KiB
JavaScript
/*globals describe, it*/
|
|
'use strict';
|
|
|
|
const pipe = require('../lib/pipe-es6');
|
|
const assert = require('assert');
|
|
|
|
const capitalize = v => v[0].toUpperCase() + v.slice(1);
|
|
const quote = v => `"${v}"`;
|
|
const fetchAndSetBandName = v => new Promise((resolve, reject) => setTimeout(() => resolve(`Pink Floyd - ${v}`), 1000));
|
|
const fetchBandName = ({ song }) => new Promise((resolve, reject) => setTimeout(() => resolve({ song, band: 'Pink Floyd' }), 1000));
|
|
const concatBandAndSong = ({ song, band }) => `${band} - ${song}`;
|
|
|
|
describe('Pipe', function() {
|
|
|
|
describe('Functions (sync)', function() {
|
|
|
|
it(`'time' should be turned into '"Time"'`, function() {
|
|
const result = pipe('time', capitalize, quote);
|
|
assert.equal(result, `"Time"`);
|
|
});
|
|
|
|
});
|
|
|
|
describe('Functions && Promises (sync && async)', function() {
|
|
|
|
it(`'time' should be turned into 'Pink Floyd - Time'`, function(done) {
|
|
|
|
pipe('time', capitalize, fetchAndSetBandName)
|
|
.then(result => assert.equal(`Pink Floyd - Time`, result))
|
|
.then(() => done());
|
|
});
|
|
|
|
});
|
|
|
|
describe('Functions && Promises (sync && async) - Destructuring', function() {
|
|
|
|
it(`'time' should be turned into 'Pink Floyd - Time'`, function(done) {
|
|
|
|
pipe({ song: 'Time' }, fetchBandName, concatBandAndSong)
|
|
.then(result => assert.equal(`Pink Floyd - Time`, result))
|
|
.then(() => done());
|
|
|
|
});
|
|
|
|
});
|
|
}); |