Chai Sorted
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()
Installation
Node.js
Install via npm:
npm install chai-sorted
Use this plugin just like other Chai plugins:
var chai = require("chai"),
expect = chai.expect; // preference and tested with expect
chai.use(require("chai-sorted"));
In the browser
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.
API Usage
.sorted
method
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})
.sortedBy
method
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})
.ascendingBy
method
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")
.descendingBy
method
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")
ascending
property
Test for ascending sort order of array using a property syntax
expect(["a","b"]).to.be.ascending
descending
property
Test for descending sort order of array using a property syntax
expect(["b","apples"]).to.be.descending
Additional Usage
For additional usage or more help, please see the tests under ./test/