Skip to content

hurrymaplelad/chaid

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

About

Id equality assertions for chai

Resources

Stars

Watchers

Forks

Packages

No packages published