rspec-cells 0.0.3 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGES.textile +6 -0
- data/README.rdoc +27 -1
- data/lib/generators/rspec/templates/cell_spec.erb +3 -4
- data/lib/rspec/cells/capybara/string_matchers.rb +47 -0
- data/lib/rspec/cells/version.rb +1 -1
- data/lib/rspec/rails/example/cell_example_group.rb +4 -8
- metadata +4 -4
- data/lib/rspec_cells/capybara/string_matchers.rb +0 -45
data/CHANGES.textile
CHANGED
data/README.rdoc
CHANGED
@@ -16,15 +16,38 @@ This gem runs with RSpec2 and Rails 3.0, so just add it to your app's +Gemfile+.
|
|
16
16
|
|
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
|
+
|
21
|
+
rails g cell blog_post show -t rspec
|
22
|
+
|
23
|
+
will create an exemplary <tt>spec/cells/blog_post_cell_spec.rb</tt> for you.
|
24
|
+
|
25
|
+
== Webrat
|
26
|
+
|
27
|
+
Webrat matchers just work as you might have expected - here is how a simple spec could look like.
|
20
28
|
|
21
29
|
describe PostsCell do
|
22
30
|
it "should render the posts count" do
|
23
31
|
render_cell(:posts, :count).should have_selector("p", :content => "4 posts!")
|
24
32
|
end
|
33
|
+
end
|
34
|
+
|
35
|
+
== Capybara
|
36
|
+
|
37
|
+
If you want Capybara's string matchers be sure to bundle at least capybara +0.4.1+ in your Gemfile.
|
25
38
|
|
39
|
+
gem "capybara", "~> 0.4.1"
|
40
|
+
|
41
|
+
You can then use capybara's matchers in your cell spec.
|
42
|
+
|
43
|
+
describe PostsCell do
|
44
|
+
it "should render the posts count" do
|
45
|
+
render_cell(:posts, :box).should have_css("div#widget h3")
|
46
|
+
end
|
26
47
|
end
|
27
48
|
|
49
|
+
|
50
|
+
== Running the specs
|
28
51
|
|
29
52
|
Run your examples with
|
30
53
|
|
@@ -32,6 +55,9 @@ Run your examples with
|
|
32
55
|
|
33
56
|
If you need more helpers, matchers and stuff, {just let us know}[http://cells.rubyforge.org/community.html].
|
34
57
|
|
58
|
+
== Contributors
|
59
|
+
|
60
|
+
* Jorge Calás Lozano <calas@qvitta.net> (Cleanup, capybara string matchers)
|
35
61
|
|
36
62
|
== LICENSE
|
37
63
|
|
@@ -6,16 +6,15 @@ describe <%= class_name %>Cell do
|
|
6
6
|
context "rendering <%= state %>" do
|
7
7
|
subject { render_cell(:<%= file_name %>, :<%= state %>) }
|
8
8
|
|
9
|
-
it { should have_selector("h1", :
|
10
|
-
it { should have_selector("p", :
|
9
|
+
it { should have_selector("h1", :content => "<%= class_name %>#<%= state %>") }
|
10
|
+
it { should have_selector("p", :content => "Find me in app/cells/<%= file_name %>/<%= state %>.html") }
|
11
11
|
end
|
12
12
|
<% end %>
|
13
13
|
end
|
14
14
|
|
15
15
|
|
16
16
|
context "cell instance" do
|
17
|
-
subject { cell(:<%= file_name %>) }
|
18
|
-
|
17
|
+
subject { cell(:<%= file_name %>) }
|
19
18
|
<% for state in actions %>
|
20
19
|
it { should respond_to(:<%= state %>) }
|
21
20
|
<% end %>
|
@@ -0,0 +1,47 @@
|
|
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
|
data/lib/rspec/cells/version.rb
CHANGED
@@ -1,8 +1,6 @@
|
|
1
1
|
module RSpec::Rails
|
2
2
|
# Lets you call #render_cell in Rspec2. Move your cell specs to <tt>spec/cells/</tt>.
|
3
3
|
module CellExampleGroup
|
4
|
-
VERSION = "0.0.1"
|
5
|
-
|
6
4
|
extend ActiveSupport::Concern
|
7
5
|
extend RSpec::Rails::ModuleInclusion
|
8
6
|
|
@@ -21,9 +19,9 @@ module RSpec::Rails
|
|
21
19
|
begin
|
22
20
|
include Capybara::RSpec::StringMatchers
|
23
21
|
rescue NameError
|
24
|
-
#
|
25
|
-
require '
|
26
|
-
include
|
22
|
+
# do this till capybara 0.4.2 is out.
|
23
|
+
require 'rspec/cells/capybara/string_matchers'
|
24
|
+
include RSpec::Cells::Capybara::StringMatchers
|
27
25
|
end
|
28
26
|
end
|
29
27
|
|
@@ -43,9 +41,7 @@ module RSpec::Rails
|
|
43
41
|
render_views
|
44
42
|
subject { controller }
|
45
43
|
end
|
46
|
-
|
47
|
-
# RSpec.configure &include_self_when_dir_matches('spec','cells') # adds a filter to Configuration that includes this module in matching groups.
|
48
|
-
|
44
|
+
|
49
45
|
RSpec.configure do |c|
|
50
46
|
c.include self, :example_group => { :file_path => /spec\/cells/ }
|
51
47
|
end
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
version: 0.0.
|
8
|
+
- 4
|
9
|
+
version: 0.0.4
|
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-
|
17
|
+
date: 2011-02-04 00:00:00 +01:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
@@ -79,10 +79,10 @@ 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
|
82
83
|
- lib/rspec/cells/tasks.rake
|
83
84
|
- lib/rspec/cells/version.rb
|
84
85
|
- lib/rspec/rails/example/cell_example_group.rb
|
85
|
-
- lib/rspec_cells/capybara/string_matchers.rb
|
86
86
|
- rspec-cells.gemspec
|
87
87
|
- spec/cells/cell_spec_spec.rb
|
88
88
|
- spec/spec_helper.rb
|
@@ -1,45 +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 RSpecCells
|
15
|
-
module Capybara
|
16
|
-
module StringMatchers
|
17
|
-
extend ::RSpec::Matchers::DSL
|
18
|
-
|
19
|
-
%w[css xpath selector].each do |type|
|
20
|
-
matcher "have_#{type}" do |*args|
|
21
|
-
match_for_should do |string|
|
22
|
-
::Capybara::string(string).send("has_#{type}?", *args)
|
23
|
-
end
|
24
|
-
|
25
|
-
match_for_should_not do |string|
|
26
|
-
::Capybara::string(string).send("has_no_#{type}?", *args)
|
27
|
-
end
|
28
|
-
|
29
|
-
failure_message_for_should do |string|
|
30
|
-
"expected #{type} #{formatted(args)} to return something from:\n#{string}"
|
31
|
-
end
|
32
|
-
|
33
|
-
failure_message_for_should_not do |string|
|
34
|
-
"expected #{type} #{formatted(args)} not to return anything from:\n#{string}"
|
35
|
-
end
|
36
|
-
|
37
|
-
def formatted(args)
|
38
|
-
args.length == 1 ? args.first.inspect : args.inspect
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|