suit

A set of rspec scope matchers.

Matchers for common controller methods:

describe UsersController, "on GET to show with a valid id" do

 it { should  :index, :get }
 it { should require_role('admin', :index, :get) }
end

Matchers for common active record scopes:

  scope :by_title, order("title ASC")
  scope :by_name, order("name ASC")
  scope :by_newest, order("created_at DESC")
  scope :by_oldest, order("created_at ASC")
  scope :by_latest, order("updated_at DESC")
  scope :newer_than, lambda { |*args| where("created_at > ?", args.first || DateTime.now) }
  scope :older_than, lambda { |*args| where("created_at < ?", args.first || 1.day.ago.to_s(:db)) }
  scope :is_public, where(["is_public = ?", true])
  scope :created_by, lambda { |creator| where("creator_id = ? AND creator_type = ?", creator.id, creator.class.to_s) } }
  scope :sorted, order("sort ASC")
  scope :sorted_id, order("id ASC")

These matchers will test common scopes used in active record models:

  describe User do
    it { should scope_by_title }
    it { should scope_by_name }
    it { should scope_by_latest }
    it { should scope_by_newest }
    it { should scope_by_oldest }

    it { should scope_newer_than }
    it { should scope_older_than }

    it { should scope_is_public }

    it { should scope_created_by }

    it { should sanitize :title }
    it { should scope_sorted }
    it { should scope_sorted_id }
  end

Copyright © 2012 Tatemae.com. See LICENSE.txt for further details.