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