chaid

Id equality assertions for chai

  • chaid

Downloads in past

Stats

StarsIssuesVersionUpdatedCreatedSize
chaid
1.0.27 years ago8 years agoMinified + gzip package size for chaid in KB

Readme

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