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})
|
|
})
|
|
);
|
|
});
|
|
});
|