1.1.3 • Published 9 months ago

chai-like v1.1.3

Weekly downloads
29,948
License
MIT
Repository
github
Last release
9 months ago

Build status Coverage Status npm/chai-like version license

chai-like

A JSON matcher for chai. This is really useful when you are testing API and want to ignore some attributes like: updatedAt, createdAt, id.

Install

Install with npm

npm install --save-dev chai-like

Assertions

like(value)

Compare two JSON and ignore some keys based on expectation.

var object = {
  id: 1,
  name: 'test',
  updatedAt: 'now'
};
object.should.like({
  name: 'test'
});
object.should.not.like({
  name: 'test1'
});

Deeply compare.

var object = {
  id: 1,
  name: 'test',
  product: {
    id: 1,
    name: 'product'
  },
  updatedAt: 'now'
};
object.should.like({
  name: 'test',
  product: {
    name: 'product'
  }
});
object.should.not.like({
  name: 'test',
  product: {
    name: 'product1'
  }
});

Compare array.

var array = [{
  id: 1,
  name: 'test',
  product: {
    id: 1,
    name: 'product'
  },
  updatedAt: 'now'
}];
array.should.like([{
  name: 'test',
  product: {
    name: 'product'
  }
}]);
array.should.not.like([{
  name: 'test',
  product: {
    name: 'product1'
  }
}]);

Compare JSON with an array sub node.

var object = {
  id: 1,
  name: 'test',
  products: [{
    id: 1,
    name: 'product'
  }],
  updatedAt: 'now'
};
object.should.like({
  name: 'test',
  products: [{
    name: 'product'
  }]
});
object.should.not.like({
  name: 'test',
  products: [{
    name: 'product1'
  }]
});

Plugins

You can extend chai-like with plugins as below format:

var chai = require('chai');
var like = require('chai-like');

var numberStringPlugin = {
  match: function(object) {
    return !isNaN(Number(object));
  },
  assert: function(object, expected) {
    return object === Number(expected);
  }
};
like.extend(numberStringPlugin);

chai.use(like);

Then we can assert as below:

  var object = {
    number: 123
  };
  object.should.like({
    number: '123'
  });
  object.should.not.like({
    number: 'not a number'
  });

Plugin for testing strings with RegExp

If some strings require fuzzy matching we can do this with a plugin as follows:

var chai = require('chai');
var like = require('chai-like');

var regexPlugin = {
  match: function(object, expected) {
    return typeof object === 'string' && expected instanceof RegExp;
  },
  assert: function(object, expected) {
    return expected.test(object);
  }
};

like.extend(regexPlugin);

chai.use(like);

Then we can assert as below:

var object = {
  text: 'the quick brown fox jumps over the lazy dog'
};
object.should.like({
  text: /.* jumps over .*/
});
object.should.not.like({
  text: /\d/
});
1.1.3

9 months ago

1.1.2

9 months ago

1.1.1

7 years ago

1.0.1

7 years ago

1.0.0

7 years ago

0.2.14

8 years ago

0.2.13

8 years ago

0.2.12

8 years ago

0.2.11

8 years ago

0.2.10

8 years ago

0.1.10

9 years ago

0.1.9

10 years ago

0.1.8

10 years ago

0.1.7

10 years ago

0.1.6

10 years ago

0.0.6

10 years ago

0.0.5

10 years ago

0.0.4

10 years ago

0.0.3

10 years ago

0.0.2

10 years ago

0.0.1

10 years ago