rspec2-rails-views-matchers 0.0.3 → 0.0.4

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/.gitignore CHANGED
@@ -5,3 +5,4 @@ pkg/*
5
5
  html
6
6
  doc
7
7
  .yardoc
8
+ coverage
data/.rspec CHANGED
@@ -1,2 +1 @@
1
1
  --color
2
- --format documentation
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rspec2-rails-views-matchers (0.0.3)
4
+ rspec2-rails-views-matchers (0.0.4)
5
5
  nokogiri (~> 1.4.4)
6
6
  rspec (>= 2.0.0)
7
7
 
@@ -10,17 +10,21 @@ GEM
10
10
  specs:
11
11
  diff-lcs (1.1.2)
12
12
  nokogiri (1.4.4)
13
- rspec (2.4.0)
14
- rspec-core (~> 2.4.0)
15
- rspec-expectations (~> 2.4.0)
16
- rspec-mocks (~> 2.4.0)
17
- rspec-core (2.4.0)
18
- rspec-expectations (2.4.0)
13
+ rspec (2.5.0)
14
+ rspec-core (~> 2.5.0)
15
+ rspec-expectations (~> 2.5.0)
16
+ rspec-mocks (~> 2.5.0)
17
+ rspec-core (2.5.1)
18
+ rspec-expectations (2.5.0)
19
19
  diff-lcs (~> 1.1.2)
20
- rspec-mocks (2.4.0)
20
+ rspec-mocks (2.5.0)
21
+ simplecov (0.4.1)
22
+ simplecov-html (~> 0.4.3)
23
+ simplecov-html (0.4.3)
21
24
 
22
25
  PLATFORMS
23
26
  ruby
24
27
 
25
28
  DEPENDENCIES
26
29
  rspec2-rails-views-matchers!
30
+ simplecov
data/README.md CHANGED
@@ -1,3 +1,10 @@
1
+ Test views, be true! :)
2
+ =======================
3
+
4
+ ![Mikhalok](http://investigator.org.ua/wp-content/uploads/01_500_liapis_powe-300x192.jpg)
5
+
6
+ ([Lyapis Trubetskoy](http://www.myspace.com/lyapis))
7
+
1
8
  Why?
2
9
  ===
3
10
 
data/Rakefile CHANGED
@@ -4,4 +4,17 @@ Bundler::GemHelper.install_tasks
4
4
 
5
5
  task :default => :spec
6
6
 
7
- RSpec::Core::RakeTask.new
7
+ RSpec::Core::RakeTask.new(:spec) do |t|
8
+ t.rspec_opts='--tag ~wip'
9
+ end
10
+
11
+ namespace :spec do
12
+ RSpec::Core::RakeTask.new(:wip) do |t|
13
+ t.rspec_opts='--tag wip'
14
+ t.fail_on_error = false
15
+ end
16
+
17
+ RSpec::Core::RakeTask.new(:rcov) do |t|
18
+ t.rspec_opts=['-r simplecov']
19
+ end
20
+ end
data/docs/CHANGELOG.md CHANGED
@@ -1,4 +1,4 @@
1
- changelog
1
+ Changelog
2
2
  =========
3
3
 
4
4
  unreleased(TODO)
@@ -8,7 +8,31 @@ unreleased(TODO)
8
8
  * add description
9
9
  * raise exception when wrong parametres specified(:count and :minimum simultaneously)
10
10
  * organize code
11
- * add more matchers(have\_form,with\_input)?
11
+ * add :without to have\_tag?
12
+ * !make possible constructions like:
13
+
14
+ > rendered.should have(3).tags('div').with(:class => 'some-class').and_content(/some content/)
15
+
16
+ 0.0.5-dev (trial-trip)
17
+ ----------------------
18
+
19
+ * TODO: add more matchers:
20
+ * have\_form(will be finished when "child" matchers will be done)
21
+ * with\_hidden\_field
22
+ * with\_text\_field
23
+ * with\_password\_field
24
+ * TODO: with\_file\_field?
25
+ * TODO: with\_text\_area
26
+ * TODO: with\_check\_box
27
+ * TODO: with\_radio\_button
28
+ * with\_select
29
+ * with\_option
30
+ * TODO: with\_submit
31
+
32
+ 0.0.4 (bugfix)
33
+ --------------
34
+
35
+ * additional parameters(:count,:text,:with) rely on each other to match what exactly tester want to match([link to comment](https://github.com/kucaahbe/rspec2-rails-views-matchers/issues#issue/2/comment/848775))
12
36
 
13
37
  0.0.3
14
38
  -----
@@ -5,7 +5,7 @@ module RSpec
5
5
 
6
6
  # @api
7
7
  # @private
8
- class NokogiriMatcher#:nodoc:
8
+ class NokogiriMatcher
9
9
  attr_reader :failure_message
10
10
  attr_reader :parent_scope, :current_scope
11
11
 
@@ -45,7 +45,7 @@ module RSpec
45
45
  @document = @parent_scope.to_html
46
46
  end
47
47
 
48
- if tag_presents? and count_right? and content_right?
48
+ if tag_presents? and content_right? and count_right?
49
49
  @current_scope = @parent_scope
50
50
  @block.call if @block
51
51
  true
@@ -91,14 +91,26 @@ module RSpec
91
91
 
92
92
  case text=@options[:text]
93
93
  when Regexp
94
- if @current_scope.any? {|node| node.content =~ text }
94
+ new_scope = @current_scope.css(":regexp('#{text}')",Class.new {
95
+ def regexp node_set, text
96
+ node_set.find_all { |node| node.content =~ Regexp.new(text) }
97
+ end
98
+ }.new)
99
+ unless new_scope.empty?
100
+ @count = new_scope.count
95
101
  true
96
102
  else
97
103
  @failure_message=%Q{#{text.inspect} regexp expected within "#{@tag}" in following template:\n#{@document}}
98
104
  false
99
105
  end
100
106
  else
101
- if @current_scope.any? {|node| node.content == text }
107
+ new_scope = @current_scope.css(":content('#{text}')",Class.new {
108
+ def content node_set, text
109
+ node_set.find_all { |node| node.content == text }
110
+ end
111
+ }.new)
112
+ unless new_scope.empty?
113
+ @count = new_scope.count
102
114
  true
103
115
  else
104
116
  @failure_message=%Q{"#{text}" expected within "#{@tag}" in following template:\n#{@document}}
@@ -141,7 +153,7 @@ module RSpec
141
153
  # </html>".should have_tag('body') { with_tag('h1', :text => 'some html document') }
142
154
  # '<div class="one two">'.should have_tag('div', :with => { :class => ['two', 'one'] })
143
155
  # '<div class="one two">'.should have_tag('div', :with => { :class => 'two one' })
144
- def have_tag tag,options={}, &block
156
+ def have_tag tag, options={}, &block
145
157
  @__current_scope_for_nokogiri_matcher = NokogiriMatcher.new(tag, options, &block)
146
158
  end
147
159
 
@@ -161,5 +173,96 @@ module RSpec
161
173
  @__current_scope_for_nokogiri_matcher.should_not have_tag(tag, options, &block)
162
174
  end
163
175
 
176
+ def have_form action_url, method, options={}, &block
177
+ options[:with] ||= {}
178
+ id = options[:with].delete(:id)
179
+ tag = 'form'; tag += '#'+id if id
180
+ options[:with].merge!(:action => action_url)
181
+ options[:with].merge!(:method => method.to_s)
182
+ have_tag tag, options, &block
183
+ end
184
+
185
+ def with_hidden_field name, value=nil
186
+ options = { :with => { :name => name, :type => 'hidden' } }
187
+ options[:with].merge!(:value => value) if value
188
+ @__current_scope_for_nokogiri_matcher.should have_tag('input', options)
189
+ end
190
+
191
+ def without_hidden_field name, value=nil
192
+ options = { :with => { :name => name, :type => 'hidden' } }
193
+ options[:with].merge!(:value => value) if value
194
+ @__current_scope_for_nokogiri_matcher.should_not have_tag('input', options)
195
+ end
196
+
197
+ def with_text_field name, value=nil
198
+ options = { :with => { :name => name, :type => 'text' } }
199
+ options[:with].merge!(:value => value) if value
200
+ @__current_scope_for_nokogiri_matcher.should have_tag('input', options)
201
+ end
202
+
203
+ def without_text_field name, value=nil
204
+ options = { :with => { :name => name, :type => 'text' } }
205
+ options[:with].merge!(:value => value) if value
206
+ @__current_scope_for_nokogiri_matcher.should_not have_tag('input', options)
207
+ end
208
+
209
+ def with_password_field name
210
+ options = { :with => { :name => name, :type => 'password' } }
211
+ @__current_scope_for_nokogiri_matcher.should have_tag('input', options)
212
+ end
213
+
214
+ def without_password_field name
215
+ options = { :with => { :name => name, :type => 'password' } }
216
+ @__current_scope_for_nokogiri_matcher.should_not have_tag('input', options)
217
+ end
218
+
219
+ def with_select name, options={}, &block
220
+ options[:with] ||= {}
221
+ id = options[:with].delete(:id)
222
+ tag='select'; tag += '#'+id if id
223
+ options[:with].merge!(:name => name)
224
+ @__current_scope_for_nokogiri_matcher.should have_tag(tag, options, &block)
225
+ end
226
+
227
+ def without_select name, options={}, &block
228
+ options[:with] ||= {}
229
+ id = options[:with].delete(:id)
230
+ tag='select'; tag += '#'+id if id
231
+ options[:with].merge!(:name => name)
232
+ @__current_scope_for_nokogiri_matcher.should_not have_tag(tag, options, &block)
233
+ end
234
+
235
+ def with_option text, value=nil, options={}
236
+ options[:with] ||= {}
237
+ if value.is_a?(Hash)
238
+ options.merge!(value)
239
+ value=nil
240
+ end
241
+ tag='option'
242
+ options[:with].merge!(:value => value.to_s) if value
243
+ if options[:selected]
244
+ options[:with].merge!(:selected => "selected")
245
+ end
246
+ options.delete(:selected)
247
+ options.merge!(:text => text) if text
248
+ @__current_scope_for_nokogiri_matcher.should have_tag(tag, options)
249
+ end
250
+
251
+ def without_option text, value=nil, options={}
252
+ options[:with] ||= {}
253
+ if value.is_a?(Hash)
254
+ options.merge!(value)
255
+ value=nil
256
+ end
257
+ tag='option'
258
+ options[:with].merge!(:value => value.to_s) if value
259
+ if options[:selected]
260
+ options[:with].merge!(:selected => "selected")
261
+ end
262
+ options.delete(:selected)
263
+ options.merge!(:text => text) if text
264
+ @__current_scope_for_nokogiri_matcher.should_not have_tag(tag, options)
265
+ end
266
+
164
267
  end
165
268
  end
data/lib/version.rb CHANGED
@@ -1,12 +1,12 @@
1
- module RSpec#:nodoc:
1
+ module RSpec
2
2
  # @private
3
- module Rails#:nodoc:
3
+ module Rails
4
4
  # @private
5
- module Views#:nodoc:
5
+ module Views
6
6
  # @private
7
- module Matchers#:nodoc:
7
+ module Matchers
8
8
  # @private
9
- VERSION = "0.0.3"
9
+ VERSION = "0.0.4"
10
10
  end
11
11
  end
12
12
  end
@@ -21,4 +21,6 @@ Gem::Specification.new do |s|
21
21
 
22
22
  s.add_dependency 'rspec', '>= 2.0.0'
23
23
  s.add_dependency 'nokogiri', '~> 1.4.4'
24
+
25
+ s.add_development_dependency 'simplecov'
24
26
  end
@@ -0,0 +1,212 @@
1
+ require 'spec_helper'
2
+
3
+ describe "have_form" do
4
+
5
+ before :each do
6
+ render_html <<HTML
7
+ <form action="/books" class="formtastic book" id="new_book" method="post">
8
+
9
+ <div style="margin:0;padding:0;display:inline">
10
+ <input name="authenticity_token" type="hidden" value="718WaH76RAbIVhDlnOidgew62ikn8IUCOyWLEqjw1GE=" />
11
+ </div>
12
+
13
+ <fieldset class="inputs">
14
+ <ol>
15
+ <li class="select required" id="book_publisher_input">
16
+ <label for="book_publisher_id">
17
+ Publisher<abbr title="required">*</abbr>
18
+ </label>
19
+ <select id="book_publisher_id" name="book[publisher_id]">
20
+ <option value=""></option>
21
+ <option value="1" selected="selected">The Pragmatic Bookshelf</option>
22
+ <option value="2">sitepoint</option>
23
+ <option value="3">O'Reilly</option>
24
+ </select>
25
+ </li>
26
+
27
+ <li class="string required" id="book_title_input">
28
+ <label for="book_title">
29
+ Title<abbr title="required">*</abbr>
30
+ </label>
31
+ <input id="book_title" maxlength="255" name="book[title]" size="50" type="text" />
32
+ </li>
33
+
34
+ <li class="string required" id="book_author_input">
35
+ <label for="book_author">
36
+ Author<abbr title="required">*</abbr>
37
+ </label>
38
+ <input id="book_author" maxlength="255" name="book[author]" size="50" type="text" value="Authorname" />
39
+ </li>
40
+
41
+ <li class="password optional" id="user_password_input">
42
+ <label for="user_password">
43
+ Password:
44
+ </label>
45
+ <input id="user_password" name="user[password]" size="30" type="password" />
46
+ </li>
47
+
48
+ </ol>
49
+ </fieldset>
50
+ </form>
51
+ HTML
52
+ end
53
+
54
+ context "without &block" do
55
+
56
+ it "should find form" do
57
+ rendered.should have_form("/books", :post)
58
+
59
+ self.should_receive(:have_tag).with("form#new_book", :with => { :method => "post", :action => "/books", :class => %w(book formtastic) })
60
+ rendered.should have_form("/books", "post", :with => { :id => "new_book", :class => %w(book formtastic) })
61
+ end
62
+
63
+ it "should not find form" do
64
+ rendered.should_not have_form("/some_url", :post)
65
+ rendered.should_not have_form("/books", :get)
66
+ end
67
+
68
+ end
69
+
70
+ context "with &block" do
71
+
72
+ context "with_select" do
73
+
74
+ it "should find select" do
75
+ rendered.should have_form("/books", :post) do
76
+ with_select("book[publisher_id]", :with => { :id => "book_publisher_id" })
77
+
78
+ self.should_receive(:have_tag).with("select#book_publisher_id", :with => { :name => "book[publisher_id]" })
79
+ with_select("book[publisher_id]", :with => { :id => "book_publisher_id" })
80
+ end
81
+ end
82
+
83
+ it "should not find select" do
84
+ rendered.should have_form("/books", :post) do
85
+ without_select("book[publisher_id]", :with => { :id => "other_id" })
86
+
87
+ self.should_receive(:have_tag).with("select#book_publisher_id", :with => { :name => "koob[publisher_id]" })
88
+ without_select("koob[publisher_id]", :with => { :id => "book_publisher_id" })
89
+ end
90
+ end
91
+
92
+ context "with_option" do
93
+
94
+ it "should find options" do
95
+ rendered.should have_form("/books", :post) do
96
+ with_select("book[publisher_id]") do
97
+ with_option(nil)
98
+ with_option("The Pragmatic Bookshelf", :selected => true)
99
+ with_option(/sitepoint/,2)
100
+
101
+ self.should_receive(:have_tag).with('option', :with => { :value => '3' }, :text => "O'Reilly")
102
+ with_option("O'Reilly", 3, :selected => false)
103
+ end
104
+ end
105
+ end
106
+
107
+ it "should not find options" do
108
+ rendered.should have_form("/books", :post) do
109
+ with_select("book[publisher_id]") do
110
+ without_option("blah blah")
111
+ without_option("O'Reilly", 3, :selected => true)
112
+ without_option("O'Reilly", 100500)
113
+ end
114
+ end
115
+ end
116
+
117
+ end
118
+
119
+ end
120
+
121
+ context "with_hidden_field" do
122
+
123
+ it "should find hidden field" do
124
+ rendered.should have_form("/books", :post) do
125
+ with_hidden_field("authenticity_token")
126
+ self.should_receive(:have_tag).with('input', :with => { :name => 'authenticity_token', :type => 'hidden', :value => '718WaH76RAbIVhDlnOidgew62ikn8IUCOyWLEqjw1GE=' })
127
+ with_hidden_field("authenticity_token", '718WaH76RAbIVhDlnOidgew62ikn8IUCOyWLEqjw1GE=')
128
+ end
129
+ end
130
+
131
+ it "should not find hidden field" do
132
+ rendered.should have_form("/books", :post) do
133
+ without_hidden_field('user_id')
134
+ without_hidden_field('authenticity_token', 'blabla')
135
+ end
136
+ end
137
+
138
+ end
139
+
140
+ context "with_text_field" do
141
+
142
+ it "should find text field" do
143
+ rendered.should have_form("/books", :post) do
144
+ with_text_field('book[title]')
145
+ with_text_field('book[title]',nil)
146
+ with_text_field('book[author]','Authorname')
147
+ end
148
+ end
149
+
150
+ it "should not find text field" do
151
+ rendered.should have_form("/books", :post) do
152
+ without_text_field('book[title]','title does not exist')
153
+ without_text_field('book[authoRR]')
154
+ without_text_field('book[blabla]')
155
+ end
156
+ end
157
+
158
+ end
159
+
160
+ context "with_password_field" do
161
+
162
+ it "should find password field" do
163
+ rendered.should have_form("/books", :post) do
164
+ with_password_field('user[password]')
165
+ end
166
+ end
167
+
168
+ it "should not find password field" do
169
+ rendered.should have_form("/books", :post) do
170
+ without_password_field('account[password]')
171
+ end
172
+ end
173
+
174
+ end
175
+
176
+ context "with_file_field" do
177
+
178
+ it "should find file field"
179
+ it "should not find file field"
180
+
181
+ end
182
+
183
+ context "with_text_area" do
184
+
185
+ it "should find text area"
186
+ it "should not find text area"
187
+
188
+ end
189
+
190
+ context "with_check_box" do
191
+
192
+ it "should find check box"
193
+ it "should not find check box"
194
+
195
+ end
196
+
197
+ context "with_radio_button" do
198
+
199
+ it "should find radio button"
200
+ it "should not find radio button"
201
+
202
+ end
203
+
204
+ context "with_submit" do
205
+
206
+ it "should find submit"
207
+ it "should not find submit"
208
+
209
+ end
210
+
211
+ end
212
+ end
@@ -209,6 +209,74 @@ HTML
209
209
 
210
210
  end
211
211
 
212
+ context "mixed matching" do
213
+
214
+ before :each do
215
+ render_html <<HTML
216
+ <table>
217
+ <tr>
218
+ <td>user_1</td>
219
+ <td id="other-special">user_2</td>
220
+ <td>user_3</td>
221
+ </tr>
222
+ <tr>
223
+ <td>a</td>
224
+ <td id="special">a</td>
225
+ <td>a</td>
226
+ </tr>
227
+ </table>
228
+
229
+ <div class="one">text</div>
230
+ <div class="one">text</div>
231
+ <div class="one">text</div>
232
+ <div class="one">text bla</div>
233
+ <div class="one">content bla</div>
234
+ <div class="one">content</div>
235
+ <div class="two">content bla</div>
236
+ <div class="two">content</div>
237
+ <div class="two">text</div>
238
+ HTML
239
+ end
240
+
241
+ it "should find tags by count and exact content" do
242
+ rendered.should have_tag("td", :text => 'a', :count => 3)
243
+ end
244
+
245
+ it "should find tags by count and rough content(regexp)" do
246
+ rendered.should have_tag("td", :text => /user/, :count => 3)
247
+ end
248
+
249
+ it "should find tags with exact content and additional attributes" do
250
+ rendered.should have_tag("td", :text => 'a', :with => { :id => "special" })
251
+ rendered.should_not have_tag("td", :text => 'a', :with => { :id => "other-special" })
252
+ end
253
+
254
+ it "should find tags with rough content and additional attributes" do
255
+ rendered.should have_tag("td", :text => /user/, :with => { :id => "other-special" })
256
+ rendered.should_not have_tag("td", :text => /user/, :with => { :id => "special" })
257
+ end
258
+
259
+ it "should find tags with count and additional attributes" do
260
+ rendered.should have_tag("div", :with => { :class => "one" }, :count => 6)
261
+ rendered.should have_tag("div", :with => { :class => "two" }, :count => 3)
262
+ end
263
+
264
+ it "should find tags with count, exact text and additional attributes" do
265
+ rendered.should have_tag("div", :with => { :class => "one" }, :count => 3, :text => 'text')
266
+ rendered.should_not have_tag("div", :with => { :class => "one" }, :count => 5, :text => 'text')
267
+ rendered.should_not have_tag("div", :with => { :class => "one" }, :count => 3, :text => 'other text')
268
+ rendered.should_not have_tag("div", :with => { :class => "two" }, :count => 3, :text => 'text')
269
+ end
270
+
271
+ it "should find tags with count, regexp text and additional attributes" do
272
+ rendered.should have_tag("div", :with => { :class => "one" }, :count => 2, :text => /bla/)
273
+ rendered.should have_tag("div", :with => { :class => "two" }, :count => 1, :text => /bla/)
274
+ rendered.should_not have_tag("div", :with => { :class => "one" }, :count => 5, :text => /bla/)
275
+ rendered.should_not have_tag("div", :with => { :class => "one" }, :count => 6, :text => /other bla/)
276
+ end
277
+
278
+ end
279
+
212
280
  context "nested matching:" do
213
281
  before :each do
214
282
  @ordered_list =<<OL
data/spec/spec_helper.rb CHANGED
@@ -1,3 +1,11 @@
1
+ require 'rspec/core'
2
+
3
+ if defined?(SimpleCov)
4
+ SimpleCov.start do
5
+ add_group 'Main', '/lib/'
6
+ end
7
+ end
8
+
1
9
  require 'rspec2-rails-views-matchers'
2
10
 
3
11
  # Requires supporting files with custom matchers and macros, etc,
metadata CHANGED
@@ -1,13 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rspec2-rails-views-matchers
3
3
  version: !ruby/object:Gem::Version
4
- hash: 25
5
4
  prerelease:
6
- segments:
7
- - 0
8
- - 0
9
- - 3
10
- version: 0.0.3
5
+ version: 0.0.4
11
6
  platform: ruby
12
7
  authors:
13
8
  - kucaahbe
@@ -15,7 +10,7 @@ autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
12
 
18
- date: 2011-03-02 00:00:00 +02:00
13
+ date: 2011-03-09 00:00:00 +02:00
19
14
  default_executable:
20
15
  dependencies:
21
16
  - !ruby/object:Gem::Dependency
@@ -26,11 +21,6 @@ dependencies:
26
21
  requirements:
27
22
  - - ">="
28
23
  - !ruby/object:Gem::Version
29
- hash: 15
30
- segments:
31
- - 2
32
- - 0
33
- - 0
34
24
  version: 2.0.0
35
25
  type: :runtime
36
26
  version_requirements: *id001
@@ -42,14 +32,20 @@ dependencies:
42
32
  requirements:
43
33
  - - ~>
44
34
  - !ruby/object:Gem::Version
45
- hash: 15
46
- segments:
47
- - 1
48
- - 4
49
- - 4
50
35
  version: 1.4.4
51
36
  type: :runtime
52
37
  version_requirements: *id002
38
+ - !ruby/object:Gem::Dependency
39
+ name: simplecov
40
+ prerelease: false
41
+ requirement: &id003 !ruby/object:Gem::Requirement
42
+ none: false
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: "0"
47
+ type: :development
48
+ version_requirements: *id003
53
49
  description: Nokogiri based 'have_tag' and 'with_tag' for rspec-2 without assert_select dependencies and useful error messages
54
50
  email:
55
51
  - kucaahbe@ukr.net
@@ -73,6 +69,7 @@ files:
73
69
  - lib/rspec2-rails-views-matchers.rb
74
70
  - lib/version.rb
75
71
  - rspec2-rails-views-matchers.gemspec
72
+ - spec/matchers/form_matchers_spec.rb
76
73
  - spec/matchers/have_tag_spec.rb
77
74
  - spec/spec_helper.rb
78
75
  - spec/support/spec_error.rb
@@ -90,23 +87,17 @@ required_ruby_version: !ruby/object:Gem::Requirement
90
87
  requirements:
91
88
  - - ">="
92
89
  - !ruby/object:Gem::Version
93
- hash: 3
94
- segments:
95
- - 0
96
90
  version: "0"
97
91
  required_rubygems_version: !ruby/object:Gem::Requirement
98
92
  none: false
99
93
  requirements:
100
94
  - - ">="
101
95
  - !ruby/object:Gem::Version
102
- hash: 3
103
- segments:
104
- - 0
105
96
  version: "0"
106
97
  requirements: []
107
98
 
108
99
  rubyforge_project: rspec2-rails-views-matchers
109
- rubygems_version: 1.5.0
100
+ rubygems_version: 1.5.2
110
101
  signing_key:
111
102
  specification_version: 3
112
103
  summary: Nokogiri based 'have_tag' and 'with_tag' for rspec-2 without assert_select dependencies and useful error messages