Skip to content

Commit

Permalink
#16 Respect initial page order
Browse files Browse the repository at this point in the history
  • Loading branch information
tormozz48 committed Feb 11, 2016
1 parent bf74002 commit 09b0c78
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 3 deletions.
26 changes: 23 additions & 3 deletions src/model.js
Original file line number Diff line number Diff line change
Expand Up @@ -28,14 +28,25 @@ export default class Model {

/**
* Generates map with page urls as keys and page object as values
* @param {Object[]} arr - array of page objects
* @param {Object[]} pages - array of page objects
* @returns {Object}
* @private
*/
static _generateUrlPageMap(pages) {
return pages.reduce((prev, page) => {
prev[page.url] = page;
return prev;
return _.set(prev, page.url, page);
}, {});
}

/**
* Generates map with page urls as keys and page order indexes as values
* @param {Object[]} pages - array of page objects
* @returns {Object}
* @private
*/
static _generateUrlOrderMap(pages) {
return pages.reduce((prev, page, index) => {
return _.set(prev, page.url, index);
}, {});
}

Expand Down Expand Up @@ -181,6 +192,15 @@ export default class Model {
return _.merge(oldModel[url], newModel[url]);
}, this))
);

// Restore original pages order in current model
const orderMap = this.constructor._generateUrlOrderMap(currentModel);
this.setPages(
this.getPages().sort((a, b) => {
return orderMap[a.url] - orderMap[b.url];
})
);

return this;
}

Expand Down
7 changes: 7 additions & 0 deletions test/src/model.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,13 @@ describe('Model', function() {
model.merge(oldModel, newModel);
model.getChanges().removed.should.eql([{type: 'page', url: '/url2'}]);
});

it('should respect initial pages order', function() {
model.merge(oldModel, newModel);
model.getPages()[0].url.should.equal('/url1');
model.getPages()[1].url.should.equal('/url3');
model.getPages()[2].url.should.equal('/url4');
});
});
});

Expand Down

0 comments on commit 09b0c78

Please sign in to comment.