chaid

1.0.2 • Public • Published

chaId

Id equality assertions for chai.

NPM version Build Status

Ids come in lots of flavors. Sometimes they're strings, sometimes objects. Sometimes you'll find them at .id, other times at ._id. ChaId lets you test for equality by comparing string representations of ids, with minimal fretting about initial representation or location:

{_id: 'foo'}.should.have.id('foo')
'foo'.should.id({id: 'foo'})
{id: 'foo', bar: 2}.should.have.same.id({id: 'foo', baz: 3})
{_id: 'foo'}.should.not.have.same.id({_id: 'bar'})
{_id: 'foo'}.should.have.same.id({id: {toString: function() { return 'foo'}})
{_id: 'foo'}.should.have.id(new ObjectId('foo'))

You can also compare lists of objects by id:

[{id:'a'}, {id:'b'}].should.have.ids ['a', 'b']
['a', 'b'].should.be.ids ['a', 'b']
[{id:'a'}, {id:'b'}].should.have.same.ids [{id:'a'}, {id:'b'}]
[{id:'a'}, {id:'b'}].should.not.have.same.ids [{id:'b'}, {id:'a'}]

By default, order matters. To ignore order, chain unordered:

[{id:'a'}, {id:'b'}].should.have.same.unordered.ids [{id:'b'}, {id:'a'}]

You can test for a subset of ids by chaining include or contain:

[{id:'a'}, {id:'b'}].should.include.same.ids [{id:'a'}]

Works well with MongoDB ObjectIds:

doc.should.have.id(new ObjectId())
doc.should.have.same.id(otherDoc)
(new ObjectId()).should.id(doc)

Installation

This is a plugin for the Chai Assertion Library. Install via npm.

npm install chaid

Plugin

Use this plugin as you would all other Chai plugins.

var chai = require('chai')
  , chaid = require('chaid');
 
chai.use(chaid);

Dependents (0)

Package Sidebar

Install

npm i chaid

Weekly Downloads

1,446

Version

1.0.2

License

MIT

Last publish

Collaborators

  • hurrymaplelad