rspec-cells 0.0.4 → 0.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/CHANGES.textile CHANGED
@@ -1,3 +1,10 @@
1
+ h2. 0.0.5
2
+
3
+ h3. Changes
4
+ * Works with RSpec-2.6 now, too.
5
+ * We no longer provide our own Capybara string matchers but delegate to @Capybara.string@. If you ever used the @==@ equality check, this won't work anymore. As a tradeoff, you get all string matchers Capybara comes up with, making rspec-cells forward-compatible.
6
+
7
+
1
8
  h2. 0.0.4
2
9
 
3
10
  h3. Changes
data/README.rdoc CHANGED
@@ -17,7 +17,7 @@ This gem runs with RSpec2 and Rails 3.0, so just add it to your app's +Gemfile+.
17
17
  = Usage
18
18
 
19
19
  Simply put all your specs in the <tt>spec/cells</tt> directory. However, let the cell generator do that for you!
20
-
20
+
21
21
  rails g cell blog_post show -t rspec
22
22
 
23
23
  will create an exemplary <tt>spec/cells/blog_post_cell_spec.rb</tt> for you.
@@ -40,13 +40,32 @@ If you want Capybara's string matchers be sure to bundle at least capybara +0.4.
40
40
 
41
41
  You can then use capybara's matchers in your cell spec.
42
42
 
43
- describe PostsCell do
44
- it "should render the posts count" do
45
- render_cell(:posts, :box).should have_css("div#widget h3")
43
+ describe PostsCell do
44
+ describe "search posts" do
45
+ let(:search) { render_cell(:posts, :search) }
46
+
47
+ it "should have a search field" do
48
+ search.should have_field("Search by Title")
49
+ end
50
+
51
+ it "should have a search button" do
52
+ search.should have_button("Search")
53
+ end
54
+ end
55
+
56
+ describe "latest posts" do
57
+ subject { render_cell(:posts, :latest) }
58
+
59
+ it { should have_css("h3.title", :text => "Latest Posts") }
60
+ it { should have_table("latest_posts") }
61
+ it { should have_link("View all Posts") }
62
+ it { should_not have_button("Create Post") }
63
+ it { should_not have_field("Search by Title") }
46
64
  end
47
65
  end
48
66
 
49
-
67
+ You can see all capybara matchers and finders here: http://rubydoc.info/github/jnicklas/capybara/master/Capybara/Node/Simple
68
+
50
69
  == Running the specs
51
70
 
52
71
  Run your examples with
@@ -1,6 +1,6 @@
1
1
  module RSpec # :nodoc:
2
2
  module Cells # :nodoc:
3
- VERSION = '0.0.4'
3
+ VERSION = '0.0.5'
4
4
  end
5
5
  end
6
6
 
@@ -7,21 +7,35 @@ module RSpec::Rails
7
7
  include RSpec::Rails::RailsExampleGroup
8
8
  include Cell::TestCase::TestMethods
9
9
  include RSpec::Rails::ViewRendering
10
- include RSpec::Rails::BrowserSimulators
11
10
 
12
- webrat do
11
+ if defined?(Webrat)
13
12
  include Webrat::Matchers
14
13
  include Webrat::Methods
15
14
  end
16
15
 
17
- capybara do
18
- include Capybara
16
+ if defined?(Capybara)
19
17
  begin
20
- include Capybara::RSpec::StringMatchers
18
+ include Capybara::DSL
21
19
  rescue NameError
22
- # do this till capybara 0.4.2 is out.
23
- require 'rspec/cells/capybara/string_matchers'
24
- include RSpec::Cells::Capybara::StringMatchers
20
+ include Capybara
21
+ end
22
+
23
+ # Overwrite to wrap render_cell into a Capybara custom string with a
24
+ # lot of matchers.
25
+ #
26
+ # Read more at:
27
+ #
28
+ # The Capybara.string method documentation:
29
+ # - http://rubydoc.info/github/jnicklas/capybara/master/Capybara#string-class_method
30
+ #
31
+ # Return value is an instance of Capybara::Node::Simple
32
+ # - http://rubydoc.info/github/jnicklas/capybara/master/Capybara/Node/Simple
33
+ #
34
+ # That expose all the methods from the following capybara modules:
35
+ # - http://rubydoc.info/github/jnicklas/capybara/master/Capybara/Node/Matchers
36
+ # - http://rubydoc.info/github/jnicklas/capybara/master/Capybara/Node/Finders
37
+ def render_cell(*args)
38
+ Capybara.string super
25
39
  end
26
40
  end
27
41
 
@@ -41,7 +55,7 @@ module RSpec::Rails
41
55
  render_views
42
56
  subject { controller }
43
57
  end
44
-
58
+
45
59
  RSpec.configure do |c|
46
60
  c.include self, :example_group => { :file_path => /spec\/cells/ }
47
61
  end
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 0
8
- - 4
9
- version: 0.0.4
8
+ - 5
9
+ version: 0.0.5
10
10
  platform: ruby
11
11
  authors:
12
12
  - Nick Sutterer
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2011-02-04 00:00:00 +01:00
17
+ date: 2011-05-17 00:00:00 +02:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -79,7 +79,6 @@ files:
79
79
  - lib/generators/rspec/templates/cell_spec.erb
80
80
  - lib/rspec-cells.rb
81
81
  - lib/rspec/cells.rb
82
- - lib/rspec/cells/capybara/string_matchers.rb
83
82
  - lib/rspec/cells/tasks.rake
84
83
  - lib/rspec/cells/version.rb
85
84
  - lib/rspec/rails/example/cell_example_group.rb
@@ -1,47 +0,0 @@
1
- # This includes a backported version of the Capybara string matchers David Chelimsky
2
- # is preparing in https://github.com/dchelimsky/capybara/tree/rspec-matchers
3
- #
4
- # Looks like the string matchers will be included in Capybara 0.4.2 if the feature is ready.
5
- #
6
- # The branch have not being merged into master because it's missing support for the capybara
7
- # page object.
8
- #
9
- # When we test a rendered cell with the `render_cell` method we get an ActionView::OutputBuffer
10
- # instance, it is in short, a safe version of String, so we are testing a String, not a capybara
11
- # page object. So the matchers are OK and the missing features won't bother us.
12
- #
13
- # Follow up in http://groups.google.com/group/ruby-capybara/browse_thread/thread/c8adaa8f750b1020
14
- module RSpec
15
- module Cells
16
- module Capybara
17
- module StringMatchers
18
- extend ::RSpec::Matchers::DSL
19
-
20
- %w[css xpath selector].each do |type|
21
- matcher "have_#{type}" do |*args|
22
- match_for_should do |string|
23
- ::Capybara::string(string).send("has_#{type}?", *args)
24
- end
25
-
26
- match_for_should_not do |string|
27
- ::Capybara::string(string).send("has_no_#{type}?", *args)
28
- end
29
-
30
- failure_message_for_should do |string|
31
- "expected #{type} #{formatted(args)} to return something from:\n#{string}"
32
- end
33
-
34
- failure_message_for_should_not do |string|
35
- "expected #{type} #{formatted(args)} not to return anything from:\n#{string}"
36
- end
37
-
38
- def formatted(args)
39
- args.length == 1 ? args.first.inspect : args.inspect
40
- end
41
- end
42
- end
43
-
44
- end
45
- end
46
- end
47
- end