import { fill } from 'lodash'; import { EntitiesManager as EM } from '../../src/index'; import configureEntitiesManager from '../utils/configureEntitiesManager'; import configureStore from '../utils/configureStore'; import deleteCollection from '../utils/deleteCollection'; let em = null; let store = null; const initializeEmStore = () => { em = configureEntitiesManager({ item: { createdAt: EM.createdAt(), updatedAt: EM.updatedAt(), value: EM.required() } }); store = configureStore({}, { entities: em.getEntitiesReducer() }); }; describe('basic queries)', () => { const itemsNum = 10; beforeAll(() => { initializeEmStore(); }); describe('adding items', () => { it('should resolve with id(s)', () => { const addingParentPromises = []; for (let i = 0; i < itemsNum; i += 1) { addingParentPromises.push(store.dispatch(em.entity('item').addItem({ value: i }))); } return Promise.all(addingParentPromises) .then((results) => { expect(results).toEqual(fill(Array(10), jasmine.any(String))); }); }, 150000); }); describe('query items by values', () => { let queryMore = null; let items = []; beforeAll(() => { initializeEmStore(); queryMore = store.dispatch( em.entity('item').queryList( 'items', [['value', '>', 3]], 'value' ) ); }); it( 'should query items properly', () => queryMore(999) .then((result) => { items = em.entity('item').getAllItemList()(store.getState()); console.log('items:', items); expect(items).toEqual(fill(Array(6), jasmine.any(Object))); expect(result).toEqual(items); }), 150000 ); }); describe('Can queryMore with "FROM_FIRST" option at first time with another queryName', () => { let queryMore = null; let items = []; beforeAll(() => { queryMore = store.dispatch( em.entity('item').queryList( 'withFromFirst', [['value', '>', 6]], 'value' ) ); }); it( 'should query items properly', () => queryMore(999, 'FROM_FIRST') .then((result) => { items = em.entity('item').getAllItemList()(store.getState()); expect(items).toEqual(fill(Array(6), jasmine.any(Object))); expect(result).toEqual(fill(Array(3), jasmine.any(Object))); }), 150000 ); }); afterAll(() => Promise.all([ deleteCollection('item') ]).then((results) => { console.log('deleted results:', results); }), 1000000); });