import { EntitiesManager as EM } from './EntitiesManager'; import configureEntitiesManager from '../test/utils/configureEntitiesManager'; import configureStore from '../test/utils/configureStore'; import Operation from './Operation'; const em = configureEntitiesManager({ category: { createdAt: EM.createdAt(), name: EM.required(), items: EM.duplicateChildren('item', item => item, 0) }, item: { categoryIds: EM.parentIds('category'), createdAt: EM.createdAt(), price: EM.required() }, order: { createdAt: EM.createdAt(), items: EM.parentIds('item') } }); const store = configureStore({}, { entities: em.getEntitiesReducer() }); describe('EntityManager', () => { describe('._getBakedEntityHandlers', () => { let bakedOperations = null; beforeAll(() => { const preOperation = new Operation( 'ADD', { entityType: 'item', id: 'ddd' }, { categoryIds: { category1: true, category2: true }, createdAt: 365, price: 3000 } ); bakedOperations = em.entity('item')._getBakedEntityHandlers(preOperation); }); it('should convert updatingParentEntityType into beforeParentItemSelectors & afterParentItemSelectors', () => { const lastBakedOperation = bakedOperations[bakedOperations.length - 1]; expect(lastBakedOperation.afterParentItemSelectors[0]).toEqual({ entityType: 'category', id: 'category1' }); expect(lastBakedOperation.afterParentItemSelectors[1]).toEqual({ entityType: 'category', id: 'category2' }); }); it('can generate document id', () => { expect(em.entity('item').generateId()).toEqual(jasmine.any(String)); }); }); });