capybara_minitest_spec 0.2.2 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (75) hide show
  1. data/.rvmrc +1 -1
  2. data/HISTORY.md +0 -0
  3. data/README.md +31 -32
  4. data/Rakefile +2 -2
  5. data/capybara_minitest_spec.gemspec +6 -4
  6. data/lib/capybara_minitest_spec.rb +53 -6
  7. data/lib/capybara_minitest_spec/test_name.rb +67 -0
  8. data/lib/capybara_minitest_spec/version.rb +1 -1
  9. data/spec/capybara_minitest_spec.spec.rb +13 -0
  10. data/spec/capybara_rspec_matchers.spec.rb +580 -0
  11. data/spec/helper.rb +39 -0
  12. data/{test_app → spec/test_app}/test_app.rb +0 -0
  13. data/{test_app → spec/test_app}/views/buttons.erb +0 -0
  14. data/{test_app → spec/test_app}/views/fieldsets.erb +0 -0
  15. data/{test_app → spec/test_app}/views/form.erb +0 -0
  16. data/{test_app → spec/test_app}/views/frame_one.erb +0 -0
  17. data/{test_app → spec/test_app}/views/frame_two.erb +0 -0
  18. data/{test_app → spec/test_app}/views/header_links.erb +0 -0
  19. data/{test_app → spec/test_app}/views/host_links.erb +0 -0
  20. data/{test_app → spec/test_app}/views/popup_one.erb +0 -0
  21. data/{test_app → spec/test_app}/views/popup_two.erb +0 -0
  22. data/{test_app → spec/test_app}/views/postback.erb +0 -0
  23. data/{test_app → spec/test_app}/views/tables.erb +0 -0
  24. data/{test_app → spec/test_app}/views/with_html.erb +0 -0
  25. data/{test_app → spec/test_app}/views/with_html_entities.erb +0 -0
  26. data/{test_app → spec/test_app}/views/with_js.erb +0 -0
  27. data/{test_app → spec/test_app}/views/with_scope.erb +0 -0
  28. data/{test_app → spec/test_app}/views/with_simple_html.erb +0 -0
  29. data/{test_app → spec/test_app}/views/within_frames.erb +0 -0
  30. data/{test_app → spec/test_app}/views/within_popups.erb +0 -0
  31. data/spec/test_name.spec.rb +47 -0
  32. metadata +142 -121
  33. data/lib/capybara_minitest_spec/matcher.rb +0 -126
  34. data/test/capybara_node_matchers_spec.rb +0 -471
  35. data/test/custom_matcher_spec.rb +0 -29
  36. data/test/matcher_spec.rb +0 -45
  37. data/test/spec_helper.rb +0 -14
  38. data/test_app/driver.rb +0 -297
  39. data/test_app/fixtures/capybara.jpg +0 -3
  40. data/test_app/fixtures/test_file.txt +0 -1
  41. data/test_app/public/test.js +0 -43
  42. data/test_app/session.rb +0 -154
  43. data/test_app/session/all_spec.rb +0 -78
  44. data/test_app/session/attach_file_spec.rb +0 -73
  45. data/test_app/session/check_spec.rb +0 -65
  46. data/test_app/session/choose_spec.rb +0 -26
  47. data/test_app/session/click_button_spec.rb +0 -304
  48. data/test_app/session/click_link_or_button_spec.rb +0 -36
  49. data/test_app/session/click_link_spec.rb +0 -119
  50. data/test_app/session/current_host_spec.rb +0 -68
  51. data/test_app/session/current_url_spec.rb +0 -15
  52. data/test_app/session/fill_in_spec.rb +0 -125
  53. data/test_app/session/find_button_spec.rb +0 -18
  54. data/test_app/session/find_by_id_spec.rb +0 -18
  55. data/test_app/session/find_field_spec.rb +0 -26
  56. data/test_app/session/find_link_spec.rb +0 -19
  57. data/test_app/session/find_spec.rb +0 -149
  58. data/test_app/session/first_spec.rb +0 -105
  59. data/test_app/session/has_button_spec.rb +0 -32
  60. data/test_app/session/has_content_spec.rb +0 -106
  61. data/test_app/session/has_css_spec.rb +0 -243
  62. data/test_app/session/has_field_spec.rb +0 -192
  63. data/test_app/session/has_link_spec.rb +0 -37
  64. data/test_app/session/has_select_spec.rb +0 -129
  65. data/test_app/session/has_selector_spec.rb +0 -129
  66. data/test_app/session/has_table_spec.rb +0 -96
  67. data/test_app/session/has_xpath_spec.rb +0 -123
  68. data/test_app/session/headers.rb +0 -19
  69. data/test_app/session/javascript.rb +0 -289
  70. data/test_app/session/response_code.rb +0 -19
  71. data/test_app/session/select_spec.rb +0 -113
  72. data/test_app/session/text_spec.rb +0 -19
  73. data/test_app/session/uncheck_spec.rb +0 -21
  74. data/test_app/session/unselect_spec.rb +0 -61
  75. data/test_app/session/within_spec.rb +0 -178
@@ -1,36 +0,0 @@
1
- shared_examples_for "click_link_or_button" do
2
- describe '#click' do
3
- it "should click on a link" do
4
- @session.visit('/with_html')
5
- @session.click_link_or_button('labore')
6
- @session.body.should include('Bar')
7
- end
8
-
9
- it "should click on a button" do
10
- @session.visit('/form')
11
- @session.click_link_or_button('awe123')
12
- extract_results(@session)['first_name'].should == 'John'
13
- end
14
-
15
- it "should click on a button with no type attribute" do
16
- @session.visit('/form')
17
- @session.click_link_or_button('no_type')
18
- extract_results(@session)['first_name'].should == 'John'
19
- end
20
-
21
- it "should be aliased as click_on" do
22
- @session.visit('/form')
23
- @session.click_on('awe123')
24
- extract_results(@session)['first_name'].should == 'John'
25
- end
26
-
27
- context "with a locator that doesn't exist" do
28
- it "should raise an error" do
29
- @session.visit('/with_html')
30
- running do
31
- @session.click_link_or_button('does not exist')
32
- end.should raise_error(Capybara::ElementNotFound)
33
- end
34
- end
35
- end
36
- end
@@ -1,119 +0,0 @@
1
- shared_examples_for "click_link" do
2
- describe '#click_link' do
3
- before do
4
- @session.visit('/with_html')
5
- end
6
-
7
- context "with id given" do
8
- it "should take user to the linked page" do
9
- @session.click_link('foo')
10
- @session.body.should include('Another World')
11
- end
12
- end
13
-
14
- context "with text given" do
15
- it "should take user to the linked page" do
16
- @session.click_link('labore')
17
- @session.body.should include('Bar')
18
- end
19
-
20
- it "should accept partial matches" do
21
- @session.click_link('abo')
22
- @session.body.should include('Bar')
23
- end
24
-
25
- it "should prefer exact matches over partial matches" do
26
- @session.click_link('A link')
27
- @session.body.should include('Bar')
28
- end
29
- end
30
-
31
- context "with title given" do
32
- it "should take user to the linked page" do
33
- @session.click_link('awesome title')
34
- @session.body.should include('Bar')
35
- end
36
-
37
- it "should accept partial matches" do
38
- @session.click_link('some tit')
39
- @session.body.should include('Bar')
40
- end
41
-
42
- it "should prefer exact matches over partial matches" do
43
- @session.click_link('a fine link')
44
- @session.body.should include('Bar')
45
- end
46
- end
47
-
48
- context "with alternative text given to a contained image" do
49
- it "should take user to the linked page" do
50
- @session.click_link('awesome image')
51
- @session.body.should include('Bar')
52
- end
53
-
54
- it "should take user to the linked page" do
55
- @session.click_link('some imag')
56
- @session.body.should include('Bar')
57
- end
58
-
59
- it "should prefer exact matches over partial matches" do
60
- @session.click_link('fine image')
61
- @session.body.should include('Bar')
62
- end
63
- end
64
-
65
- context "with a locator that doesn't exist" do
66
- it "should raise an error" do
67
- running do
68
- @session.click_link('does not exist')
69
- end.should raise_error(Capybara::ElementNotFound)
70
- end
71
- end
72
-
73
- it "should follow relative links" do
74
- @session.visit('/')
75
- @session.click_link('Relative')
76
- @session.body.should include('This is a test')
77
- end
78
-
79
- it "should follow redirects" do
80
- @session.click_link('Redirect')
81
- @session.body.should include('You landed')
82
- end
83
-
84
- it "should follow redirects" do
85
- @session.click_link('BackToMyself')
86
- @session.body.should include('This is a test')
87
- end
88
-
89
- it "should add query string to current URL with naked query string" do
90
- @session.click_link('Naked Query String')
91
- @session.body.should include('Query String sent')
92
- end
93
-
94
- it "should do nothing on anchor links" do
95
- @session.fill_in("test_field", :with => 'blah')
96
- @session.click_link('Anchor')
97
- @session.find_field("test_field").value.should == 'blah'
98
- @session.click_link('Blank Anchor')
99
- @session.find_field("test_field").value.should == 'blah'
100
- end
101
-
102
- it "should do nothing on URL+anchor links for the same page" do
103
- @session.fill_in("test_field", :with => 'blah')
104
- @session.click_link('Anchor on same page')
105
- @session.find_field("test_field").value.should == 'blah'
106
- end
107
-
108
- it "should follow link on URL+anchor links for a different page" do
109
- @session.click_link('Anchor on different page')
110
- @session.body.should include('Bar')
111
- end
112
-
113
- it "raise an error with links with no href" do
114
- running do
115
- @session.click_link('No Href')
116
- end.should raise_error(Capybara::ElementNotFound)
117
- end
118
- end
119
- end
@@ -1,68 +0,0 @@
1
- shared_examples_for "current_host" do
2
- after do
3
- Capybara.app_host = nil
4
- end
5
-
6
- describe '#current_host' do
7
- it "is affected by visiting a page directly" do
8
- @session.visit('http://capybara-testapp.heroku.com/host')
9
- @session.body.should include('Current host is http://capybara-testapp.heroku.com')
10
- @session.current_host.should == 'http://capybara-testapp.heroku.com'
11
- end
12
-
13
- it "returns to the app host when visiting a relative url" do
14
- Capybara.app_host = "http://capybara1.elabs.se"
15
- @session.visit('http://capybara-testapp.heroku.com/host')
16
- @session.body.should include('Current host is http://capybara-testapp.heroku.com')
17
- @session.current_host.should == 'http://capybara-testapp.heroku.com'
18
- @session.visit('/host')
19
- @session.body.should include('Current host is http://capybara1.elabs.se')
20
- @session.current_host.should == 'http://capybara1.elabs.se'
21
- end
22
-
23
- it "is affected by setting Capybara.app_host" do
24
- Capybara.app_host = "http://capybara-testapp.heroku.com"
25
- @session.visit('/host')
26
- @session.body.should include('Current host is http://capybara-testapp.heroku.com')
27
- @session.current_host.should == 'http://capybara-testapp.heroku.com'
28
- Capybara.app_host = "http://capybara1.elabs.se"
29
- @session.visit('/host')
30
- @session.body.should include('Current host is http://capybara1.elabs.se')
31
- @session.current_host.should == 'http://capybara1.elabs.se'
32
- end
33
-
34
- it "is unaffected by following a relative link" do
35
- @session.visit('http://capybara-testapp.heroku.com/host_links')
36
- @session.click_link('Relative Host')
37
- @session.body.should include('Current host is http://capybara-testapp.heroku.com')
38
- @session.current_host.should == 'http://capybara-testapp.heroku.com'
39
- end
40
-
41
- it "is affected by following an absolute link" do
42
- @session.visit('http://capybara-testapp.heroku.com/host_links')
43
- @session.click_link('Absolute Host')
44
- @session.body.should include('Current host is http://capybara2.elabs.se')
45
- @session.current_host.should == 'http://capybara2.elabs.se'
46
- end
47
-
48
- it "is unaffected by posting through a relative form" do
49
- @session.visit('http://capybara-testapp.heroku.com/host_links')
50
- @session.click_button('Relative Host')
51
- @session.body.should include('Current host is http://capybara-testapp.heroku.com')
52
- @session.current_host.should == 'http://capybara-testapp.heroku.com'
53
- end
54
-
55
- it "is affected by posting through an absolute form" do
56
- @session.visit('http://capybara-testapp.heroku.com/host_links')
57
- @session.click_button('Absolute Host')
58
- @session.body.should include('Current host is http://capybara2.elabs.se')
59
- @session.current_host.should == 'http://capybara2.elabs.se'
60
- end
61
-
62
- it "is affected by following a redirect" do
63
- @session.visit('http://capybara-testapp.heroku.com/redirect_secure')
64
- @session.body.should include('Current host is https://capybara-testapp.heroku.com')
65
- @session.current_host.should == 'https://capybara-testapp.heroku.com'
66
- end
67
- end
68
- end
@@ -1,15 +0,0 @@
1
- shared_examples_for "current_url" do
2
- describe '#current_url' do
3
- it "should return the current url" do
4
- @session.visit('/form')
5
- @session.current_url.should =~ %r(http://[^/]+/form)
6
- end
7
- end
8
-
9
- describe '#current_path' do
10
- it 'should show the correct location' do
11
- @session.visit('/foo')
12
- @session.current_path.should == '/foo'
13
- end
14
- end
15
- end
@@ -1,125 +0,0 @@
1
- shared_examples_for "fill_in" do
2
- describe "#fill_in" do
3
- before do
4
- @session.visit('/form')
5
- end
6
-
7
- it "should fill in a text field by id" do
8
- @session.fill_in('form_first_name', :with => 'Harry')
9
- @session.click_button('awesome')
10
- extract_results(@session)['first_name'].should == 'Harry'
11
- end
12
-
13
- it "should fill in a text field by name" do
14
- @session.fill_in('form[last_name]', :with => 'Green')
15
- @session.click_button('awesome')
16
- extract_results(@session)['last_name'].should == 'Green'
17
- end
18
-
19
- it "should fill in a text field by label without for" do
20
- @session.fill_in('Street', :with => 'Avenue Q')
21
- @session.click_button('awesome')
22
- extract_results(@session)['street'].should == 'Avenue Q'
23
- end
24
-
25
- it "should fill in a url field by label without for" do
26
- @session.fill_in('Html5 Url', :with => 'http://www.avenueq.com')
27
- @session.click_button('html5_submit')
28
- extract_results(@session)['html5_url'].should == 'http://www.avenueq.com'
29
- end
30
-
31
- it "should favour exact label matches over partial matches" do
32
- @session.fill_in('Name', :with => 'Harry Jones')
33
- @session.click_button('awesome')
34
- extract_results(@session)['name'].should == 'Harry Jones'
35
- end
36
-
37
- it "should fill in a textarea by id" do
38
- @session.fill_in('form_description', :with => 'Texty text')
39
- @session.click_button('awesome')
40
- extract_results(@session)['description'].should == 'Texty text'
41
- end
42
-
43
- it "should fill in a textarea by label" do
44
- @session.fill_in('Description', :with => 'Texty text')
45
- @session.click_button('awesome')
46
- extract_results(@session)['description'].should == 'Texty text'
47
- end
48
-
49
- it "should fill in a textarea by name" do
50
- @session.fill_in('form[description]', :with => 'Texty text')
51
- @session.click_button('awesome')
52
- extract_results(@session)['description'].should == 'Texty text'
53
- end
54
-
55
- it "should fill in a password field by id" do
56
- @session.fill_in('form_password', :with => 'supasikrit')
57
- @session.click_button('awesome')
58
- extract_results(@session)['password'].should == 'supasikrit'
59
- end
60
-
61
- it "should fill in a field with a custom type" do
62
- @session.fill_in('Schmooo', :with => 'Schmooo is the game')
63
- @session.click_button('awesome')
64
- extract_results(@session)['schmooo'].should == 'Schmooo is the game'
65
- end
66
-
67
- it "should fill in a field without a type" do
68
- @session.fill_in('Phone', :with => '+1 555 7022')
69
- @session.click_button('awesome')
70
- extract_results(@session)['phone'].should == '+1 555 7022'
71
- end
72
-
73
- it "should fill in a text field respecting its maxlength attribute" do
74
- @session.fill_in('Zipcode', :with => '52071350')
75
- @session.click_button('awesome')
76
- extract_results(@session)['zipcode'].should == '52071'
77
- end
78
-
79
- it "should fill in a password field by name" do
80
- @session.fill_in('form[password]', :with => 'supasikrit')
81
- @session.click_button('awesome')
82
- extract_results(@session)['password'].should == 'supasikrit'
83
- end
84
-
85
- it "should fill in a password field by label" do
86
- @session.fill_in('Password', :with => 'supasikrit')
87
- @session.click_button('awesome')
88
- extract_results(@session)['password'].should == 'supasikrit'
89
- end
90
-
91
- it "should fill in a password field by name" do
92
- @session.fill_in('form[password]', :with => 'supasikrit')
93
- @session.click_button('awesome')
94
- extract_results(@session)['password'].should == 'supasikrit'
95
- end
96
-
97
- it "should prefer exact matches over partial matches" do
98
- @session.fill_in('Name', :with => 'Ford Prefect')
99
- @session.click_button('awesome')
100
- extract_results(@session)['name'].should == 'Ford Prefect'
101
- end
102
-
103
- it "should throw an exception if a hash containing 'with' is not provided" do
104
- lambda{@session.fill_in 'Name', 'ignu'}.should raise_error
105
- end
106
-
107
- context "with ignore_hidden_fields" do
108
- before { Capybara.ignore_hidden_elements = true }
109
- after { Capybara.ignore_hidden_elements = false }
110
- it "should not find a hidden field" do
111
- running do
112
- @session.fill_in('Super Secret', :with => '777')
113
- end.should raise_error(Capybara::ElementNotFound)
114
- end
115
- end
116
-
117
- context "with a locator that doesn't exist" do
118
- it "should raise an error" do
119
- running do
120
- @session.fill_in('does not exist', :with => 'Blah blah')
121
- end.should raise_error(Capybara::ElementNotFound)
122
- end
123
- end
124
- end
125
- end
@@ -1,18 +0,0 @@
1
- shared_examples_for "find_button" do
2
- describe '#find_button' do
3
- before do
4
- @session.visit('/form')
5
- end
6
-
7
- it "should find any field" do
8
- @session.find_button('med')[:id].should == "mediocre"
9
- @session.find_button('crap321').value.should == "crappy"
10
- end
11
-
12
- it "should raise error if the field doesn't exist" do
13
- running do
14
- @session.find_button('Does not exist')
15
- end.should raise_error(Capybara::ElementNotFound)
16
- end
17
- end
18
- end
@@ -1,18 +0,0 @@
1
- shared_examples_for "find_by_id" do
2
- describe '#find_by_id' do
3
- before do
4
- @session.visit('/with_html')
5
- end
6
-
7
- it "should find any element by id" do
8
- @session.find_by_id('red').tag_name.should == 'a'
9
- @session.find_by_id('hidden_via_ancestor').tag_name.should == 'div'
10
- end
11
-
12
- it "should raise error if no element with id is found" do
13
- running do
14
- @session.find_by_id('nothing_with_this_id')
15
- end.should raise_error(Capybara::ElementNotFound)
16
- end
17
- end
18
- end
@@ -1,26 +0,0 @@
1
- shared_examples_for "find_field" do
2
- describe '#find_field' do
3
- before do
4
- @session.visit('/form')
5
- end
6
-
7
- it "should find any field" do
8
- @session.find_field('Dog').value.should == 'dog'
9
- @session.find_field('form_description').text.should == 'Descriptive text goes here'
10
- @session.find_field('Region')[:name].should == 'form[region]'
11
- end
12
-
13
- it "should raise error if the field doesn't exist" do
14
- running do
15
- @session.find_field('Does not exist')
16
- end.should raise_error(Capybara::ElementNotFound)
17
- end
18
-
19
- it "should be aliased as 'field_labeled' for webrat compatibility" do
20
- @session.field_labeled('Dog').value.should == 'dog'
21
- running do
22
- @session.field_labeled('Does not exist')
23
- end.should raise_error(Capybara::ElementNotFound)
24
- end
25
- end
26
- end
@@ -1,19 +0,0 @@
1
- shared_examples_for "find_link" do
2
-
3
- describe '#find_link' do
4
- before do
5
- @session.visit('/with_html')
6
- end
7
-
8
- it "should find any field" do
9
- @session.find_link('foo').text.should == "ullamco"
10
- @session.find_link('labore')[:href].should =~ %r(/with_simple_html$)
11
- end
12
-
13
- it "should raise error if the field doesn't exist" do
14
- running do
15
- @session.find_link('Does not exist')
16
- end.should raise_error(Capybara::ElementNotFound)
17
- end
18
- end
19
- end