Skip to content

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()

License

Notifications You must be signed in to change notification settings

SirkoS/chai-sorted

 
 

Repository files navigation

npm Version License Build Status Code Climate devDependency Status peerDependency Status

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})

Test for descending sort order of array using a function to access the name attribute

expect([{id:2,name:"bat"},{id:3,name:"apples"}]).to.be.sortedBy((item) => item.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")

Test for ascending sort order of array using a function to access the name attribute

expect([{id:2,name:"apple"},{id:3,name:"bat"}]).to.be.ascendingBy((item) => item.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")

Test for descending sort order of array using a function to access the name attribute

expect([{id:2,name:"bat"},{id:3,name:"apples"}]).to.be.descendingBy((item) => item.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/

About

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()

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 100.0%