Skip to content
This repository has been archived by the owner on Oct 12, 2023. It is now read-only.

Commit

Permalink
Merge pull request #6 from nisshiee/readme
Browse files Browse the repository at this point in the history
Write README
  • Loading branch information
nisshiee committed Jan 26, 2016
2 parents 1143424 + 2090ad8 commit 398ae5d
Showing 1 changed file with 65 additions and 11 deletions.
76 changes: 65 additions & 11 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,22 @@

[![Build Status](https://travis-ci.org/nisshiee/validation_examples_matcher.svg?branch=master)](https://travis-ci.org/nisshiee/validation_examples_matcher)

Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/validation_examples_matcher`. To experiment with that code, run `bin/console` for an interactive prompt.
ValidationExamplesMatcher supports writing rails model's validation specs.

TODO: Delete this and the text above, and describe your gem
e.g.

```ruby
RSpec.describe MyModel do
...

it { is_expected.to be_invalid_on(:name).with(nil) }
it { is_expected.to be_invalid_on(:name).with('') }
it { is_expected.to be_valid_on(:name).with('my name') }
end
```

ValidationExamplesMatcher sets a particular value ― nil, empty string and 'my name' ― actually.
Then the matcher calls `valid?` or `invalid?` method and checks results of validation.

## Installation

Expand All @@ -18,26 +31,67 @@ And then execute:

$ bundle

Or install it yourself as:
## Usage

$ gem install validation_examples_matcher
Let me show how to use ValidationExamplesMatcher in case of following model.

## Usage
```ruby
class MyModel < ActiveRecord::Base
validates :name, presence: true
validates :name, length: { maxmum: 4 }, on: :create
end
```

First, you have to define `subject` as target model object.
It's good to define it as *valid* object.
Creating object with [factory_girl](https://github.com/thoughtbot/factory_girl) is very nice.

```ruby
RSpec.define MyModel do
subject { FactoryGirl.build(:my_model) }
# subject { MyModel.new } => also ok but not recommended
end
```

Second, write *invalid case examples* and *valid case examples* using ValidationExamplesMatcher.
In case of `MyModel`, `:name` attribute is invalid when its' value is nil or empty string.
`'my name'` is typical valid example.

TODO: Write usage instructions here
```ruby
RSpec.define MyModel do
subject { FactoryGirl.build(:my_model) }

## Development
it { is_expected.to be_invalid_on(:name).with(nil) }
it { is_expected.to be_invalid_on(:name).with('') }
it { is_expected.to be_valid_on(:name).with('my name') }
end
```

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.
Arguments of `be_invalid_on` or `be_valid_on` indicate attribute name.
And arguments of `with` chain is a value which will be set to the attribute.

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](https://rubygems.org).
`ActiveModel::Validations` can define validations on specific contexts.
`MyModel` has `length` validation only on `:create` context.
You can also define validation spec for such case using `on_context` chain.

```ruby
RSpec.define MyModel do
subject { FactoryGirl.build(:my_model) }

it { is_expected.to be_invalid_on(:name).with(nil) }
it { is_expected.to be_invalid_on(:name).with('') }
it { is_expected.to be_valid_on(:name).with('my name') }

it { is_expected.to be_valid_on(:name).with('4cha').on_context(:create) }
it { is_expected.to be_invalid_on(:name).with('5char').on_context(:create) }
end
```

## Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/validation_examples_matcher.
Bug reports and pull requests are welcome on GitHub at https://github.com/nisshiee/validation_examples_matcher.


## License

The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).

0 comments on commit 398ae5d

Please sign in to comment.