Chai JS Plugin for testing if an array has sorted values (strings, numbers, booleans). Very helpful when writing tests for features that implement Array.prototype.sort()
Install via npm:
npm install chai-sortedUse this plugin just like other Chai plugins:
var chai = require("chai"),
expect = chai.expect; // preference and tested with expect
chai.use(require("chai-sorted"));There is no planned support for keeping a browser build in this repository, so please consider Webpack or similar tool.
If you do want Browser installation support, please open an issue.
Test for ascending sort order of array
expect(["a","b"]).to.be.sorted()
// or
expect(["a","b"]).to.be.sorted({descending: false})Test for descending sort order of array
expect(["b","apples"]).to.be.sorted({descending: true})Allows for sorting by an attribute
Test for ascending sort order of array by name attribute
expect([{id:2,name:"apple"},{id:3,name:"bat"}]).to.be.sortedBy("name")Test for descending sort order of array by name attribute
expect([{id:2,name:"bat"},{id:3,name:"apples"}]).to.be.sortedBy("name", {descending: true})Alternate of sortedBy but more explicit
Test for ascending sort order of array by name attribute
expect([{id:2,name:"apple"},{id:3,name:"bat"}]).to.be.ascendingBy("name")or:
// ignore case
expect([{id:2,name:"bat"},{id:3,name:"Apples"}]).to.be.descendingBy("name", {
ignoreCase: true
})Alternate of sortedBy but does not require passing true as a second parameter to sortedBy. It is the same as doing sortBy("name",true)
Test for descending sort order of array by name attribute
expect([{id:2,name:"bat"},{id:3,name:"apples"}]).to.be.descendingBy("name")or:
// ignore case
expect([{id:2,name:"bat"},{id:3,name:"Apples"}]).to.be.descendingBy("name", {
ignoreCase: true
})Test for ascending sort order of array using a property syntax
expect(["a","b"]).to.be.ascendingTest for descending sort order of array using a property syntax
expect(["b","apples"]).to.be.descendingFor additional usage or more help, please see the tests under ./test/