sharyn
Version:
Combines all the other packages under one.
63 lines (57 loc) • 2.38 kB
Flow
import { compose } from 'recompose'
import {
setAsyncRequest,
setAsyncSuccess,
setAsyncFailure,
delAsyncEntry,
clearAsync,
} from './async-reductions'
test('setAsyncRequest', () => {
const asyncState = {}
expect(setAsyncRequest(asyncState, { key: 'foo' })).toEqual({ foo: true })
expect(setAsyncRequest(asyncState, { key: 'foo', useStatus: true })).toEqual({ foo: 'REQUEST' })
expect(setAsyncRequest(asyncState, { key: 'foo', status: 'CUSTOM' })).toEqual({ foo: 'CUSTOM' })
expect(() =>
setAsyncRequest(asyncState, { key: 'foo', useStatus: false, status: 'CUSTOM' }),
).toThrow()
expect(compose(setAsyncRequest({ key: 'foo', status: 'CUSTOM' }))(asyncState)).toEqual({
foo: 'CUSTOM',
})
})
test('setAsyncSuccess', () => {
const asyncState = { foo: true }
expect(setAsyncSuccess(asyncState, { key: 'foo' })).toEqual({})
expect(setAsyncSuccess(asyncState, { key: 'foo', useStatus: true })).toEqual({ foo: 'SUCCESS' })
expect(setAsyncSuccess(asyncState, { key: 'foo', status: 'CUSTOM' })).toEqual({ foo: 'CUSTOM' })
expect(() =>
setAsyncSuccess(asyncState, { key: 'foo', useStatus: false, status: 'CUSTOM' }),
).toThrow()
expect(compose(setAsyncSuccess({ key: 'foo', status: 'CUSTOM' }))(asyncState)).toEqual({
foo: 'CUSTOM',
})
})
test('setAsyncFailure', () => {
const asyncState = { foo: true }
expect(setAsyncFailure(asyncState, { key: 'foo' })).toEqual({})
expect(setAsyncFailure(asyncState, { key: 'foo', useStatus: true })).toEqual({ foo: 'FAILURE' })
expect(setAsyncFailure(asyncState, { key: 'foo', status: 'CUSTOM' })).toEqual({ foo: 'CUSTOM' })
expect(() =>
setAsyncFailure(asyncState, { key: 'foo', useStatus: false, status: 'CUSTOM' }),
).toThrow()
expect(compose(setAsyncFailure({ key: 'foo', status: 'CUSTOM' }))(asyncState)).toEqual({
foo: 'CUSTOM',
})
})
test('delAsyncEntry', () => {
const asyncState = { foo: 'foo' }
expect(() => delAsyncEntry()).toThrow()
expect(() => delAsyncEntry(1)).toThrow()
expect(delAsyncEntry('foo')(asyncState)).toEqual({})
expect(compose(delAsyncEntry('foo'))(asyncState)).toEqual({})
})
test('clearAsync', () => {
const asyncState = { foo: 'foo', bar: 'bar' }
expect(clearAsync()).toEqual({})
expect(clearAsync('foo')(asyncState)).toEqual({ foo: 'foo' })
expect(compose(clearAsync('foo'))(asyncState)).toEqual({ foo: 'foo' })
})