node package manager
Easy sharing. Manage teams and permissions with one click. Create a free org »

chai-stream

chai-stream

Build Status npm version

Extends Chai with assertions about streams.

Install

Node.js

npm install --save-dev chai-stream

AMD

define(function(require, exports, module) {
  var chai = require('chai');
  var chaiStream = require('chai-stream');
  
  chai.use(chaiStream);
});

script tag

<script src="chai.js"></script>
<script src="chai-stream.js"></script>

Usage

BDD-Style

var chai = require('chai');
var chaiStream = require('chai-stream');
chai.use(chaiStream);
 
var expect = chai.expect;
 
describe('getMyStream', function() {
  it('should return a readable stream', function() {
    var stream = getMyStream();
 
    expect(stream).to.be.a.ReadableStream;
  });
 
  it('should return a stream that will end', function() {
    var stream = getMyStream();
 
    return expect(stream).to.end;
  });
});

expect(obj).to.be.a.Stream

Type: function(any)

This assertion check that the specified object have a pipe method. So, it pass streams that not inherit Node's Stream.

obj

Type: any

expect(obj).to.be.a.ReadableStream

Type: function(any)

This assertion check that the specified object have a pipe and resume method. So, it pass streams that not inherit Node's Stream.

obj

Type: any

expect(obj).to.be.a.WritableStream

Type: function(any)

This assertion check that the specified object have a pipe and write method. So, it pass streams that not inherit Node's Stream.

obj

Type: any

expect(obj).to.end

Type: function(any): Promise<void>

Returns a promise that fulfilled when a end event is fired. And this function force the stream to read (like piping with WritableStream).

obj

Type: any

waitUntilStreamEnd listen end or error event of the stream.

TDD-Style

var chai = require('chai');
var chaiStream = require('chai-stream');
chai.use(chaiStream);
 
var assert = chai.assert;
 
describe('getMyStream', function() {
  it('should return a readable stream', function() {
    var stream = getMyStream();
 
    assert.isReadableStream(stream);
  });
 
  it('should return a stream that will end', function() {
    var stream = getMyStream();
 
    return assert.streamWillEnd(stream);
  });
});

assert.isStream(obj)

Type: function(any)

This assertion check that the specified object have a pipe method. So, it pass streams that not inherit Node's Stream.

obj

Type: any

assert.isReadableStream(obj)

Type: function(any)

This assertion check that the specified object have a pipe and resume method. So, it pass streams that not inherit Node's Stream.

obj

Type: any

assert.isWritableStream(obj)

Type: function(any)

This assertion check that the specified object have a pipe and write method. So, it pass streams that not inherit Node's Stream.

obj

Type: any

assert.streamWillEnd(obj)

Type: function(any): Promise<void>

Returns a promise that fulfilled when a end event is fired. And this function force the stream to read (like piping with WritableStream).

obj

Type: any

waitUntilStreamEnd listen end or error event of the stream.

License

MIT (c) Kuniwak