Zoanthids are a kind of coral that is very robust.
Zoanthid is a library that interfaces with Rails and RSpec to help you write expressive tests for your HAL API. It uses Cetacean and Faraday to make the requests and deal with the responses. It's not configurable at this juncture.
Usage
This will most likely change, but here's the idea so far:
Your spec/spec_helper.rb
should have something like this:
require 'zoanthid/rspec'
Zoanthid.app = Rails.application
Then if you put spec files in spec/api/
, or label them with type: :api
and
you'll get some helpers like this:
describe "listing posts" do
before do
get :root
get expand_link(:posts)
end
it "shows the total" do
expect(document['total']).to eq(25)
end
it "has a next link" do
expect(expand_uri(:next)).to eq('/posts?page=2')
end
it "can jump to any page" do
expect(expand_uri(:jump_to_page, page: 99)).to eq('/posts?page=99')
end
it "embeds the posts" do
expect(document.embedded(:posts).count).to eq(25)
end
end
The Future?
Possibly in the future, there might be nice matchers. I plan to add features slowly, though, only in the face of an actual need.
Contributing
Help is gladly welcomed. If you have a feature you'd like to add, it's much more likely to get in (or get in faster) the closer you stick to these steps:
- Open an Issue to talk about it. We can discuss whether it's the right direction or maybe help track down a bug, etc.
- Fork the project, and make a branch to work on your feature/fix. Master is where you'll want to start from.
- Turn the Issue into a Pull Request. There are several ways to do this, but hub is probably the easiest.
- Make sure your Pull Request includes tests.
- Bonus points if your Pull Request updates
CHANGES.md
to include a summary of your changes and your name like the other entries. If the last entry is the last release, add a new## Unreleased
heading at the top.
If you don't know how to fix something, even just a Pull Request that includes a failing test can be helpful. If in doubt, make an Issue to discuss.