Giter Club home page Giter Club logo

node-fetch-response-matchers's Introduction

node-fetch-response-matchers

Build Status

Chai plugin with matchers for node-fetch promise response. It helps the tests to be more declarative.

TL;DR

  • This lib gives you a declarative way to assert fetch response, Also it hides the promises and their callbacks noise:
   it('some-test', function(){
     return expect(fetch('http://localhost/')).to.be.successful()
                            .and.to.haveBodyText('foo');

   });
  • If you are not using this lib it becomes very verbose:
   it('some-test', function(done){
      fetch('http://localhost/')
         .then(res => {
            expect(res.status).to.equal(200);
            return res.text();
         }).then(text => {
            expect(text).to.equal('foo');
            done();
         })
   });

Install (for dev only - used by tests)

$ npm install --save-dev node-fetch-response-matchers

Usage example

const nodeFetchMatchers = require('node-fetch-response-matchers');
const fetch = require('node-fetch');
const chai = require('chai');

chai.use(nodeFetchMatchers);

describe('test suite', function(){
    it('http success test', function(){
        return expect(fetch('http://localhost/')).to.be.successful();
    });
    it('and', function(){
          return expect(fetch('http://localhost/')).to.be.successful()
                                                    .and.haveBodyText('foo');
    });
});

Chai native plugin

You can all use chai "not"

   it('not', function(){
      return expect(fetch('http://localhost/')).to.not.be.successful();
   });

Status matchers

   it('http success test', function(){
      return expect(fetch('http://localhost/')).to.be.successful();
   });
   it('http status assert', function(){
        return expect(fetch('http://localhost/')).to.haveStatus(500);
   });

Full status matchers list

API function params description
successful() () Assert that the status is 200 OK
created() () Assert that the status is 201
unauthorized() () Assert that the status is 401
rejected() () Assert that the status is 403
notFound() () Assert that the status is 404
serverError() () Assert that the status is 500
serviceUnAvailable() () Assert that the status is 503
haveStatus() (status) Assert that the status is provided number argument

Body matchers

   it('have body object', () => {
     return expect(fetch('http://localhost/').to.haveBodyObject({foo: 'bar'});
   });

Full body matchers list

API function params description
haveBodyObject() (obj) Assert equal provided object
haveBodyText() (text) Assert equal provided string text
haveBodyRegexpMatch() (regexp) Assert match body on regular expression
haveBodyThat() (predicate(text)) Assert match body on provided function predicate on the text

Header matchers

   it('have header', () => {
     return expect(fetch('http://localhost/').to.haveHeader('connection', 'close');
   });

Headers matchers list

API function params description
haveHeader() (name, value) Assert that response contains header by provided name and value
headerExists() (name) Assert that response contains header by provided name
haveHeaderThat() (name, predicate(value)) Assert that header with given name have true on the value for a given predicate
haveHeaders() (headersMap) Assert that given key-value headers are exists in headers response

Cookie matchers

   it('have cookie', () => {
     return expect(fetch('http://localhost/').to.haveCookie('foo', 'bar');
   });

Cookie matchers list

API function params description
haveCookieByName() (name) Assert that cookie by name is written to the response
haveCookie() (name, value) Assert that cookie by name and value is written to the response
haveCookieThat() (name, predicate(cookie)) Assert that cookie by name and match given predicate on cookie properties

node-fetch-response-matchers's People

Contributors

kfiron avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.