55 lines
1.5 KiB
JavaScript
55 lines
1.5 KiB
JavaScript
import expect from 'expect';
|
|
import { Map, OrderedMap, fromJS } from 'immutable';
|
|
import { configLoaded } from '../../src/actions/config';
|
|
import { entriesLoading, entriesLoaded } from '../../src/actions/entries';
|
|
import { collections } from '../../src/reducers/collections';
|
|
|
|
describe('collections', () => {
|
|
it('should handle an empty state', () => {
|
|
expect(
|
|
collections(undefined, {})
|
|
).toEqual(
|
|
null
|
|
);
|
|
});
|
|
|
|
it('should load the collections from the config', () => {
|
|
expect(
|
|
collections(undefined, configLoaded({ collections: [
|
|
{ name: 'posts', folder: '_posts', fields: [{ name: 'title', widget: 'string' }] }
|
|
] }))
|
|
).toEqual(
|
|
OrderedMap({
|
|
posts: fromJS({ name: 'posts', folder: '_posts', fields: [{ name: 'title', widget: 'string' }] })
|
|
})
|
|
);
|
|
});
|
|
|
|
it('should mark entries as loading', () => {
|
|
const state = OrderedMap({
|
|
'posts': Map({ name: 'posts' })
|
|
});
|
|
expect(
|
|
collections(state, entriesLoading(Map({ name: 'posts' })))
|
|
).toEqual(
|
|
OrderedMap({
|
|
'posts': Map({ name: 'posts', isFetching: true })
|
|
})
|
|
);
|
|
});
|
|
|
|
it('should handle loaded entries', () => {
|
|
const state = OrderedMap({
|
|
'posts': Map({ name: 'posts' })
|
|
});
|
|
const entries = [{ slug: 'a', path: '' }, { slug: 'b', title: 'B' }];
|
|
expect(
|
|
collections(state, entriesLoaded(Map({ name: 'posts' }), entries))
|
|
).toEqual(
|
|
OrderedMap({
|
|
'posts': fromJS({ name: 'posts', entries: entries })
|
|
})
|
|
);
|
|
});
|
|
});
|