Coder Social home page Coder Social logo

rspec-hash_matchers's Introduction

RSpec::HashMatchers

This gem is an extension to RSpec that allows additional matchers for ruby hashes.

Especially useful when testing API responses.

Installation

Add this line to your application's Gemfile:

gem 'rspec-hash_matchers'

And then execute:

$ bundle

Or install it yourself as:

$ gem install rspec-hash_matchers

Usage

Contain exactly keys (in array)

Like RSpec's contain_exactly, but for hash and array of hashes.

  • Order never matters
  • Allows any mix of keys and keys with values (make sure you put the keys with values last)
  • Must contain all entries (hash keys or array entries), nothing more and nothing less
specify do
  # Hash
  expect(a: 1, b: 2, c: 3, d: 4).to contain_exactly_keys :d, :b, c: 3, a: 1
  # Array of hashes
  expect([
    { a: 1, b: 2, c: 3 },
    { d: 4, e: 5, f: 6 },
    { g: 7, h: 8, i: 9 },
  ]).to contain_exactly_keys_in_array(
    [:e, f: 6, d: 4],     # second line
    [:a, :b, :c],         # first line
    { i: 9, h: 8, g: 7 }, # third line
  )
end

See the spec for all examples of matches and mismatches.

Include keys (in array)

Like RSpec's include, but for hash and array of hashes.

  • Order never matters
  • Allows any mix of keys and keys with values (make sure you put the keys with values last)
  • Must contain exact array entries, but allows additional hash keys
specify do
  # Hash
  expect(a: 1, b: 2, c: 3, d: 4).to include_keys :d, c: 3
  # Array of hashes
  expect([
    { a: 1, b: 2, c: 3 },
    { d: 4, e: 5, f: 6 },
    { g: 7, h: 8, i: 9 },
  ]).to include_keys_in_array(
    [f: 6],     # second line
    [:a, :c],         # first line
    { i: 9, h: 8 }, # third line
  )
end

See the spec for all examples of matches and mismatches.

Development

After checking out the repo, run bin/setup to install dependencies. Then, run rake rspec to run the tests. You can also run bin/console for an interactive prompt that will allow you to experiment.

To install this gem onto your local machine, run bundle exec rake install. To release a new version, update the version number in version.rb, and then run bundle exec rake release, which will create a git tag for the version, push git commits and tags, and push the .gem file to rubygems.org.

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/odedniv/rspec-hash_matchers. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the Contributor Covenant code of conduct.

rspec-hash_matchers's People

Contributors

odedniv avatar

Watchers

 avatar  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.