@eluvio/elv-js-helpers
Version:
A collection of Javascript helper functions used by several Eluvio libraries.
49 lines (40 loc) • 1.18 kB
JavaScript
const TH = require('../../../test-helpers')
const liftA3Join = TH.requireSrcFile('Functional/liftA3Join')
describe('liftA3Join', () => {
const curry = TH.requireSrcFile('Functional/curry')
const Err = TH.requireSrcFile('ADT/Err')
const Ok = TH.requireSrcFile('ADT/Ok')
const div3 = curry(
(x, y, z) => y === 0 || z === 0 ?
Err(['division by zero']) :
Ok(x / y / z)
)
it('should work as expected', () => {
const div3Wrapped = liftA3Join(div3)
div3Wrapped(
Ok(42),
Ok(3),
Ok(2)
).inspect().should.equal('Ok 7')
div3Wrapped(
Ok(42),
Ok(0),
Ok(2)
).inspect().should.equal('Err [ "division by zero" ]')
div3Wrapped(
Err(['failed to read x']),
Ok(0),
Ok(2)
).inspect().should.equal('Err [ "failed to read x" ]')
div3Wrapped(
Ok(42),
Err(['failed to read y']),
Ok(2)
).inspect().should.equal('Err [ "failed to read y" ]')
div3Wrapped(
Err(['failed to read x']),
Err(['failed to read y']),
Err(['failed to read z'])
).inspect().should.equal('Err [ "failed to read x", "failed to read y", "failed to read z" ]')
})
})