rspec-html-matchers 0.4.1 → 0.4.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +3 -3
- data/CHANGELOG.md +8 -4
- data/README.md +11 -1
- data/features/support/env.rb +6 -2
- data/lib/rspec-html-matchers.rb +24 -12
- data/rspec-html-matchers.gemspec +3 -1
- data/spec/{assets → fixtures}/form.html +0 -0
- data/spec/{assets → fixtures}/ordered_list.html +0 -0
- data/spec/{assets → fixtures}/paragraphs.html +0 -0
- data/spec/{assets → fixtures}/quotes.html +0 -0
- data/spec/{assets → fixtures}/search_and_submit.html +0 -0
- data/spec/fixtures/single_element.html +1 -0
- data/spec/{assets → fixtures}/special.html +0 -0
- data/spec/matchers/have_tag_spec.rb +17 -1
- data/spec/spec_helper.rb +10 -5
- metadata +38 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c6328e772ffb7996623cb71c27d5769a2a321023
|
4
|
+
data.tar.gz: 0471f0b792afa788a578b429b76168a28892dd1d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 671556c67549c13a77754f096fa180508d68a073c87bba231322cef2962664b7af8aa30c0a85662164bb8507bd278618a7bcacabf7b379f534953547ec852e14
|
7
|
+
data.tar.gz: 686ddbb59fa4ea2fc203c7990bdb1e99e813e06f771b8e3da44e6058e44c01e9c0c7b84fb46df30c5319f03e4d7456857e01841d8072c6ad418208ad64680f27
|
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -4,18 +4,22 @@ Changelog
|
|
4
4
|
unreleased(TODO)
|
5
5
|
----------------
|
6
6
|
|
7
|
-
* add :without to have\_tag? like have_tag('div', :without => { :class => 'test' })
|
8
7
|
* with_tag should raise error when used outside have_tag
|
9
8
|
* add ability to have_form('/url', 'PUT') or have_form('/url', :PUT)
|
10
9
|
* inteligent check comments(make sure it is not searching inside comments)
|
11
10
|
* shouldn't show all markup in error message if it is too big
|
11
|
+
* order matching
|
12
12
|
|
13
|
-
0.5.0
|
14
|
-
|
13
|
+
0.5.0
|
14
|
+
-----
|
15
15
|
|
16
|
-
* order matching
|
17
16
|
* improve documentation, add more usage examples (look at changelog and code!)
|
18
17
|
|
18
|
+
0.4.2
|
19
|
+
-----
|
20
|
+
|
21
|
+
* added :without to have\_tag? like have_tag('div', :without => { :class => 'test' }) NOTE: currently only classes supported
|
22
|
+
|
19
23
|
0.4.1
|
20
24
|
-----
|
21
25
|
|
data/README.md
CHANGED
@@ -95,6 +95,16 @@ Input could be any html string. Let's take a look at these examples:
|
|
95
95
|
'<p class="qwe rty" id="qwerty">Paragraph</p>'.should have_tag('p', :with => { :class => ['qwe', 'rty'] })
|
96
96
|
```
|
97
97
|
|
98
|
+
The same works with `:without`:
|
99
|
+
|
100
|
+
```ruby
|
101
|
+
# all of this are equivalent:
|
102
|
+
'<p class="qwe rty" id="qwerty">Paragraph</p>'.should have_tag('p', :without => { :class => 'qwe rty' })
|
103
|
+
'<p class="qwe rty" id="qwerty">Paragraph</p>'.should have_tag('p', :without => { :class => 'rty qwe' })
|
104
|
+
'<p class="qwe rty" id="qwerty">Paragraph</p>'.should have_tag('p', :without => { :class => ['rty', 'qwe'] })
|
105
|
+
'<p class="qwe rty" id="qwerty">Paragraph</p>'.should have_tag('p', :without => { :class => ['qwe', 'rty'] })
|
106
|
+
```
|
107
|
+
|
98
108
|
* content matching:
|
99
109
|
|
100
110
|
```ruby
|
@@ -172,7 +182,7 @@ Contributors
|
|
172
182
|
- [Simon Schoeters](https://github.com/cimm)
|
173
183
|
- [Felix Tjandrawibawa](https://github.com/cemenghttps://github.com/cemeng)
|
174
184
|
- [Szymon Przybył](https://github.com/apocalyptiq)
|
175
|
-
- [
|
185
|
+
- [Manuel Meurer](https://github.com/manuelmeurer)
|
176
186
|
|
177
187
|
MIT Licensed
|
178
188
|
============
|
data/features/support/env.rb
CHANGED
@@ -2,7 +2,7 @@ require 'sinatra/base'
|
|
2
2
|
require 'capybara/cucumber'
|
3
3
|
require 'rspec-html-matchers'
|
4
4
|
|
5
|
-
$ASSETS_DIR = File.expand_path('
|
5
|
+
$ASSETS_DIR = File.expand_path('../tmp',__FILE__)
|
6
6
|
$INDEX_HTML = File.join($ASSETS_DIR,'index.html')
|
7
7
|
|
8
8
|
class SimpleApp < Sinatra::Base
|
@@ -17,6 +17,10 @@ end
|
|
17
17
|
Capybara.default_driver = :selenium
|
18
18
|
Capybara.app = SimpleApp
|
19
19
|
|
20
|
+
Before do
|
21
|
+
FileUtils.mkdir $ASSETS_DIR
|
22
|
+
end
|
23
|
+
|
20
24
|
After do
|
21
|
-
FileUtils.
|
25
|
+
FileUtils.rm_rf $ASSETS_DIR
|
22
26
|
end
|
data/lib/rspec-html-matchers.rb
CHANGED
@@ -71,19 +71,21 @@ module RSpec
|
|
71
71
|
def initialize tag, options={}, &block
|
72
72
|
@tag, @options, @block = tag.to_s, options, block
|
73
73
|
|
74
|
-
if
|
75
|
-
if classes=
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
74
|
+
if with_attrs = @options.delete(:with)
|
75
|
+
if classes = with_attrs.delete(:class)
|
76
|
+
@tag << '.' + classes_to_selector(classes)
|
77
|
+
end
|
78
|
+
selector = with_attrs.inject('') do |html_attrs_string, (k, v)|
|
79
|
+
html_attrs_string << "[#{k}='#{v}']"
|
80
|
+
html_attrs_string
|
81
|
+
end
|
82
|
+
@tag << selector
|
83
|
+
end
|
84
|
+
|
85
|
+
if without_attrs = @options.delete(:without)
|
86
|
+
if classes = without_attrs.delete(:class)
|
87
|
+
@tag << ":not(.#{classes_to_selector(classes)})"
|
83
88
|
end
|
84
|
-
html_attrs_string=''
|
85
|
-
attrs.each_pair { |k,v| html_attrs_string << %Q{[#{k.to_s}='#{v.to_s}']} }
|
86
|
-
@tag << html_attrs_string
|
87
89
|
end
|
88
90
|
|
89
91
|
validate_options!
|
@@ -124,6 +126,15 @@ module RSpec
|
|
124
126
|
|
125
127
|
private
|
126
128
|
|
129
|
+
def classes_to_selector(classes)
|
130
|
+
case classes
|
131
|
+
when Array
|
132
|
+
classes.join('.')
|
133
|
+
when String
|
134
|
+
classes.gsub(/\s+/, '.')
|
135
|
+
end
|
136
|
+
end
|
137
|
+
|
127
138
|
def tag_presents?
|
128
139
|
if @current_scope.first
|
129
140
|
@count = @current_scope.count
|
@@ -380,6 +391,7 @@ module RSpec
|
|
380
391
|
should_not_have_input(options)
|
381
392
|
end
|
382
393
|
|
394
|
+
# TODO add ability to explicitly say that value should be empty
|
383
395
|
def with_password_field name, value=nil
|
384
396
|
options = form_tag_options('password',name,value)
|
385
397
|
should_have_input(options)
|
data/rspec-html-matchers.gemspec
CHANGED
@@ -3,7 +3,7 @@ $:.push File.expand_path("../lib", __FILE__)
|
|
3
3
|
|
4
4
|
Gem::Specification.new do |s|
|
5
5
|
s.name = 'rspec-html-matchers'
|
6
|
-
s.version = '0.4.
|
6
|
+
s.version = '0.4.2'
|
7
7
|
s.platform = Gem::Platform::RUBY
|
8
8
|
s.authors = ['kucaahbe']
|
9
9
|
s.email = ['kucaahbe@ukr.net']
|
@@ -26,7 +26,9 @@ DESC
|
|
26
26
|
s.add_development_dependency 'simplecov'
|
27
27
|
s.add_development_dependency 'cucumber'
|
28
28
|
s.add_development_dependency 'capybara'
|
29
|
+
s.add_development_dependency 'selenium-webdriver'
|
29
30
|
s.add_development_dependency 'sinatra'
|
30
31
|
s.add_development_dependency 'rake'
|
31
32
|
s.add_development_dependency 'rspec', '>= 2.11.0' # in order to use new expect().to syntax
|
33
|
+
s.add_development_dependency 'travis-lint'
|
32
34
|
end
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -0,0 +1 @@
|
|
1
|
+
<div class="foo bar"></div>
|
File without changes
|
@@ -98,6 +98,22 @@ describe 'have_tag' do
|
|
98
98
|
|
99
99
|
end
|
100
100
|
|
101
|
+
context "with additional HTML attributes (:without option)" do
|
102
|
+
asset 'single_element'
|
103
|
+
|
104
|
+
it "should find tags that have classes specified via array (or string)" do
|
105
|
+
rendered.should_not have_tag('div', :without => { :class => %w(foo bar) })
|
106
|
+
rendered.should_not have_tag('div', :without => { :class => 'foo bar' })
|
107
|
+
rendered.should_not have_tag('div', :without => { :class => 'foo' })
|
108
|
+
rendered.should_not have_tag('div', :without => { :class => 'bar' })
|
109
|
+
end
|
110
|
+
|
111
|
+
it "should not find tags that have classes specified via array (or string)" do
|
112
|
+
rendered.should have_tag('div', :without => { :class => %w(foo baz) })
|
113
|
+
rendered.should have_tag('div', :without => { :class => 'foo baz' })
|
114
|
+
rendered.should have_tag('div', :without => { :class => 'baz' })
|
115
|
+
end
|
116
|
+
end
|
101
117
|
end
|
102
118
|
|
103
119
|
context "by count" do
|
@@ -224,7 +240,7 @@ describe 'have_tag' do
|
|
224
240
|
end
|
225
241
|
|
226
242
|
it "should find with unicode text specified" do
|
227
|
-
expect { rendered.should have_tag('a', :text => "học") }.
|
243
|
+
expect { rendered.should have_tag('a', :text => "học") }.not_to raise_error
|
228
244
|
rendered.should have_tag('a', :text => "học")
|
229
245
|
end
|
230
246
|
|
data/spec/spec_helper.rb
CHANGED
@@ -8,14 +8,19 @@ end
|
|
8
8
|
|
9
9
|
require 'rspec-html-matchers'
|
10
10
|
|
11
|
-
SPEC_DIR = File.dirname(__FILE__)
|
12
|
-
|
13
11
|
module AssetHelpers
|
14
12
|
|
13
|
+
ASSETS = File.expand_path('../fixtures/%s.html',__FILE__)
|
14
|
+
|
15
15
|
def asset name
|
16
|
-
|
17
|
-
|
18
|
-
|
16
|
+
asset_content = fixtures[name] ||= IO.read(ASSETS%name)
|
17
|
+
let(:rendered) { asset_content }
|
18
|
+
end
|
19
|
+
|
20
|
+
private
|
21
|
+
|
22
|
+
def fixtures
|
23
|
+
@assets ||= {}
|
19
24
|
end
|
20
25
|
|
21
26
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rspec-html-matchers
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- kucaahbe
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-
|
11
|
+
date: 2013-07-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|
@@ -80,6 +80,20 @@ dependencies:
|
|
80
80
|
- - '>='
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: selenium-webdriver
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - '>='
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - '>='
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
83
97
|
- !ruby/object:Gem::Dependency
|
84
98
|
name: sinatra
|
85
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -122,6 +136,20 @@ dependencies:
|
|
122
136
|
- - '>='
|
123
137
|
- !ruby/object:Gem::Version
|
124
138
|
version: 2.11.0
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: travis-lint
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - '>='
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '0'
|
146
|
+
type: :development
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - '>='
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '0'
|
125
153
|
description: |
|
126
154
|
Nokogiri based 'have_tag' and 'with_tag' matchers for rspec 2.x.x. Does not depend on assert_select matcher, provides useful error messages.
|
127
155
|
email:
|
@@ -144,12 +172,13 @@ files:
|
|
144
172
|
- features/support/env.rb
|
145
173
|
- lib/rspec-html-matchers.rb
|
146
174
|
- rspec-html-matchers.gemspec
|
147
|
-
- spec/
|
148
|
-
- spec/
|
149
|
-
- spec/
|
150
|
-
- spec/
|
151
|
-
- spec/
|
152
|
-
- spec/
|
175
|
+
- spec/fixtures/form.html
|
176
|
+
- spec/fixtures/ordered_list.html
|
177
|
+
- spec/fixtures/paragraphs.html
|
178
|
+
- spec/fixtures/quotes.html
|
179
|
+
- spec/fixtures/search_and_submit.html
|
180
|
+
- spec/fixtures/single_element.html
|
181
|
+
- spec/fixtures/special.html
|
153
182
|
- spec/matchers/form_matchers_spec.rb
|
154
183
|
- spec/matchers/have_tag_spec.rb
|
155
184
|
- spec/spec_helper.rb
|
@@ -172,7 +201,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
172
201
|
version: '0'
|
173
202
|
requirements: []
|
174
203
|
rubyforge_project: rspec-html-matchers
|
175
|
-
rubygems_version: 2.0.
|
204
|
+
rubygems_version: 2.0.3
|
176
205
|
signing_key:
|
177
206
|
specification_version: 4
|
178
207
|
summary: Nokogiri based 'have_tag' and 'with_tag' matchers for rspec 2.x.x
|