• Stars
    star
    138
  • Rank 264,508 (Top 6 %)
  • Language Gherkin
  • License
    MIT License
  • Created over 10 years ago
  • Updated about 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Set of matchers and helpers to allow you test your APIs responses like a pro.

RSpec::JsonExpectations

Build Status

Set of matchers and helpers for RSpec 3 to allow you test your JSON API responses like a pro.

Installation

Add this line to your application's Gemfile:

gem 'rspec-json_expectations'

And then execute:

$ bundle

Or install it yourself as:

$ gem install rspec-json_expectations

Setup

Simply add this line at the top of your spec helper:

require "rspec/json_expectations"

Usage

Simple example:

require "spec_helper"

RSpec.describe "User API" do
  subject { api_get :user }

  it "has basic info about user" do
    expect(subject).to include_json(
      id: 25,
      email: "[email protected]",
      name: "John"
    )
  end

  it "has some additional info about user" do
    expect(subject).to include_json(
      premium: "gold",
      gamification_score: 79
    )
  end
end

And the output when I run it is:

FF

Failures:

  1) User API has basic info about user
     Failure/Error: expect(subject).to include_json(

                 json atom at path "id" is not equal to expected value:

                   expected: 25
                        got: 37

                 json atom at path "name" is not equal to expected value:

                   expected: "John"
                        got: "Smith J."

     # ./spec/user_api_spec.rb:18:in `block (2 levels) in <top (required)>'

  2) User API has some additional info about user
     Failure/Error: expect(subject).to include_json(

                 json atom at path "premium" is not equal to expected value:

                   expected: "gold"
                        got: "silver"

     # ./spec/user_api_spec.rb:26:in `block (2 levels) in <top (required)>'

Finished in 0.00102 seconds (files took 0.0853 seconds to load)
2 examples, 2 failures

Failed examples:

rspec ./spec/user_api_spec.rb:17 # User API has basic info about user
rspec ./spec/user_api_spec.rb:25 # User API has some additional info about user

For other features look into documentation: https://www.relishapp.com/waterlink/rspec-json-expectations/docs/json-expectations

Development

  • bundle install to install all dependencies.
  • bin/build to run the test suite

Contributing

  1. Fork it ( https://github.com/waterlink/rspec-json_expectations/fork )
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request

More Repositories

1

rack-reverse-proxy

A Reverse Proxy for Rack
Ruby
194
star
2

active_record.cr

Active Record pattern implementation for Crystal.
Crystal
191
star
3

Challenge-Build-Your-Own-Array-In-Js

This is a challenge that will allow you to practice your logical, analytical and problem-solving skills. Additionally, by the end of it you’ll have much better command of arrays in javascript.
JavaScript
177
star
4

spec2.cr

Enhanced `spec` testing library for [Crystal](http://crystal-lang.org/).
Crystal
103
star
5

mocks.cr

General purpose mocking library for Crystal.
Crystal
51
star
6

crystal-mysql

Basic mysql bindings for crystal.
Crystal
32
star
7

timecop.cr

Mock with `Time.now` with the power of time travel, time freeze and time scale.
Crystal
19
star
8

refactoring-koans-js

Refactoring Koans to help you learn to refactor code smells in javascript
JavaScript
17
star
9

query.cr

Query abstraction for Crystal Language. Used by active_record.cr library.
Crystal
13
star
10

quick.cr

QuickCheck implementation for Crystal Language
Crystal
11
star
11

kotlin-spring-boot-mvc-starter

This is a starter repository for work with Kotlin on Back-end using Spring Boot 2 MVC, JdbcTemplate, Thymeleaf, Emails with Thymeleaf templates, Spring Security, Feature/UI tests using Fluentlenium, Clean Controller->Service->Repository pattern that is a sweet spot as your starting architecture. Includes a small demo in its source code.
Kotlin
11
star
12

postgres_adapter.cr

Postgres adapter for [active_record.cr](https://github.com/waterlink/active_record.cr). Uses [crystal-pg](https://github.com/will/crystal-pg) driver.
Crystal
9
star
13

spec2-mocks.cr

This library connects spec2.cr and mocks.cr, effectively enabling 'have_received' expectation for spec2.
Crystal
8
star
14

expand.cr

Crystal tool for macro debugging. Allows one to expand macro recursively.
Shell
6
star
15

mysql_adapter.cr

Mysql adapter for [active_record.cr](https://github.com/waterlink/active_record.cr). Uses [crystal-mysql library](https://github.com/waterlink/crystal-mysql)
Crystal
6
star
16

timestamp.cr

Timestamps in crystal-lang. Adds `.from_timestamp` and `#to_timestamp` methods to `Time`
Crystal
5
star
17

quizzykotlin

An example application for my free Getting Started With Kotlin Tutorial
Kotlin
4
star
18

rebecca

Simple database convenience wrapper for Go language.
Go
4
star
19

BuildYourOwnTestingFrameworkPart1

This is a source code for the first part of "Build Your Own Testing Framework" series
JavaScript
4
star
20

singleton.cr

Singleton library for Crystal Language.
Crystal
3
star
21

devpoll

devpoll - small web application for making polls written in http://crystal-lang.org/ (Crystal lang)
Crystal
3
star
22

aop

Very thin AOP gem for Ruby
Ruby
3
star
23

four-cycles-of-tdd-lightning-talk

Slides for my lightning talk: 4 Cycles of Test-Driven Development
HTML
3
star
24

money_tracking

CLI tool for tracking your expenses.
Ruby
2
star
25

restricted_struct

RestrictedStruct gem: create Struct-s with private or protected attributes
Ruby
2
star
26

contracts-rspec

Plugin for contracts.ruby that fixes issues with rspec-mocks.
Ruby
2
star
27

openproject-docker

Let OpenProject run in a docker container
Shell
2
star
28

race-conditions-testing-example

Kotlin
2
star
29

plugged

Library for writing extendable CLI applications for Golang.
Go
2
star
30

tspp_project

C++
2
star
31

messenger-ES6

JavaScript
1
star
32

tdd-talk-ru

TDD talk (version in Russian, for Top-Engineer webinar). | Доклад о TDD, для вебинара Top-Engineer.
HTML
1
star
33

goactor

Thin Actor implementation in Golang
Go
1
star
34

confident.ruby

Be confident and narrative when writing code in ruby
Ruby
1
star
35

secrets

Simple bash script to manage your secrets with symmetric key.
Shell
1
star
36

es-snapshot

This is a small script to make an elasticsearch snapshot. Tested with TDD in Bash in a very esoteric way.
Shell
1
star
37

crystal-blog

Simple blog in crystal using frank and active_record.cr
Crystal
1
star
38

cars-droid

Clojure
1
star
39

ShellTools

My bash shell tools. Unit-tested.
Shell
1
star
40

likes

Give it a list of people and their likings and it will tell what else could these people like. Ruby gem.
Ruby
1
star
41

property-based-testing-talk

HTML
1
star
42

docker-elasticsearch-kubernetes-aws

Docker image for elasticsearch with support for Kubernetes and AWS cloud
Shell
1
star
43

namegen.cr

This library provides facilities for generating random names/nicknames. Written in Crystal-Lang.
Crystal
1
star
44

stomp

Example game engine in Ruby. Uses Component Entity System + World paradigm.
Ruby
1
star
45

elm-todo

Simple ToDo application written in Elm lang. No backend (yet?).
Elm
1
star
46

explorative-tdd-talk

CSS
1
star
47

gas-template

Google Apps Script template for more comfortable development on local machine. Plus CI/CD included.
Shell
1
star
48

cars_api

Ruby
1
star
49

strong_ruby

Just playing around with strong typing in Ruby
Ruby
1
star
50

contracts-non_intrusive

Less intrusive version of Contracts DSL. Allows to use static/dynamic code analysis tools.
Ruby
1
star
51

LoginSignupE2E

Example project for the blog post "Learning TDD with JS: End-to-End Testing". Implements Login and Signup for a web-application using TDD and E2E feature tests.
JavaScript
1
star
52

recorder

Daemon that records all incoming HTTP request and allow to fetch them and put expectations on them. Useful for CLI tools testing.
Go
1
star