capybara_minitest_spec 1.0.0 → 1.0.1
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.
- checksums.yaml +7 -0
- data/.rvmrc +1 -1
- data/.travis.yml +1 -1
- data/LICENSE.txt +22 -0
- data/README.md +6 -1
- data/capybara_minitest_spec.gemspec +1 -0
- data/lib/capybara_minitest_spec/version.rb +1 -1
- data/spec/capybara_rspec_matchers.spec.rb +159 -48
- data/spec/helper.rb +1 -33
- metadata +20 -69
- data/.gemtest +0 -0
- data/spec/test_app/test_app.rb +0 -146
- data/spec/test_app/views/buttons.erb +0 -4
- data/spec/test_app/views/fieldsets.erb +0 -29
- data/spec/test_app/views/form.erb +0 -365
- data/spec/test_app/views/frame_one.erb +0 -8
- data/spec/test_app/views/frame_two.erb +0 -8
- data/spec/test_app/views/header_links.erb +0 -7
- data/spec/test_app/views/host_links.erb +0 -12
- data/spec/test_app/views/popup_one.erb +0 -8
- data/spec/test_app/views/popup_two.erb +0 -8
- data/spec/test_app/views/postback.erb +0 -13
- data/spec/test_app/views/tables.erb +0 -122
- data/spec/test_app/views/with_html.erb +0 -74
- data/spec/test_app/views/with_html_entities.erb +0 -1
- data/spec/test_app/views/with_js.erb +0 -48
- data/spec/test_app/views/with_scope.erb +0 -36
- data/spec/test_app/views/with_simple_html.erb +0 -1
- data/spec/test_app/views/within_frames.erb +0 -10
- data/spec/test_app/views/within_popups.erb +0 -25
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 2afcd081680564a3493009ed655fe67207cc1319
|
4
|
+
data.tar.gz: 2488130d4e3f241050c48625cbaa17dfc3d3a641
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 5f72f1f8020db7109a1c92b4defb4699425c1672c12bb80bfce35b964c55b98cd11c579ad60c49914b7f7bdd4af7b74e7335c8a94fe407e4fea839e3bca2704d
|
7
|
+
data.tar.gz: 091ceb109163a9d3da810f2c62857209d3cfcb08ddc6dba25007763253439bf11582cb897dfe8fb502422ba6af7048a72f0838892f078cf161afc38718da4639
|
data/.rvmrc
CHANGED
@@ -1 +1 @@
|
|
1
|
-
rvm
|
1
|
+
rvm --create ruby-2.0.0-p0@capybara_minispec
|
data/.travis.yml
CHANGED
data/LICENSE.txt
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2013 Jared Ning
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
CHANGED
@@ -37,6 +37,9 @@ assert_page_has_content?('<h1>Content</h1>', 'No such Text')
|
|
37
37
|
# fails with 'expected there to be text "No such Text" in "Content"'
|
38
38
|
```
|
39
39
|
|
40
|
+
You can see all the available matchers [here] (https://github.com/jnicklas/capybara/blob/master/lib/capybara/rspec/matchers.rb#L104).
|
41
|
+
CapybaraMiniTestSpec iterates through those "have_x" methods and creates corresponding MiniTest assertions/expectations.
|
42
|
+
|
40
43
|
## Install
|
41
44
|
|
42
45
|
```ruby
|
@@ -48,7 +51,9 @@ NOTE: If after installing the Capybara gem, Nokogiri isn't installed, it's a kno
|
|
48
51
|
|
49
52
|
## Compatibility
|
50
53
|
|
51
|
-
In theory, this should work with Capybara >= 2.
|
54
|
+
In theory, this should work with Capybara >= 2. The latest version it was tested with was Capybara 2.1.0.
|
55
|
+
|
56
|
+
For Capybara < 2 support, use a version of this gem < 1.0.
|
52
57
|
|
53
58
|
## Testing
|
54
59
|
|
@@ -10,6 +10,7 @@ Gem::Specification.new do |s|
|
|
10
10
|
s.homepage = "https://github.com/ordinaryzelig/capybara_minitest_spec"
|
11
11
|
s.summary = %q{Capybara + MiniTest::Spec}
|
12
12
|
s.description = %q{Use Capybara matchers with MiniTest. Specifically, it defines MiniTest::Spec expectations like page.must_have_content('content').}
|
13
|
+
s.license = "MIT"
|
13
14
|
|
14
15
|
s.rubyforge_project = "capybara_minitest_spec"
|
15
16
|
|
@@ -1,11 +1,35 @@
|
|
1
|
+
# Copied from 'capybara/spec/rspec/matchers_spec.rb' and changed to use minitest.
|
2
|
+
# https://gist.github.com/4297afa19edd44885248
|
1
3
|
require_relative 'helper'
|
2
4
|
|
3
|
-
#
|
4
|
-
|
5
|
-
|
5
|
+
# Bridge some gaps between RSpec and MiniTest.
|
6
|
+
class Minitest::Test
|
7
|
+
class << self
|
8
|
+
alias_method :context, :describe
|
9
|
+
end
|
10
|
+
alias_method :expect, :proc
|
11
|
+
end
|
6
12
|
|
13
|
+
module MiniTest::Assertions
|
14
|
+
# Yield, rescue, compare exception's message.
|
15
|
+
def assert_fails_with_message(exception_message)
|
16
|
+
yield
|
17
|
+
rescue Exception => exception
|
18
|
+
exception_raised = true
|
19
|
+
assert_match exception_message, exception.message
|
20
|
+
ensure
|
21
|
+
assert exception_raised, 'expected exception to be raised'
|
22
|
+
end
|
23
|
+
Proc.infect_an_assertion :assert_fails_with_message, :must_fail_with_message
|
24
|
+
end
|
25
|
+
|
26
|
+
# There is a capybara/spec/spec_helper, but the following lines seeem to be enough.
|
27
|
+
# Also, capybara/spec/spec_helper requires rspec.
|
28
|
+
require 'capybara/spec/test_app'
|
29
|
+
Capybara.default_selector = :xpath
|
30
|
+
Capybara.app = TestApp
|
7
31
|
|
8
|
-
describe
|
32
|
+
describe Capybara::RSpecMatchers do
|
9
33
|
include Capybara::DSL
|
10
34
|
include Capybara::RSpecMatchers
|
11
35
|
|
@@ -23,7 +47,7 @@ describe CapybaraMiniTestSpec do
|
|
23
47
|
it "fails if has_css? returns false" do
|
24
48
|
expect do
|
25
49
|
"<h1>Text</h1>".must_have_css('h2')
|
26
|
-
end.
|
50
|
+
end.must_fail_with_message(/expected to find css "h2" but there were no matches/)
|
27
51
|
end
|
28
52
|
|
29
53
|
it "passes if matched node count equals expected count" do
|
@@ -32,9 +56,28 @@ describe CapybaraMiniTestSpec do
|
|
32
56
|
|
33
57
|
it "fails if matched node count does not equal expected count" do
|
34
58
|
expect do
|
35
|
-
"<h1>Text</h1>".must_have_css('h1', :
|
36
|
-
end.
|
59
|
+
"<h1>Text</h1>".must_have_css('h1', count: 2)
|
60
|
+
end.must_fail_with_message("expected to find css \"h1\" 2 times, found 1 match: \"Text\"")
|
61
|
+
end
|
62
|
+
|
63
|
+
it "fails if matched node count is less than expected minimum count" do
|
64
|
+
expect do
|
65
|
+
"<h1>Text</h1>".must_have_css('p', minimum: 1)
|
66
|
+
end.must_fail_with_message("expected to find css \"p\" at least 1 time but there were no matches")
|
67
|
+
end
|
68
|
+
|
69
|
+
it "fails if matched node count is more than expected maximum count" do
|
70
|
+
expect do
|
71
|
+
"<h1>Text</h1><h1>Text</h1><h1>Text</h1>".must_have_css('h1', maximum: 2)
|
72
|
+
end.must_fail_with_message('expected to find css "h1" at most 2 times, found 3 matches: "Text", "Text", "Text"')
|
73
|
+
end
|
74
|
+
|
75
|
+
it "fails if matched node count does not belong to expected range" do
|
76
|
+
expect do
|
77
|
+
"<h1>Text</h1>".must_have_css('h1', between: 2..3)
|
78
|
+
end.must_fail_with_message("expected to find css \"h1\" between 2 and 3 times, found 1 match: \"Text\"")
|
37
79
|
end
|
80
|
+
|
38
81
|
end
|
39
82
|
|
40
83
|
context "with should_not" do
|
@@ -45,7 +88,7 @@ describe CapybaraMiniTestSpec do
|
|
45
88
|
it "fails if has_no_css? returns false" do
|
46
89
|
expect do
|
47
90
|
"<h1>Text</h1>".wont_have_css('h1')
|
48
|
-
end.
|
91
|
+
end.must_fail_with_message(/expected not to find css "h1"/)
|
49
92
|
end
|
50
93
|
|
51
94
|
it "passes if matched node count does not equal expected count" do
|
@@ -55,7 +98,7 @@ describe CapybaraMiniTestSpec do
|
|
55
98
|
it "fails if matched node count equals expected count" do
|
56
99
|
expect do
|
57
100
|
"<h1>Text</h1>".wont_have_css('h1', :count => 1)
|
58
|
-
end.
|
101
|
+
end.must_fail_with_message(/expected not to find css "h1"/)
|
59
102
|
end
|
60
103
|
end
|
61
104
|
end
|
@@ -73,7 +116,7 @@ describe CapybaraMiniTestSpec do
|
|
73
116
|
it "fails if has_css? returns false" do
|
74
117
|
expect do
|
75
118
|
page.must_have_css('h1#doesnotexist')
|
76
|
-
end.
|
119
|
+
end.must_fail_with_message(/expected to find css "h1#doesnotexist" but there were no matches/)
|
77
120
|
end
|
78
121
|
end
|
79
122
|
|
@@ -85,7 +128,7 @@ describe CapybaraMiniTestSpec do
|
|
85
128
|
it "fails if has_no_css? returns false" do
|
86
129
|
expect do
|
87
130
|
page.wont_have_css('h1')
|
88
|
-
end.
|
131
|
+
end.must_fail_with_message(/expected not to find css "h1"/)
|
89
132
|
end
|
90
133
|
end
|
91
134
|
end
|
@@ -105,7 +148,7 @@ describe CapybaraMiniTestSpec do
|
|
105
148
|
it "fails if has_xpath? returns false" do
|
106
149
|
expect do
|
107
150
|
"<h1>Text</h1>".must_have_xpath('//h2')
|
108
|
-
end.
|
151
|
+
end.must_fail_with_message(%r(expected to find xpath "//h2" but there were no matches))
|
109
152
|
end
|
110
153
|
end
|
111
154
|
|
@@ -117,7 +160,7 @@ describe CapybaraMiniTestSpec do
|
|
117
160
|
it "fails if has_no_xpath? returns false" do
|
118
161
|
expect do
|
119
162
|
"<h1>Text</h1>".wont_have_xpath('//h1')
|
120
|
-
end.
|
163
|
+
end.must_fail_with_message(%r(expected not to find xpath "//h1"))
|
121
164
|
end
|
122
165
|
end
|
123
166
|
end
|
@@ -135,7 +178,7 @@ describe CapybaraMiniTestSpec do
|
|
135
178
|
it "fails if has_xpath? returns false" do
|
136
179
|
expect do
|
137
180
|
page.must_have_xpath("//h1[@id='doesnotexist']")
|
138
|
-
end.
|
181
|
+
end.must_fail_with_message(%r(expected to find xpath "//h1\[@id='doesnotexist'\]" but there were no matches))
|
139
182
|
end
|
140
183
|
end
|
141
184
|
|
@@ -147,7 +190,7 @@ describe CapybaraMiniTestSpec do
|
|
147
190
|
it "fails if has_no_xpath? returns false" do
|
148
191
|
expect do
|
149
192
|
page.wont_have_xpath('//h1')
|
150
|
-
end.
|
193
|
+
end.must_fail_with_message(%r(expected not to find xpath "//h1"))
|
151
194
|
end
|
152
195
|
end
|
153
196
|
end
|
@@ -156,7 +199,7 @@ describe CapybaraMiniTestSpec do
|
|
156
199
|
describe "have_selector matcher" do
|
157
200
|
it "gives proper description" do
|
158
201
|
matcher = have_selector('//h1')
|
159
|
-
"<h1>Text</h1>"
|
202
|
+
matcher.matches?("<h1>Text</h1>")
|
160
203
|
matcher.description.must_equal "have xpath \"//h1\""
|
161
204
|
end
|
162
205
|
|
@@ -169,7 +212,7 @@ describe CapybaraMiniTestSpec do
|
|
169
212
|
it "fails if has_selector? returns false" do
|
170
213
|
expect do
|
171
214
|
"<h1>Text</h1>".must_have_selector('//h2')
|
172
|
-
end.
|
215
|
+
end.must_fail_with_message(%r(expected to find xpath "//h2" but there were no matches))
|
173
216
|
end
|
174
217
|
end
|
175
218
|
|
@@ -181,7 +224,7 @@ describe CapybaraMiniTestSpec do
|
|
181
224
|
it "fails if has_no_selector? returns false" do
|
182
225
|
expect do
|
183
226
|
"<h1>Text</h1>".wont_have_selector(:css, 'h1')
|
184
|
-
end.
|
227
|
+
end.must_fail_with_message(%r(expected not to find css "h1"))
|
185
228
|
end
|
186
229
|
end
|
187
230
|
end
|
@@ -199,13 +242,13 @@ describe CapybaraMiniTestSpec do
|
|
199
242
|
it "fails if has_selector? returns false" do
|
200
243
|
expect do
|
201
244
|
page.must_have_selector("//h1[@id='doesnotexist']")
|
202
|
-
end.
|
245
|
+
end.must_fail_with_message(%r(expected to find xpath "//h1\[@id='doesnotexist'\]" but there were no matches))
|
203
246
|
end
|
204
247
|
|
205
248
|
it "includes text in error message" do
|
206
249
|
expect do
|
207
250
|
page.must_have_selector("//h1", :text => 'wrong text')
|
208
|
-
end.
|
251
|
+
end.must_fail_with_message(%r(expected to find xpath "//h1" with text "wrong text" but there were no matches))
|
209
252
|
end
|
210
253
|
end
|
211
254
|
|
@@ -217,7 +260,7 @@ describe CapybaraMiniTestSpec do
|
|
217
260
|
it "fails if has_no_selector? returns false" do
|
218
261
|
expect do
|
219
262
|
page.wont_have_selector(:css, 'h1', :text => 'test')
|
220
|
-
end.
|
263
|
+
end.must_fail_with_message(%r(expected not to find css "h1" with text "test"))
|
221
264
|
end
|
222
265
|
end
|
223
266
|
end
|
@@ -225,7 +268,7 @@ describe CapybaraMiniTestSpec do
|
|
225
268
|
|
226
269
|
describe "have_content matcher" do
|
227
270
|
it "gives proper description" do
|
228
|
-
have_content('Text').description.must_equal "
|
271
|
+
have_content('Text').description.must_equal "text \"Text\""
|
229
272
|
end
|
230
273
|
|
231
274
|
context "on a string" do
|
@@ -241,7 +284,7 @@ describe CapybaraMiniTestSpec do
|
|
241
284
|
it "fails if has_content? returns false" do
|
242
285
|
expect do
|
243
286
|
"<h1>Text</h1>".must_have_content('No such Text')
|
244
|
-
end.
|
287
|
+
end.must_fail_with_message(/expected to find text "No such Text" in "Text"/)
|
245
288
|
end
|
246
289
|
end
|
247
290
|
|
@@ -257,7 +300,7 @@ describe CapybaraMiniTestSpec do
|
|
257
300
|
it "fails if has_no_content? returns false" do
|
258
301
|
expect do
|
259
302
|
"<h1>Text</h1>".wont_have_content('Text')
|
260
|
-
end.
|
303
|
+
end.must_fail_with_message(/expected not to find text "Text" in "Text"/)
|
261
304
|
end
|
262
305
|
end
|
263
306
|
end
|
@@ -279,7 +322,7 @@ describe CapybaraMiniTestSpec do
|
|
279
322
|
it "fails if has_content? returns false" do
|
280
323
|
expect do
|
281
324
|
page.must_have_content('No such Text')
|
282
|
-
end.
|
325
|
+
end.must_fail_with_message(/expected to find text "No such Text" in "(.*)This is a test(.*)"/)
|
283
326
|
end
|
284
327
|
|
285
328
|
context "with default selector CSS" do
|
@@ -287,7 +330,7 @@ describe CapybaraMiniTestSpec do
|
|
287
330
|
it "fails if has_content? returns false" do
|
288
331
|
expect do
|
289
332
|
page.must_have_content('No such Text')
|
290
|
-
end.
|
333
|
+
end.must_fail_with_message(/expected to find text "No such Text" in "(.*)This is a test(.*)"/)
|
291
334
|
end
|
292
335
|
after { Capybara.default_selector = :xpath }
|
293
336
|
end
|
@@ -301,7 +344,7 @@ describe CapybaraMiniTestSpec do
|
|
301
344
|
it "fails if has_no_content? returns false" do
|
302
345
|
expect do
|
303
346
|
page.wont_have_content('This is a test')
|
304
|
-
end.
|
347
|
+
end.must_fail_with_message(/expected not to find text "This is a test"/)
|
305
348
|
end
|
306
349
|
end
|
307
350
|
end
|
@@ -309,7 +352,7 @@ describe CapybaraMiniTestSpec do
|
|
309
352
|
|
310
353
|
describe "have_text matcher" do
|
311
354
|
it "gives proper description" do
|
312
|
-
have_text('Text').description.must_equal "
|
355
|
+
have_text('Text').description.must_equal "text \"Text\""
|
313
356
|
end
|
314
357
|
|
315
358
|
context "on a string" do
|
@@ -325,13 +368,37 @@ describe CapybaraMiniTestSpec do
|
|
325
368
|
it "fails if has_text? returns false" do
|
326
369
|
expect do
|
327
370
|
"<h1>Text</h1>".must_have_text('No such Text')
|
328
|
-
end.
|
371
|
+
end.must_fail_with_message(/expected to find text "No such Text" in "Text"/)
|
372
|
+
end
|
373
|
+
|
374
|
+
it "casts Fixnum to string" do
|
375
|
+
expect do
|
376
|
+
"<h1>Text</h1>".must_have_text(3)
|
377
|
+
end.must_fail_with_message(/expected to find text "3" in "Text"/)
|
378
|
+
end
|
379
|
+
|
380
|
+
it "fails if matched text count does not equal to expected count" do
|
381
|
+
expect do
|
382
|
+
"<h1>Text</h1>".must_have_text('Text', count: 2)
|
383
|
+
end.must_fail_with_message(/expected to find text "Text" 2 times in "Text"/)
|
384
|
+
end
|
385
|
+
|
386
|
+
it "fails if matched text count is less than expected minimum count" do
|
387
|
+
expect do
|
388
|
+
"<h1>Text</h1>".must_have_text('Lorem', minimum: 1)
|
389
|
+
end.must_fail_with_message(/expected to find text "Lorem" at least 1 time in "Text"/)
|
390
|
+
end
|
391
|
+
|
392
|
+
it "fails if matched text count is more than expected maximum count" do
|
393
|
+
expect do
|
394
|
+
"<h1>Text TextText</h1>".must_have_text('Text', maximum: 2)
|
395
|
+
end.must_fail_with_message(/expected to find text "Text" at most 2 times in "Text TextText"/)
|
329
396
|
end
|
330
397
|
|
331
|
-
it "
|
398
|
+
it "fails if matched text count does not belong to expected range" do
|
332
399
|
expect do
|
333
|
-
"<h1>Text</h1>".must_have_text(:
|
334
|
-
end.
|
400
|
+
"<h1>Text</h1>".must_have_text('Text', between: 2..3)
|
401
|
+
end.must_fail_with_message(/expected to find text "Text" between 2 and 3 times in "Text"/)
|
335
402
|
end
|
336
403
|
end
|
337
404
|
|
@@ -347,7 +414,7 @@ describe CapybaraMiniTestSpec do
|
|
347
414
|
it "fails if has_no_text? returns false" do
|
348
415
|
expect do
|
349
416
|
"<h1>Text</h1>".wont_have_text('Text')
|
350
|
-
end.
|
417
|
+
end.must_fail_with_message(/expected not to find text "Text" in "Text"/)
|
351
418
|
end
|
352
419
|
end
|
353
420
|
end
|
@@ -366,10 +433,19 @@ describe CapybaraMiniTestSpec do
|
|
366
433
|
page.must_have_text(/test/)
|
367
434
|
end
|
368
435
|
|
436
|
+
it "can check for all text" do
|
437
|
+
page.must_have_text(:all, 'Some of this text is hidden!')
|
438
|
+
end
|
439
|
+
|
440
|
+
it "can check for visible text" do
|
441
|
+
page.must_have_text(:visible, 'Some of this text is')
|
442
|
+
page.wont_have_text(:visible, 'Some of this text is hidden!')
|
443
|
+
end
|
444
|
+
|
369
445
|
it "fails if has_text? returns false" do
|
370
446
|
expect do
|
371
447
|
page.must_have_text('No such Text')
|
372
|
-
end.
|
448
|
+
end.must_fail_with_message(/expected to find text "No such Text" in "(.*)This is a test(.*)"/)
|
373
449
|
end
|
374
450
|
|
375
451
|
context "with default selector CSS" do
|
@@ -377,7 +453,7 @@ describe CapybaraMiniTestSpec do
|
|
377
453
|
it "fails if has_text? returns false" do
|
378
454
|
expect do
|
379
455
|
page.must_have_text('No such Text')
|
380
|
-
end.
|
456
|
+
end.must_fail_with_message(/expected to find text "No such Text" in "(.*)This is a test(.*)"/)
|
381
457
|
end
|
382
458
|
after { Capybara.default_selector = :xpath }
|
383
459
|
end
|
@@ -391,7 +467,7 @@ describe CapybaraMiniTestSpec do
|
|
391
467
|
it "fails if has_no_text? returns false" do
|
392
468
|
expect do
|
393
469
|
page.wont_have_text('This is a test')
|
394
|
-
end.
|
470
|
+
end.must_fail_with_message(/expected not to find text "This is a test"/)
|
395
471
|
end
|
396
472
|
end
|
397
473
|
end
|
@@ -411,7 +487,43 @@ describe CapybaraMiniTestSpec do
|
|
411
487
|
it "fails if there is no such button" do
|
412
488
|
expect do
|
413
489
|
html.must_have_link('No such Link')
|
414
|
-
end.
|
490
|
+
end.must_fail_with_message(/expected to find link "No such Link"/)
|
491
|
+
end
|
492
|
+
end
|
493
|
+
|
494
|
+
describe "have_title matcher" do
|
495
|
+
it "gives proper description" do
|
496
|
+
have_title('Just a title').description.must_equal "have title \"Just a title\""
|
497
|
+
end
|
498
|
+
|
499
|
+
context "on a string" do
|
500
|
+
let(:html) { '<title>Just a title</title>' }
|
501
|
+
|
502
|
+
it "passes if there is such a title" do
|
503
|
+
html.must_have_title('Just a title')
|
504
|
+
end
|
505
|
+
|
506
|
+
it "fails if there is no such title" do
|
507
|
+
expect do
|
508
|
+
html.must_have_title('No such title')
|
509
|
+
end.must_fail_with_message(/expected there to be title "No such title"/)
|
510
|
+
end
|
511
|
+
end
|
512
|
+
|
513
|
+
context "on a page or node" do
|
514
|
+
before do
|
515
|
+
visit('/with_js')
|
516
|
+
end
|
517
|
+
|
518
|
+
it "passes if there is such a title" do
|
519
|
+
page.must_have_title('with_js')
|
520
|
+
end
|
521
|
+
|
522
|
+
it "fails if there is no such title" do
|
523
|
+
expect do
|
524
|
+
page.must_have_title('No such title')
|
525
|
+
end.must_fail_with_message(/expected there to be title "No such title"/)
|
526
|
+
end
|
415
527
|
end
|
416
528
|
end
|
417
529
|
|
@@ -429,7 +541,7 @@ describe CapybaraMiniTestSpec do
|
|
429
541
|
it "fails if there is no such button" do
|
430
542
|
expect do
|
431
543
|
html.must_have_button('No such Button')
|
432
|
-
end.
|
544
|
+
end.must_fail_with_message(/expected to find button "No such Button"/)
|
433
545
|
end
|
434
546
|
end
|
435
547
|
|
@@ -447,7 +559,7 @@ describe CapybaraMiniTestSpec do
|
|
447
559
|
it "fails if there is no such field" do
|
448
560
|
expect do
|
449
561
|
html.must_have_field('No such Field')
|
450
|
-
end.
|
562
|
+
end.must_fail_with_message(/expected to find field "No such Field"/)
|
451
563
|
end
|
452
564
|
end
|
453
565
|
|
@@ -469,13 +581,13 @@ describe CapybaraMiniTestSpec do
|
|
469
581
|
it "fails if there is such a field but it is not checked" do
|
470
582
|
expect do
|
471
583
|
html.must_have_checked_field('unchecked field')
|
472
|
-
end.
|
584
|
+
end.must_fail_with_message(/expected to find field "unchecked field"/)
|
473
585
|
end
|
474
586
|
|
475
587
|
it "fails if there is no such field" do
|
476
588
|
expect do
|
477
589
|
html.must_have_checked_field('no such field')
|
478
|
-
end.
|
590
|
+
end.must_fail_with_message(/expected to find field "no such field"/)
|
479
591
|
end
|
480
592
|
end
|
481
593
|
|
@@ -483,7 +595,7 @@ describe CapybaraMiniTestSpec do
|
|
483
595
|
it "fails if there is such a field and it is checked" do
|
484
596
|
expect do
|
485
597
|
html.wont_have_checked_field('it is checked')
|
486
|
-
end.
|
598
|
+
end.must_fail_with_message(/expected not to find field "it is checked"/)
|
487
599
|
end
|
488
600
|
|
489
601
|
it "passes if there is such a field but it is not checked" do
|
@@ -514,13 +626,13 @@ describe CapybaraMiniTestSpec do
|
|
514
626
|
it "fails if there is such a field but it is checked" do
|
515
627
|
expect do
|
516
628
|
html.must_have_unchecked_field('it is checked')
|
517
|
-
end.
|
629
|
+
end.must_fail_with_message(/expected to find field "it is checked"/)
|
518
630
|
end
|
519
631
|
|
520
632
|
it "fails if there is no such field" do
|
521
633
|
expect do
|
522
634
|
html.must_have_unchecked_field('no such field')
|
523
|
-
end.
|
635
|
+
end.must_fail_with_message(/expected to find field "no such field"/)
|
524
636
|
end
|
525
637
|
end
|
526
638
|
|
@@ -528,7 +640,7 @@ describe CapybaraMiniTestSpec do
|
|
528
640
|
it "fails if there is such a field and it is not checked" do
|
529
641
|
expect do
|
530
642
|
html.wont_have_unchecked_field('unchecked field')
|
531
|
-
end.
|
643
|
+
end.must_fail_with_message(/expected not to find field "unchecked field"/)
|
532
644
|
end
|
533
645
|
|
534
646
|
it "passes if there is such a field but it is checked" do
|
@@ -555,7 +667,7 @@ describe CapybaraMiniTestSpec do
|
|
555
667
|
it "fails if there is no such select" do
|
556
668
|
expect do
|
557
669
|
html.must_have_select('No such Select box')
|
558
|
-
end.
|
670
|
+
end.must_fail_with_message(/expected to find select box "No such Select box"/)
|
559
671
|
end
|
560
672
|
end
|
561
673
|
|
@@ -573,8 +685,7 @@ describe CapybaraMiniTestSpec do
|
|
573
685
|
it "fails if there is no such select" do
|
574
686
|
expect do
|
575
687
|
html.must_have_table('No such Table')
|
576
|
-
end.
|
688
|
+
end.must_fail_with_message(/expected to find table "No such Table"/)
|
577
689
|
end
|
578
690
|
end
|
579
691
|
end
|
580
|
-
|
data/spec/helper.rb
CHANGED
@@ -1,39 +1,7 @@
|
|
1
1
|
require 'bundler/setup'
|
2
2
|
|
3
3
|
require 'minitest/autorun'
|
4
|
+
require 'minitest/pride'
|
4
5
|
require 'awesome_print'
|
5
6
|
|
6
|
-
require 'capybara/dsl'
|
7
7
|
require 'capybara_minitest_spec'
|
8
|
-
|
9
|
-
# Make all specs a subclass of MiniTest::Spec.
|
10
|
-
MiniTest::Spec.register_spec_type //, MiniTest::Spec
|
11
|
-
|
12
|
-
# Bridge some gaps between RSpec and MiniTest.
|
13
|
-
class MiniTest::Spec
|
14
|
-
|
15
|
-
class << self
|
16
|
-
alias_method :context, :describe
|
17
|
-
end
|
18
|
-
|
19
|
-
alias_method :expect, :proc
|
20
|
-
|
21
|
-
end
|
22
|
-
|
23
|
-
module MiniTest::Assertions
|
24
|
-
|
25
|
-
# Yield, rescue, compare exception's message.
|
26
|
-
def assert_raises_with_message(exception_message)
|
27
|
-
yield
|
28
|
-
rescue Exception => exception
|
29
|
-
exception_raised = true
|
30
|
-
assert_match exception_message, exception.message
|
31
|
-
ensure
|
32
|
-
assert exception_raised, 'expected exception to be raised'
|
33
|
-
end
|
34
|
-
|
35
|
-
end
|
36
|
-
|
37
|
-
module MiniTest::Expectations
|
38
|
-
infect_an_assertion :assert_raises_with_message, :must_raise_with_message
|
39
|
-
end
|