Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
branch: master
Fetching contributors…

Octocat-spinner-32-eaf2f5

Cannot retrieve contributors at this time

file 164 lines (102 sloc) 5.47 kb
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163
= Remarkable

You can read this file nicely formatted at the Rubyforge project page:

  http://remarkable.rubyforge.org/

== Description

Remarkable is a framework for rspec matchers that supports macros and I18n. It's
constituted of three pieces:

* Remarkable: the framework with helpers, DSL, I18n and rspec features;

* Remarkable ActiveModel: a collection of matchers for ActiveModel compliant models. It
  currently supports all ActiveModel validations. Future plan include testing for
  ActiveModel API compliance and ActiveModel serialization.

* Remarkable ActiveRecord: a collection of matchers for ActiveRecord. It
  supports all ActiveRecord validations, associations and some extra matchers.

* Remarkable Rails: a collection of matchers for ActionController. It also
  includes MacroStubs, which is a clean DSL for stubbing your controller methods.

  NOTE: Remarkable Rails is currently not available for version 4.0.0.alpha1
  We are thinking of breaking this up into Remarkable Rack, and Remarkable ActionController
  gems, along the lines of splitting off ActiveModel macros.

In each folder above, you can find a README more detailed description of each piece.

== Why use Remarkable for Rails?

* The only one with matchers for all ActiveRecord validations, with support to
  all options (except :on and the option :with in validates_format_of);

* Matchers for all ActiveRecord associations. The only one which supports all
  these options:

    :through, :source, :source_type, :class_name, :foreign_key, :dependent,
    :join_table, :uniq, :readonly, :validate, :autosave, :counter_cache, :polymorphic

  Plus Arel scopes:

    :select, :where, :include, :group, :having, :order, :limit, :offset

  Besides in Remarkable 4.0 matchers became much smarter. Whenever :join_table
  or :through is given as option, it checks if the given table exists. Whenever
  :foreign_key or :counter_cache is given, it checks if the given column exists;

* ActionController matchers:

    :assign_to, :filter_params, :redirect_to, :render_with_layout, :respond_with,
    :render_template, :route, :set_session and :set_the_flash;

* Macro stubs: make your controllers specs easier to main, more readable and DRY;

* Tests and more tests. We have a huge tests suite ready to run and tested in
  Rails 2.1.2, 2.2.2 and 2.3.2;

* I18n and great documentation.

* It has your style. You can choose between:

    1) it { should validate_numericality_of(:age).greater_than(18).only_integer }

    2) it { should validate_numericality_of(:age, :greater_than => 18, :only_integer => true) }

    3) should_validate_numericality_of :age, :greater_than => 18, :only_integer => true

    4) should_validate_numericality_of :age do |m|
         m.only_integer
         m.greater_than 18
         # Or: m.greater_than = 18
       end

Remarkable Rails requires rspec >= 2.0.0 and rspec-rails >= 2.0.0.

== Install on Rails

Install the gem:

  sudo gem install remarkable_rails

This will install remarkable, remarkable_activerecord and remarkable_rails gems.

Inside Rails you need to require just this gem. If you are using ActiveRecord,
it will automatically require the remarkable_activerecord gem.

== Rails 3

In Rails 3, in order to rspec load properly, you have to use this configuration
on your Gemfile

  gem "rspec"
  gem "rspec-rails"
  gem "remarkable_activerecord"

NOTE: remarkable_rails is currently not supported.

Add the require after the rspec/rails line in your spec_helpers.rb. Although RSpec2 convention
encourages you to use spec/support/, if you have Remarkable matchers in there, you will want
to load that after you load Remarkable

  require 'rspec/rails'
  require 'remarkable/active_record'

Alternatively, if you are using an ActiveModel-compliant gem, such as the newer Mongo and
CouchDB gems, you can use:

  require 'remarkable/active_model'

and have access to all ActiveModel matchers. Note that loading remarkable/active_record will
automatically load remarkable/active_model

This is the safest way to avoid conflicts.

Please note, due to the massive refactoring in Rails 3 and RSpec 2, we are not supporting
backwards compatibility with Rails 2 or RSpec 1. You will need to use the Remarkable 3.x series
if you are still using Rails 2.

== How to setup your machine to contribute with remarkable?

gem install bundler
bundle install
rake # red, green, refactor

== Developers

If you are developing matchers, for example hpricot matchers, you need to install
only the remarkable "core" gem:

  sudo gem install remarkable

If you stumble into any problem or have doubts while building your matchers,
please drop us a line. We are currently searching for people who wants to join
us and provide matchers for Datamapper, Sequel, Sinatra and all other possible
options. :)

== Browse the documentation

Remarkable:
  http://remarkable.rubyforge.org/core/

Remarkable ActiveRecord:
  http://remarkable.rubyforge.org/activerecord/
  http://remarkable.rubyforge.org/activerecord/classes/Remarkable/ActiveRecord/Matchers.html

Remarkable Rails:
  http://remarkable.rubyforge.org/rails/
  http://remarkable.rubyforge.org/rails/classes/Remarkable/ActionController/Matchers.html

== More information

Google group: http://groups.google.com/group/remarkable-core
Bug tracking: http://github.com/remarkable/remarkable/issues

== Contributors

http://github.com/remarkable/remarkable/contributors

== LICENSE

All projects are under MIT LICENSE.

Something went wrong with that request. Please try again.