# Rspec-Cells
_Spec your Cells._
This plugin allows you to spec your cells with RSpec.
Cells is Rails' popular [view components framework](http://github.com/apotonick/cells).
# Installation
This gem runs with **RSpec3 and Rails >= 3.x and Cells 4**. Add it to your app's `Gemfile`.
```ruby
group :development, :test do
gem "rspec-cells"
end
```
Note: In case you're still using **Cells 3**, [go here](https://github.com/apotonick/rspec-cells/tree/cells-3).
# Usage
Simply put all your specs in the `spec/cells` directory or add `type: :cell` to the describe block.
However, let the cell generator do that for you!
```
rails g rspec:cell comment show
```
will create an exemplary `spec/cells/comment_cell_spec.rb` for you.
# API
To invoke rendering of a cell you use the exact same API as in your application.
```ruby
describe CommentCell do
it "renders comment" do
expect(cell(:comment).call).to have_content "Really Great!"
end
end
```
As you can see, it is nothing more than using `#cell` or `#concept`, invoke the default state using `#call` (or any other state with `call(:other_state)`) and use Rspecs and Capybara's matchers.
## URL helpers
If your cells use helpers with controller dependency, you need to specify a controller to use in your test.
```ruby
describe CommentCell do
controller CommentsController
```
Excuse the clumsiness, but this is done wrong in Rails and not Cells' fault.
# Running Specs
Run your examples with
```
rake spec:cells
```
# More docs
All the docs about testing can be found on the [Trailblazer project page](http://trailblazer.to/gems/cells/testing.html).
# Test cells with caching
By default your code for caching code is not run if you set ActionController::Base.perform_caching = false
That's a reasonable default but you might want to increase coverage by running caching code at least once.
Here is an example:
```ruby
describe SomeCell do
describe 'caching' do
enable_cell_caching!
# Code for testing...
end
end
```
# Contributors
Big thanks to folks who helped me a lot.
* Jorge Calás Lozano (Cleanup, capybara string matchers)
* Abdelkader Boudih <@seuros>
# LICENSE
Copyright (c) 2010-2015, Nick Sutterer
Copyright (c) 2008-2009, Dmytro Shteflyuk http://kpumuk.info
Released under the MIT License.