semantic_rails_view_helpers/README.md

53 lines
1.3 KiB
Markdown
Raw Normal View History

2012-12-08 15:00:29 +00:00
Make your Rails Capybara testing even faster and more accurate! Looking for text strings is for the birds.
2012-11-19 13:39:43 +00:00
2012-12-08 15:00:29 +00:00
## Your Views
2012-11-19 13:39:43 +00:00
2012-12-08 16:28:07 +00:00
It's easier to find things in Capybara tests if you add extra `data` attributes to fields and such.
This gem does that for you if you link to and refer to things in a certain way. If you do, your
tests turn from text blob and CSS selector messes to nice, clean, simple references to objects
and attributes.
### Attributes
2012-12-08 15:00:29 +00:00
Write out attributes using `attributes_for`:
2012-11-19 13:39:43 +00:00
2012-12-08 15:00:29 +00:00
``` haml
#object
= attributes_for object do |f|
%h2= f.field(:name)
%h3= f.field(:description)
```
2012-11-19 13:39:43 +00:00
2012-12-08 15:00:29 +00:00
Then look for those fields using Capybara! Because you shouldn't care about the DOM, just that your
field is in there:
2012-11-19 13:39:43 +00:00
2012-12-08 15:00:29 +00:00
``` ruby
@object = Object.create!(:name => @name, :description => @description)
2012-11-19 13:39:43 +00:00
2012-12-08 15:00:29 +00:00
visit object_path(@object)
2012-11-19 13:39:43 +00:00
2012-12-08 15:00:29 +00:00
find_attribute(:name, @object.name)
find_attribute(:description, @object.description)
```
2012-12-08 16:28:07 +00:00
You can even make simple tables, a la Active Admin:
``` haml
#object
= attributes_table_for object do |f|
= f.field :name
= f.field :description
```
## Not Finding Things
Sometimes the absence of a thing is just as important as the presence of a thing. Make it easy on yourself:
``` ruby
# selector's not there
dont_find('#user')
# object's not there
```