chai-as-promised-also-chain

Adding .also chain in base library of chai-as-promised

Downloads in past

Stats

StarsIssuesVersionUpdatedCreatedSize
chai-as-promised-also-chain
1.0.27 years ago7 years agoMinified + gzip package size for chai-as-promised-also-chain in KB

Readme

<img src="https://promises-aplus.github.io/promises-spec/assets/logo-small.png"
     align="right" valign="top" alt="Promises/A+ logo" />
Chain-able Chai promised test case method
Instead of manually writing many test cases for a promise
return Promise.all([
  doSomethingAsync().should.eventually.have.deep.property('foo'),
  doSomethingAsync().should.eventually.have.deep.property('bar'),
  doSomethingAsync().should.eventually.have.deep.property('foobar')
])

you can write code that expresses what you really mean:
return doSomethingAsync().should
  .eventually.have.deep.property('foo')
  .also.have.deep.property('bar')
  .also.have.deep.property('foobar')
  .exec()

In case .also is same as .eventually and .to.eventually, after all you must call .exec() at the end of chain

Usage

Init test case

var chai = require('chai');
var chaiAsPromised = require('chai-as-promised')
var alsoChain = require('chai-as-promised-also-chain')

chai.use(chaiAsPromised)
chai.use(alsoChain)

var expect = chai.expect;

// OR

var should = chai.should();

should/expect Interface

expect(Promise.resolve({name: { first: 'maung', last: 'hla' }, age: 20}))
  .to.eventually
    .have.deep.property('name.first')
      .that.equal('maung')
  .also
    .have.all.keys(['name', 'age'])
  .exec()

Promise.resolve({name: { first: 'maung', last: 'hla' }, age: 20}))
  .should.eventually
    .have.deep.property('name.first')
      .that.equal('maung')
  .also
    .have.all.keys(['name', 'age'])
  .exec()

notify() is overwrite and that method make assertions for all chain

promise.should
  .eventually.have.deep.property('name')
  .also.contain.all.keys(['name', 'age'])
  .notify(done) // this assertion is call for all promise in chain