chaid
v1.0.2
Published
Id equality assertions for chai
Downloads
15,457
Maintainers
Readme
chaId
Id equality assertions for chai.
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);