UNPKG

lore

Version:

Convention-driven framework for building React-Redux applications

112 lines (94 loc) 2.86 kB
var expect = require('chai').expect; var Lore = require('../../../src/app/index'); var loaderHelper = require('../../helpers/loaderHelper'); var nock = require('nock'); var _ = require('lodash'); var config = { hooks: require('../../defaultHooks') }; var API_ROOT = 'https://api.github.com/search'; var TEST_DELAY = 100; describe('lore#reducerBlueprints#pagination', function() { var lore = null; beforeEach(function() { lore = new Lore(); }); describe('when models exist', function() { beforeEach(function() { loaderHelper.stub({ config: { models: { apiRoot: API_ROOT } }, models: { repository: {} } }); nock(API_ROOT) .persist() .get('/repositories') .query({ q: 'stars:>1000', sort: 'stars', per_page: 5, page: '1' }) .reply(200, [ { id: 1, title: 'One' }, { id: 2, title: 'Two' }, { id: 3, title: 'Three' }, { id: 4, title: 'Four' }, { id: 5, title: 'Five' } ]); nock(API_ROOT) .persist() .get(`/repositories`) .query({ q: 'stars:>1000', sort: 'stars', per_page: 5, page: '2' }) .reply(200, [ { id: 6, title: 'Six' }, { id: 7, title: 'Seven' }, { id: 8, title: 'Eight' }, { id: 9, title: 'Nine' }, { id: 10, title: 'Ten' } ]); }); it("should create store states for .byId, .byCid, and. find", function(done) { lore.build(config); lore.actions.repository.find({ q: 'stars:>1000', sort: 'stars', per_page: 5, page: '1' }); setTimeout(function() { var state = lore.store.getState(); var reducer = state.repository.find; expect(_.keys(reducer).length).to.eql(1); var page1 = reducer['{"where":{"q":"stars:>1000","sort":"stars","per_page":5,"page":"1"},"pagination":{}}']; expect(page1.data.length).to.eql(5); lore.actions.repository.find({ q: 'stars:>1000', sort: 'stars', per_page: 5, page: '2' }); setTimeout(function() { var state = lore.store.getState(); var reducer = state.repository.find; expect(_.keys(reducer).length).to.eql(2); var page1 = reducer['{"where":{"q":"stars:>1000","sort":"stars","per_page":5,"page":"1"},"pagination":{}}']; var page2 = reducer['{"where":{"q":"stars:>1000","sort":"stars","per_page":5,"page":"2"},"pagination":{}}']; expect(page1.data.length).to.eql(5); expect(page2.data.length).to.eql(5); done(); }, TEST_DELAY); }, TEST_DELAY); }); }); });