New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

wt-grape-rspec

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

wt-grape-rspec

  • 0.0.5
  • Rubygems
  • Socket score

Version published
Maintainers
1
Created
Source

Rspec::Grape

Originally a fork of https://github.com/ktimothy/rspec-grape.

This gem is a set of spec helpers, that will help to test Grape APIs easily. The usual approach to test apis, as official documentation shows, is:

context 'GET /api/v1/test' do
  it 'returns 200' do
    get '/api/v1/test'
    expect(last_response.status).to eq(200)
  end
end

Here you describe context as GET /api/v1/test, then you have to repeat url and method in example: get '/api/v1/test'. But what if you don't have to?

Installation

Add this line to your application's Gemfile:

gem 'rspec-grape'

And then execute:

$ bundle

Or install it yourself as:

$ gem install rspec-grape

Usage

Conventions

Gem's behaviour is based on some conventions:

  • described_class should point to your API class
  • examples should be grouped by endpoints
  • group of endpoint specs shoud be described as 'HTTP_METHOD /api/path'

In order to have helpers available in examples, you need to add type: :api metadata:

describe MyAPI, type: :api do

Or use a symbol:

describe MyAPI, :api do

Basic usage

This gem provides the call_api helper method. It automatically reads endpoint url and method from context description, allowing you to avoid duplication and write a shorter spec:

context 'GET /api/v1/test' do
  it 'returns 200' do
    expect(call_api.status).to eq(200)
  end
end

Passing request params

Params can be passed to call_api method:

call_api({foo: :bar})

Stubbing API helpers

rspec-grape provides two methods to stub API helpers: expect_endpoint_to and expect_endpoint_not_to. You can easily write:

expect_endpoint_to receive(:help_me)
expect_endpoint_not_to receive(:dont_help)

Note that under the hood those methods use Grape::Endpoint.before_each, as suggested by documentation. Thanks to Jon Rowe for the idea.

Inline parameters

When you define some parameters in url like

get '/url/with/:param'

you can use parameterized_api_url helper to generate full url. Pass parameters as hash. The result will be url with parameter names substituted with actual values:

parameterized_api_url(param: 'defined') # '/url/with/defined'

If some parameters are not set, method will raise RSpec::Grape::UrlNotSetException. Note that call_api helper will use parameterized_url to generate url to be called.

Nested descriptions

You may need to define nested descriptions of endpoint when you are using inline url parameters:

describe 'GET /inline/:param' do
  describe 'GET /inline/false' do
    ...
  end

  describe 'GET /inline/true' do
    ...
  end
end

In this case api_url will point to inner description, /inline/false and /inline/true consequently. If you set all inline parameters in description, there is no need to pass parameters to call_api.

Additional spec helpers

It is also possible to use two methods in your specs: api_url and api_method. The former returns url from spec description, while the latter returns http method.

You can always use them, as call_api methods does:

send(api_method, api_url)

Note that you do not need to include Rack::Test::Methods as they are already included by gem.

Development

After checking out the repo, run bin/setup to install dependencies. Then, run rake spec 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/ktimothy/rspec-grape.

License

The gem is available as open source under the terms of the MIT License.

FAQs

Package last updated on 01 Jul 2024

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc