Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Collection of Rspec matchers to test AR models that follows BDD.
branch: master

This branch is 70 commits behind bogdan:master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
lib
spec
.gitignore
Changelog.textile
Gemfile
Gemfile.lock
Rakefile
Readme.textile
VERSION
accept_values_for.gemspec

Readme.textile

Accept values for

Description

In order to spec ActiveRecord models. I decided to write a few custom matchers that makes the work match easier:

Matchers

  • accept_values_for
  • discover

Accept values for

Rpec matcher to test the validation

describe User do

  subject { User.new(@valid_attributes)}
  


  it { should accept_values_for(:email, "john@example.com", "lambda@gusiev.com") }
  it { should_not accept_values_for(:email, "invalid", nil, "a@b", "john@.com") }

end

Discovery matcher

Rspec matcher to test named scopes

describe "#by_category_id named scope" do
  let(:given_category) do 
    Factory.create(:given_category)
  end


  let(:product_in_given_category) do
    Factory.create(
      :product,
      :categories => [category]
    )
  end

  let(:product_not_in_given_category) do
    Factory.create(
      :product,
      :categories => [Factory.create(:category)]
    )
  end

  # This might be tricky to redefine subject as the finder result
  # but in this way we can delegate the matcher to subject and 
  # avoid writing test descriptions.
  subject { described_class.by_category_id(given_category.id) }

  it { should discover(product_in_given_category) }
  it { should_not discover(product_not_in_given_category) }

end

Dependencies

  • ActiveRecord
  • Rspec

Install

Command line:

[sudo] gem install accept_values_for

spec_helper.rb:

require ‘accept_values_for’

require ‘discover’

Something went wrong with that request. Please try again.