rspec-html-matchers 0.9.2 → 0.9.3

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.
@@ -1,52 +1,51 @@
1
- # frozen_string_literal: true
2
1
  # encoding: UTF-8
2
+ # frozen_string_literal: true
3
3
 
4
- module RSpecHtmlMatchers
4
+ require 'nokogiri'
5
5
 
6
+ module RSpecHtmlMatchers
6
7
  # @api
7
8
  # @private
8
- class HaveTag
9
- attr_reader :failure_message, :failure_message_when_negated
10
- attr_reader :parent_scope, :current_scope
11
-
9
+ class HaveTag # rubocop:disable Metrics/ClassLength
12
10
  DESCRIPTIONS = {
13
- :have_at_least_1 => %Q|have at least 1 element matching "%s"|,
14
- :have_n => %Q|have %i element(s) matching "%s"|
15
- }
11
+ :have_at_least_1 => %(have at least 1 element matching "%s"),
12
+ :have_n => %(have %i element(s) matching "%s"),
13
+ }.freeze
16
14
 
17
15
  MESSAGES = {
18
- :expected_tag => %Q|expected following:\n%s\nto #{DESCRIPTIONS[:have_at_least_1]}, found 0.|,
19
- :unexpected_tag => %Q|expected following:\n%s\nto NOT have element matching "%s", found %s.|,
20
-
21
- :expected_count => %Q|expected following:\n%s\nto #{DESCRIPTIONS[:have_n]}, found %s.|,
22
- :unexpected_count => %Q|expected following:\n%s\nto NOT have %i element(s) matching "%s", but found.|,
16
+ :expected_tag => %(expected following:\n%s\nto #{DESCRIPTIONS[:have_at_least_1]}, found 0.),
17
+ :unexpected_tag => %(expected following:\n%s\nto NOT have element matching "%s", found %s.),
23
18
 
24
- :expected_btw_count => %Q|expected following:\n%s\nto have at least %i and at most %i element(s) matching "%s", found %i.|,
25
- :unexpected_btw_count => %Q|expected following:\n%s\nto NOT have at least %i and at most %i element(s) matching "%s", but found %i.|,
19
+ :expected_count => %(expected following:\n%s\nto #{DESCRIPTIONS[:have_n]}, found %s.),
20
+ :unexpected_count => %(expected following:\n%s\nto NOT have %i element(s) matching "%s", but found.),
26
21
 
27
- :expected_at_most => %Q|expected following:\n%s\nto have at most %i element(s) matching "%s", found %i.|,
28
- :unexpected_at_most => %Q|expected following:\n%s\nto NOT have at most %i element(s) matching "%s", but found %i.|,
22
+ :expected_btw_count => %(expected following:\n%s\nto have at least %i and at most %i element(s) matching "%s", found %i.),
23
+ :unexpected_btw_count => %(expected following:\n%s\nto NOT have at least %i and at most %i element(s) matching "%s", but found %i.),
29
24
 
30
- :expected_at_least => %Q|expected following:\n%s\nto have at least %i element(s) matching "%s", found %i.|,
31
- :unexpected_at_least => %Q|expected following:\n%s\nto NOT have at least %i element(s) matching "%s", but found %i.|,
25
+ :expected_at_most => %(expected following:\n%s\nto have at most %i element(s) matching "%s", found %i.),
26
+ :unexpected_at_most => %(expected following:\n%s\nto NOT have at most %i element(s) matching "%s", but found %i.),
32
27
 
33
- :expected_blank => %Q|expected following template to contain empty tag %s:\n%s|,
34
- :unexpected_blank => %Q|expected following template to contain tag %s with other tags:\n%s|,
28
+ :expected_at_least => %(expected following:\n%s\nto have at least %i element(s) matching "%s", found %i.),
29
+ :unexpected_at_least => %(expected following:\n%s\nto NOT have at least %i element(s) matching "%s", but found %i.),
35
30
 
36
- :expected_regexp => %Q|%s regexp expected within "%s" in following template:\n%s|,
37
- :unexpected_regexp => %Q|%s regexp unexpected within "%s" in following template:\n%s\nbut was found.|,
31
+ :expected_blank => %(expected following template to contain empty tag %s:\n%s),
32
+ :unexpected_blank => %(expected following template to contain tag %s with other tags:\n%s),
38
33
 
39
- :expected_text => %Q|"%s" expected within "%s" in following template:\n%s|,
40
- :unexpected_text => %Q|"%s" unexpected within "%s" in following template:\n%s\nbut was found.|,
34
+ :expected_regexp => %(%s regexp expected within "%s" in following template:\n%s),
35
+ :unexpected_regexp => %(%s regexp unexpected within "%s" in following template:\n%s\nbut was found.),
41
36
 
42
- :wrong_count_error => %Q|:count with :minimum or :maximum has no sence!|,
43
- :min_max_error => %Q|:minimum should be less than :maximum!|,
44
- :bad_range_error => %Q|Your :count range(%s) has no sence!|,
45
- }
37
+ :expected_text => %("%s" expected within "%s" in following template:\n%s),
38
+ :unexpected_text => %("%s" unexpected within "%s" in following template:\n%s\nbut was found.),
46
39
 
40
+ :wrong_count_error => %(:count with :minimum or :maximum has no sence!),
41
+ :min_max_error => %(:minimum should be less than :maximum!),
42
+ :bad_range_error => %(Your :count range(%s) has no sence!),
43
+ }.freeze
47
44
 
48
- def initialize tag, options={}, &block
49
- @tag, @options, @block = tag.to_s, options, block
45
+ def initialize tag, options = {}, &block
46
+ @tag = tag.to_s
47
+ @options = options
48
+ @block = block
50
49
 
51
50
  if with_attrs = @options.delete(:with)
52
51
  if classes = with_attrs.delete(:class)
@@ -66,30 +65,35 @@ module RSpecHtmlMatchers
66
65
  end
67
66
 
68
67
  validate_options!
69
- set_options
68
+ organize_options!
70
69
  end
71
70
 
72
- def matches? document, &block
71
+ attr_reader :failure_message
72
+ attr_reader :failure_message_when_negated
73
+ attr_reader :current_scope
74
+
75
+ def matches? src, &block
73
76
  @block = block if block
74
77
 
75
- document = document.html if defined?(Capybara::Session) && document.is_a?(Capybara::Session)
78
+ src = src.html if defined?(Capybara::Session) && src.is_a?(Capybara::Session)
76
79
 
77
- case document
78
- when String
79
- @parent_scope = Nokogiri::HTML(document)
80
- @document = document
81
- else
82
- @parent_scope = document.current_scope
83
- @document = @parent_scope.to_html
80
+ case src
81
+ when String
82
+ parent_scope = Nokogiri::HTML::DocumentFragment.parse(src)
83
+ @document = src
84
+ else
85
+ parent_scope = src.current_scope
86
+ @document = parent_scope.to_html
84
87
  end
88
+
85
89
  @current_scope = begin
86
- @parent_scope.css(@tag)
90
+ parent_scope.css(tag)
87
91
  # on jruby this produce exception if css was not found:
88
92
  # undefined method `decorate' for nil:NilClass
89
93
  rescue NoMethodError
90
94
  Nokogiri::XML::NodeSet.new(Nokogiri::XML::Document.new)
91
95
  end
92
- if tag_presents? and proper_content? and count_right?
96
+ if tag_presents? && proper_content? && count_right?
93
97
  @block.call(self) if @block
94
98
  true
95
99
  else
@@ -97,60 +101,74 @@ module RSpecHtmlMatchers
97
101
  end
98
102
  end
99
103
 
100
- def document
101
- @document
102
- end
103
-
104
104
  def description
105
- # TODO should it be more complicated?
106
- if @options.has_key?(:count)
107
- DESCRIPTIONS[:have_n] % [@options[:count],@tag]
105
+ # TODO: should it be more complicated?
106
+ if options.key?(:count)
107
+ format(DESCRIPTIONS[:have_n], options[:count], tag)
108
108
  else
109
- DESCRIPTIONS[:have_at_least_1] % @tag
109
+ DESCRIPTIONS[:have_at_least_1] % tag
110
110
  end
111
111
  end
112
112
 
113
113
  private
114
114
 
115
- def classes_to_selector(classes)
115
+ attr_reader :tag
116
+ attr_reader :options
117
+ attr_reader :document
118
+
119
+ def classes_to_selector classes
116
120
  case classes
117
- when Array
118
- classes.join('.')
119
- when String
120
- classes.gsub(/\s+/, '.')
121
+ when Array
122
+ classes.join('.')
123
+ when String
124
+ classes.gsub(/\s+/, '.')
121
125
  end
122
126
  end
123
127
 
124
128
  def tag_presents?
125
- if @current_scope.first
126
- @count = @current_scope.count
127
- @failure_message_when_negated = MESSAGES[:unexpected_tag] % [@document, @tag, @count]
128
- true
129
+ if current_scope.first
130
+ @count = current_scope.count
131
+ match_succeeded! :unexpected_tag, document, tag, @count
129
132
  else
130
- @failure_message = MESSAGES[:expected_tag] % [@document, @tag]
131
- false
133
+ match_failed! :expected_tag, document, tag
132
134
  end
133
135
  end
134
136
 
135
- def count_right?
136
- case @options[:count]
137
- when Integer
138
- ((@failure_message_when_negated=MESSAGES[:unexpected_count] % [@document,@count,@tag]) && @count == @options[:count]) || (@failure_message=MESSAGES[:expected_count] % [@document,@options[:count],@tag,@count]; false)
139
- when Range
140
- ((@failure_message_when_negated=MESSAGES[:unexpected_btw_count] % [@document,@options[:count].min,@options[:count].max,@tag,@count]) && @options[:count].member?(@count)) || (@failure_message=MESSAGES[:expected_btw_count] % [@document,@options[:count].min,@options[:count].max,@tag,@count]; false)
141
- when nil
142
- if @options[:maximum]
143
- ((@failure_message_when_negated=MESSAGES[:unexpected_at_most] % [@document,@options[:maximum],@tag,@count]) && @count <= @options[:maximum]) || (@failure_message=MESSAGES[:expected_at_most] % [@document,@options[:maximum],@tag,@count]; false)
144
- elsif @options[:minimum]
145
- ((@failure_message_when_negated=MESSAGES[:unexpected_at_least] % [@document,@options[:minimum],@tag,@count]) && @count >= @options[:minimum]) || (@failure_message=MESSAGES[:expected_at_least] % [@document,@options[:minimum],@tag,@count]; false)
137
+ def count_right? # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
138
+ case options[:count]
139
+ when Integer
140
+ if @count == options[:count]
141
+ match_succeeded! :unexpected_count, document, @count, tag
142
+ else
143
+ match_failed! :expected_count, document, options[:count], tag, @count
144
+ end
145
+ when Range
146
+ if options[:count].member? @count
147
+ match_succeeded! :unexpected_btw_count, document, options[:count].min, options[:count].max, tag, @count
148
+ else
149
+ match_failed! :expected_btw_count, document, options[:count].min, options[:count].max, tag, @count
150
+ end
151
+ when nil
152
+ if options[:maximum]
153
+ if @count <= options[:maximum]
154
+ match_succeeded! :unexpected_at_most, document, options[:maximum], tag, @count
146
155
  else
147
- true
156
+ match_failed! :expected_at_most, document, options[:maximum], tag, @count
148
157
  end
158
+ elsif options[:minimum]
159
+ if @count >= options[:minimum]
160
+ match_succeeded! :unexpected_at_least, document, options[:minimum], tag, @count
161
+ else
162
+ match_failed! :expected_at_least, document, options[:minimum], tag, @count
163
+ end
164
+ else
165
+ true
166
+ end
149
167
  end
150
168
  end
151
169
 
152
170
  def proper_content?
153
- if @options.key?(:blank)
171
+ if options.key?(:blank)
154
172
  maybe_empty?
155
173
  else
156
174
  text_right?
@@ -158,50 +176,36 @@ module RSpecHtmlMatchers
158
176
  end
159
177
 
160
178
  def maybe_empty?
161
- if @options[:blank]
162
- @failure_message_when_negated = MESSAGES[:unexpected_blank] % [@tag, @document]
163
- @failure_message = MESSAGES[:expected_blank] % [@tag, @document]
164
- else
165
- @failure_message_when_negated = MESSAGES[:expected_blank] % [@tag, @document]
166
- @failure_message = MESSAGES[:unexpected_blank] % [@tag, @document]
167
- end
168
-
169
- if @options[:blank]
170
- @current_scope.children.empty?
179
+ if options[:blank] && current_scope.children.empty?
180
+ match_succeeded! :unexpected_blank, tag, document
171
181
  else
172
- !@current_scope.children.empty?
182
+ match_failed! :expected_blank, tag, document
173
183
  end
174
184
  end
175
185
 
176
186
  def text_right?
177
- return true unless @options[:text]
178
-
179
- case text=@options[:text]
180
- when Regexp
181
- new_scope = @current_scope.css(':regexp()',NokogiriRegexpHelper.new(text))
182
- unless new_scope.empty?
183
- @count = new_scope.count
184
- @failure_message_when_negated = MESSAGES[:unexpected_regexp] % [text.inspect,@tag,@document]
185
- true
186
- else
187
- @failure_message = MESSAGES[:expected_regexp] % [text.inspect,@tag,@document]
188
- false
189
- end
187
+ return true unless options[:text]
188
+
189
+ case text = options[:text]
190
+ when Regexp
191
+ new_scope = current_scope.css(':regexp()', NokogiriRegexpHelper.new(text))
192
+ if new_scope.empty?
193
+ match_failed! :expected_regexp, text.inspect, tag, document
190
194
  else
191
- new_scope = @current_scope.css(':content()', NokogiriTextHelper.new(text, @options[:squeeze_text]))
192
- unless new_scope.empty?
193
- @count = new_scope.count
194
- @failure_message_when_negated = MESSAGES[:unexpected_text] % [text,@tag,@document]
195
- true
196
- else
197
- @failure_message = MESSAGES[:expected_text] % [text,@tag,@document]
198
- false
199
- end
195
+ @count = new_scope.count
196
+ match_succeeded! :unexpected_regexp, text.inspect, tag, document
197
+ end
198
+ else
199
+ new_scope = current_scope.css(':content()', NokogiriTextHelper.new(text, options[:squeeze_text]))
200
+ if new_scope.empty?
201
+ match_failed! :expected_text, text, tag, document
202
+ else
203
+ @count = new_scope.count
204
+ match_succeeded! :unexpected_text, text, tag, document
205
+ end
200
206
  end
201
207
  end
202
208
 
203
- protected
204
-
205
209
  def validate_options!
206
210
  validate_text_options!
207
211
  validate_count_presence!
@@ -211,56 +215,60 @@ module RSpecHtmlMatchers
211
215
 
212
216
  def validate_text_options!
213
217
  # TODO: test these options validations
214
- if @options.key?(:blank)
215
- raise ':text option is not accepted when :blank => true' if @options[:blank] && @options.key?(:text)
218
+ if options.key?(:blank) && options[:blank] && options.key?(:text) # rubocop:disable Style/GuardClause, Style/IfUnlessModifier
219
+ raise ':text option is not accepted when :blank => true'
216
220
  end
217
221
  end
218
222
 
219
223
  def validate_count_presence!
220
- raise 'wrong :count specified' unless [Range, NilClass].include?(@options[:count].class) or @options[:count].is_a?(Integer)
224
+ raise 'wrong :count specified' unless [Range, NilClass].include?(options[:count].class) || options[:count].is_a?(Integer)
221
225
 
222
226
  [:min, :minimum, :max, :maximum].each do |key|
223
- raise MESSAGES[:wrong_count_error] if @options.has_key?(key) and @options.has_key?(:count)
227
+ raise MESSAGES[:wrong_count_error] if options.key?(key) && options.key?(:count)
224
228
  end
225
229
  end
226
230
 
227
231
  def validate_count_when_set_min_max!
228
- begin
229
- raise MESSAGES[:min_max_error] if @options[:minimum] > @options[:maximum]
230
- rescue NoMethodError # nil > 4
231
- rescue ArgumentError # 2 < nil
232
- end
232
+ raise MESSAGES[:min_max_error] if options[:minimum] > options[:maximum]
233
+ rescue NoMethodError # nil > 4 # rubocop:disable Lint/HandleExceptions
234
+ rescue ArgumentError # 2 < nil # rubocop:disable Lint/HandleExceptions
233
235
  end
234
236
 
235
237
  def validate_count_when_set_range!
236
238
  begin
237
- begin
238
- raise MESSAGES[:bad_range_error] % [@options[:count].to_s] if count_is_range_but_no_min?
239
- rescue ArgumentError, "comparison of String with" # if @options[:count] == 'a'..'z'
240
- raise MESSAGES[:bad_range_error] % [@options[:count].to_s]
241
- end
242
- rescue TypeError # fix for 1.8.7 for 'rescue ArgumentError, "comparison of String with"' stroke
243
- raise MESSAGES[:bad_range_error] % [@options[:count].to_s]
239
+ raise format(MESSAGES[:bad_range_error], options[:count].to_s) if count_is_range_but_no_min?
240
+ rescue ArgumentError, 'comparison of String with' # if options[:count] == 'a'..'z' # rubocop:disable Lint/RescueType
241
+ raise format(MESSAGES[:bad_range_error], options[:count].to_s)
244
242
  end
243
+ rescue TypeError # fix for 1.8.7 for 'rescue ArgumentError, "comparison of String with"' stroke
244
+ raise format(MESSAGES[:bad_range_error], options[:count].to_s)
245
245
  end
246
246
 
247
247
  def count_is_range_but_no_min?
248
- @options[:count] && @options[:count].is_a?(Range) &&
249
- (@options[:count].min.nil? or @options[:count].min < 0)
248
+ options[:count].is_a?(Range) &&
249
+ (options[:count].min.nil? || (options[:count].min < 0))
250
250
  end
251
251
 
252
- def set_options
252
+ def organize_options!
253
253
  @options[:minimum] ||= @options.delete(:min)
254
254
  @options[:maximum] ||= @options.delete(:max)
255
255
 
256
- @options[:text] = @options[:text].to_s if @options.has_key?(:text) && !@options[:text].is_a?(Regexp)
256
+ @options[:text] = @options[:text].to_s if @options.key?(:text) && !@options[:text].is_a?(Regexp)
257
257
 
258
- if @options.has_key?(:seen) && !@options[:seen].is_a?(Regexp)
258
+ if @options.key?(:seen) && !@options[:seen].is_a?(Regexp) # rubocop:disable Style/GuardClause
259
259
  @options[:text] = @options[:seen].to_s
260
260
  @options[:squeeze_text] = true
261
261
  end
262
262
  end
263
263
 
264
- end
264
+ def match_succeeded! message, *args
265
+ @failure_message_when_negated = format MESSAGES[message], *args
266
+ true
267
+ end
265
268
 
269
+ def match_failed! message, *args
270
+ @failure_message = format MESSAGES[message], *args
271
+ false
272
+ end
273
+ end
266
274
  end
@@ -1,13 +1,12 @@
1
- # frozen_string_literal: true
2
1
  # encoding: UTF-8
2
+ # frozen_string_literal: true
3
3
 
4
4
  module RSpecHtmlMatchers
5
-
6
5
  # @api
7
6
  # @private
8
7
  # for nokogiri regexp matching
9
8
  class NokogiriRegexpHelper
10
- def initialize(regex)
9
+ def initialize regex
11
10
  @regex = regex
12
11
  end
13
12
 
@@ -15,5 +14,4 @@ module RSpecHtmlMatchers
15
14
  node_set.find_all { |node| node.content =~ @regex }
16
15
  end
17
16
  end
18
-
19
- end
17
+ end
@@ -1,8 +1,7 @@
1
- # frozen_string_literal: true
2
1
  # encoding: UTF-8
2
+ # frozen_string_literal: true
3
3
 
4
4
  module RSpecHtmlMatchers
5
-
6
5
  # @api
7
6
  # @private
8
7
  class NokogiriTextHelper
@@ -16,11 +15,10 @@ module RSpecHtmlMatchers
16
15
  def content node_set
17
16
  node_set.find_all do |node|
18
17
  actual_content = node.content.gsub(NON_BREAKING_SPACE, ' ')
19
- actual_content = node.content.strip.squeeze(' ') if @squeeze_text
18
+ actual_content = node.content.gsub(/\s+/, ' ').strip if @squeeze_text
20
19
 
21
20
  actual_content == @text
22
21
  end
23
22
  end
24
23
  end
25
-
26
- end
24
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RSpecHtmlMatchers
2
- VERSION = '0.9.2'
4
+ VERSION = '0.9.3'
3
5
  end
@@ -1,53 +1,55 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
- describe "have_form" do
5
+ describe 'have_form' do
4
6
  asset 'form'
5
7
 
6
- context "without &block" do
7
- it "should find form" do
8
+ context 'without &block' do
9
+ it 'should find form' do
8
10
  # sanity check
9
- expect(rendered).to have_form("/books", :post)
10
- expect(rendered).to have_form("/books", "post", :with => { :id => "new_book", :class => %w(book formtastic) })
11
+ expect(rendered).to have_form('/books', :post)
12
+ expect(rendered).to have_form('/books', 'post', :with => { :id => 'new_book', :class => %w[book formtastic] })
11
13
  end
12
14
 
13
- it "should not find form" do
14
- expect(rendered).to_not have_form("/some_url", :post)
15
- expect(rendered).to_not have_form("/books", :get)
15
+ it 'should not find form' do
16
+ expect(rendered).to_not have_form('/some_url', :post)
17
+ expect(rendered).to_not have_form('/books', :get)
16
18
  end
17
19
  end
18
20
 
19
- context "with &block" do
20
- context "with_select" do
21
- it "should find select" do
22
- expect(rendered).to have_form("/books", :post) do
23
- with_select("book[publisher_id]", :with => { :id => "book_publisher_id" })
24
- with_select("book[publisher_id]", :with => { :id => "book_publisher_id" })
21
+ context 'with &block' do
22
+ context 'with_select' do
23
+ it 'should find select' do
24
+ expect(rendered).to have_form('/books', :post) do
25
+ with_select('book[publisher_id]', :with => { :id => 'book_publisher_id' })
26
+ with_select('book[publisher_id]', :with => { :id => 'book_publisher_id' })
25
27
  end
26
28
  end
27
29
 
28
- it "should not find select" do
29
- expect(rendered).to have_form("/books", :post) do
30
- without_select("book[publisher_id]", :with => { :id => "other_id" })
31
- without_select("koob[publisher_id]", :with => { :id => "book_publisher_id" })
30
+ it 'should not find select' do
31
+ expect(rendered).to have_form('/books', :post) do
32
+ without_select('book[publisher_id]', :with => { :id => 'other_id' })
33
+ without_select('koob[publisher_id]', :with => { :id => 'book_publisher_id' })
32
34
  end
33
35
  end
34
36
 
35
- context "with_option" do
36
- it "should find options" do
37
- expect(rendered).to have_form("/books", :post) do
38
- with_select("book[publisher_id]") do
37
+ context 'with_option' do
38
+ it 'should find options' do
39
+ expect(rendered).to have_form('/books', :post) do
40
+ with_select('book[publisher_id]') do
39
41
  with_option(nil)
40
- with_option("The Pragmatic Bookshelf", :selected => true)
41
- with_option(/sitepoint/,2)
42
+ with_option('The Pragmatic Bookshelf', :selected => true)
43
+ with_option(/sitepoint/, 2)
42
44
  with_option("O'Reilly", 3, :selected => false)
43
45
  end
44
46
  end
45
47
  end
46
48
 
47
- it "should not find options" do
48
- expect(rendered).to have_form("/books", :post) do
49
- with_select("book[publisher_id]") do
50
- without_option("blah blah")
49
+ it 'should not find options' do
50
+ expect(rendered).to have_form('/books', :post) do
51
+ with_select('book[publisher_id]') do
52
+ without_option('blah blah')
51
53
  without_option("O'Reilly", 3, :selected => true)
52
54
  without_option("O'Reilly", 100500)
53
55
  end
@@ -55,245 +57,245 @@ describe "have_form" do
55
57
  end
56
58
  end
57
59
 
58
- context "with_button" do
59
- it "should find button" do
60
- expect(rendered).to have_form("/books", :post) do
61
- with_button("Cancel Book")
60
+ context 'with_button' do
61
+ it 'should find button' do
62
+ expect(rendered).to have_form('/books', :post) do
63
+ with_button('Cancel Book')
62
64
  end
63
65
  end
64
66
 
65
- it "should not find button" do
66
- expect(rendered).to have_form("/books", :post) do
67
- without_button("Create Book")
67
+ it 'should not find button' do
68
+ expect(rendered).to have_form('/books', :post) do
69
+ without_button('Create Book')
68
70
  end
69
71
  end
70
72
  end
71
73
  end
72
74
 
73
- context "with_hidden_field" do
74
- it "should find hidden field" do
75
- expect(rendered).to have_form("/books", :post) do
76
- with_hidden_field("authenticity_token")
77
- with_hidden_field("authenticity_token", '718WaH76RAbIVhDlnOidgew62ikn8IUCOyWLEqjw1GE=')
75
+ context 'with_hidden_field' do
76
+ it 'should find hidden field' do
77
+ expect(rendered).to have_form('/books', :post) do
78
+ with_hidden_field('authenticity_token')
79
+ with_hidden_field('authenticity_token', '718WaH76RAbIVhDlnOidgew62ikn8IUCOyWLEqjw1GE=')
78
80
  end
79
81
  end
80
82
 
81
- it "should not find hidden field" do
82
- expect(rendered).to have_form("/books", :post) do
83
+ it 'should not find hidden field' do
84
+ expect(rendered).to have_form('/books', :post) do
83
85
  without_hidden_field('user_id')
84
86
  without_hidden_field('authenticity_token', 'blabla')
85
87
  end
86
88
  end
87
89
  end
88
90
 
89
- context "with_text_field" do
90
- it "should find text field" do
91
- expect(rendered).to have_form("/books", :post) do
91
+ context 'with_text_field' do
92
+ it 'should find text field' do
93
+ expect(rendered).to have_form('/books', :post) do
92
94
  with_text_field('book[title]')
93
- with_text_field('book[title]',nil)
94
- with_text_field('book[author]','Authorname')
95
+ with_text_field('book[title]', nil)
96
+ with_text_field('book[author]', 'Authorname')
95
97
  end
96
98
  end
97
99
 
98
- it "should not find text field" do
99
- expect(rendered).to have_form("/books", :post) do
100
- without_text_field('book[title]','title does not exist')
100
+ it 'should not find text field' do
101
+ expect(rendered).to have_form('/books', :post) do
102
+ without_text_field('book[title]', 'title does not exist')
101
103
  without_text_field('book[authoRR]')
102
104
  without_text_field('book[blabla]')
103
105
  end
104
106
  end
105
107
  end
106
108
 
107
- context "with_email_field" do
108
- it "should find email field" do
109
- expect(rendered).to have_form("/books", :post) do
109
+ context 'with_email_field' do
110
+ it 'should find email field' do
111
+ expect(rendered).to have_form('/books', :post) do
110
112
  with_email_field('user[email]')
111
113
  with_email_field('user[email]', 'email@example.com')
112
114
  with_email_field('user[email_confirmation]', nil)
113
115
  end
114
116
  end
115
117
 
116
- it "should not find email field" do
117
- expect(rendered).to have_form("/books", :post) do
118
- without_email_field('book[author]','Authorname')
118
+ it 'should not find email field' do
119
+ expect(rendered).to have_form('/books', :post) do
120
+ without_email_field('book[author]', 'Authorname')
119
121
  without_email_field('user[emaiL]')
120
122
  without_email_field('user[apocalyptiq]')
121
123
  end
122
124
  end
123
125
  end
124
126
 
125
- context "with_url_field" do
126
- it "should find url field" do
127
- expect(rendered).to have_form("/books", :post) do
127
+ context 'with_url_field' do
128
+ it 'should find url field' do
129
+ expect(rendered).to have_form('/books', :post) do
128
130
  with_url_field('user[url]')
129
131
  with_url_field('user[url]', 'http://user.com')
130
132
  end
131
133
  end
132
134
 
133
- it "should not find url field" do
134
- expect(rendered).to have_form("/books", :post) do
135
- without_url_field('user[url]','Authorname')
135
+ it 'should not find url field' do
136
+ expect(rendered).to have_form('/books', :post) do
137
+ without_url_field('user[url]', 'Authorname')
136
138
  without_url_field('user[emaiL]')
137
139
  without_url_field('user[apocalyptiq]')
138
140
  end
139
141
  end
140
142
  end
141
143
 
142
- context "with_number_field" do
143
- it "should find number field" do
144
- expect(rendered).to have_form("/books", :post) do
144
+ context 'with_number_field' do
145
+ it 'should find number field' do
146
+ expect(rendered).to have_form('/books', :post) do
145
147
  with_number_field('number')
146
148
  with_number_field('number_defined', 3)
147
149
  with_number_field('number_defined', '3')
148
150
  end
149
151
  end
150
152
 
151
- it "should not find number field" do
152
- expect(rendered).to have_form("/books", :post) do
153
- without_number_field('number',400)
154
- without_number_field('number','400')
153
+ it 'should not find number field' do
154
+ expect(rendered).to have_form('/books', :post) do
155
+ without_number_field('number', 400)
156
+ without_number_field('number', '400')
155
157
  without_number_field('user[emaiL]')
156
158
  without_number_field('user[apocalyptiq]')
157
159
  end
158
160
  end
159
161
  end
160
162
 
161
- context "with_range_field" do
162
- it "should find range field" do
163
- expect(rendered).to have_form("/books", :post) do
163
+ context 'with_range_field' do
164
+ it 'should find range field' do
165
+ expect(rendered).to have_form('/books', :post) do
164
166
  with_range_field('range1', 1, 3)
165
- with_range_field('range1','1','3')
166
- with_range_field('range2', 1, 3, :with => { :value => 2 } )
167
- with_range_field('range2', 1, 3, :with => { :value => '2' } )
167
+ with_range_field('range1', '1', '3')
168
+ with_range_field('range2', 1, 3, :with => { :value => 2 })
169
+ with_range_field('range2', 1, 3, :with => { :value => '2' })
168
170
  end
169
171
  end
170
172
 
171
- it "should not find range field" do
172
- expect(rendered).to have_form("/books", :post) do
173
+ it 'should not find range field' do
174
+ expect(rendered).to have_form('/books', :post) do
173
175
  without_range_field('number')
174
176
  without_range_field('range1', 1, 5)
175
- without_range_field('range2', 1, 3, :with => { :value => 5 } )
177
+ without_range_field('range2', 1, 3, :with => { :value => 5 })
176
178
  end
177
179
  end
178
180
  end
179
181
 
180
- context "with_date_field" do
181
- it "should find date field" do
182
- expect(rendered).to have_form("/books", :post) do
182
+ context 'with_date_field' do
183
+ it 'should find date field' do
184
+ expect(rendered).to have_form('/books', :post) do
183
185
  with_date_field(:date)
184
186
  with_date_field(:date, 'book_date')
185
187
  with_date_field(:month, 'book_month', :with => { :value => 5 })
186
- with_date_field(:week,'book_week')
188
+ with_date_field(:week, 'book_week')
187
189
  with_date_field(:time, 'book_time')
188
190
  with_date_field(:datetime, 'book_datetime')
189
191
  with_date_field('datetime-local', 'book_datetime_local')
190
192
  end
191
193
  end
192
194
 
193
- it "should not find date field" do
194
- expect(rendered).to have_form("/books", :post) do
195
+ it 'should not find date field' do
196
+ expect(rendered).to have_form('/books', :post) do
195
197
  without_date_field(:date, 'book_something')
196
198
  without_date_field(:month, 'book_month', :with => { :value => 100500 })
197
199
  end
198
200
  end
199
201
 
200
- it "should raise exception if wrong date field type specified" do
202
+ it 'should raise exception if wrong date field type specified' do
201
203
  expect do
202
- expect(rendered).to have_form("/books", :post) do
204
+ expect(rendered).to have_form('/books', :post) do
203
205
  without_date_field(:unknown, 'book_something')
204
206
  end
205
207
  end.to raise_error('unknown type `unknown` for date picker')
206
208
  expect do
207
- expect(rendered).to have_form("/books", :post) do
209
+ expect(rendered).to have_form('/books', :post) do
208
210
  with_date_field(:unknown, 'book_something')
209
211
  end
210
212
  end.to raise_error('unknown type `unknown` for date picker')
211
213
  end
212
214
  end
213
215
 
214
- context "with_password_field" do
215
- it "should find password field" do
216
- expect(rendered).to have_form("/books", :post) do
216
+ context 'with_password_field' do
217
+ it 'should find password field' do
218
+ expect(rendered).to have_form('/books', :post) do
217
219
  with_password_field('user[password]')
218
220
  end
219
221
  end
220
222
 
221
- it "should not find password field" do
222
- expect(rendered).to have_form("/books", :post) do
223
+ it 'should not find password field' do
224
+ expect(rendered).to have_form('/books', :post) do
223
225
  without_password_field('account[password]')
224
226
  end
225
227
  end
226
228
  end
227
229
 
228
- context "with_file_field" do
229
- it "should find file field" do
230
- expect(rendered).to have_form("/books", :post) do
230
+ context 'with_file_field' do
231
+ it 'should find file field' do
232
+ expect(rendered).to have_form('/books', :post) do
231
233
  with_file_field('form[file]')
232
234
  end
233
235
  end
234
236
 
235
- it "should not find file field" do
236
- expect(rendered).to have_form("/books", :post) do
237
+ it 'should not find file field' do
238
+ expect(rendered).to have_form('/books', :post) do
237
239
  without_file_field('user[file]')
238
240
  end
239
241
  end
240
242
  end
241
243
 
242
- context "with_text_area" do
243
- it "should find text area" do
244
- expect(rendered).to have_form("/books", :post) do
244
+ context 'with_text_area' do
245
+ it 'should find text area' do
246
+ expect(rendered).to have_form('/books', :post) do
245
247
  with_text_area('book[description]')
246
248
  end
247
249
  end
248
250
 
249
- it "should not find text area" do
250
- expect(rendered).to have_form("/books", :post) do
251
+ it 'should not find text area' do
252
+ expect(rendered).to have_form('/books', :post) do
251
253
  without_text_area('user[bio]')
252
254
  end
253
255
  end
254
256
  end
255
257
 
256
- context "with_check_box" do
257
- it "should find check box" do
258
- expect(rendered).to have_form("/books", :post) do
259
- with_checkbox("book[still_in_print]")
260
- with_checkbox("book[still_in_print]","1")
258
+ context 'with_check_box' do
259
+ it 'should find check box' do
260
+ expect(rendered).to have_form('/books', :post) do
261
+ with_checkbox('book[still_in_print]')
262
+ with_checkbox('book[still_in_print]', '1')
261
263
  end
262
264
  end
263
265
 
264
- it "should not find check box" do
265
- expect(rendered).to have_form("/books", :post) do
266
- without_checkbox("book[book]")
267
- without_checkbox("book[still_in_print]","500")
266
+ it 'should not find check box' do
267
+ expect(rendered).to have_form('/books', :post) do
268
+ without_checkbox('book[book]')
269
+ without_checkbox('book[still_in_print]', '500')
268
270
  end
269
271
  end
270
272
  end
271
273
 
272
- context "with_radio_button" do
273
- it "should find radio button" do
274
- expect(rendered).to have_form("/books", :post) do
275
- with_radio_button("form[name]","true")
274
+ context 'with_radio_button' do
275
+ it 'should find radio button' do
276
+ expect(rendered).to have_form('/books', :post) do
277
+ with_radio_button('form[name]', 'true')
276
278
  end
277
279
  end
278
280
 
279
- it "should not find radio button" do
280
- expect(rendered).to have_form("/books", :post) do
281
- without_radio_button("form[name]","100500")
282
- without_radio_button("form[item]","false")
281
+ it 'should not find radio button' do
282
+ expect(rendered).to have_form('/books', :post) do
283
+ without_radio_button('form[name]', '100500')
284
+ without_radio_button('form[item]', 'false')
283
285
  end
284
286
  end
285
287
  end
286
288
 
287
- context "with_submit" do
288
- it "should find submit" do
289
- expect(rendered).to have_form("/books", :post) do
290
- with_submit("Create Book")
289
+ context 'with_submit' do
290
+ it 'should find submit' do
291
+ expect(rendered).to have_form('/books', :post) do
292
+ with_submit('Create Book')
291
293
  end
292
294
  end
293
295
 
294
- it "should not find submit" do
295
- expect(rendered).to have_form("/books", :post) do
296
- without_submit("Destroy Book")
296
+ it 'should not find submit' do
297
+ expect(rendered).to have_form('/books', :post) do
298
+ without_submit('Destroy Book')
297
299
  end
298
300
  end
299
301
  end