/usr/lib/ruby/vendor_ruby/capybara/spec/session/click_link_spec.rb is in ruby-capybara 2.5.0-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 | Capybara::SpecHelper.spec '#click_link' do
before do
@session.visit('/with_html')
end
it "should wait for asynchronous load", :requires => [:js] do
@session.visit('/with_js')
@session.click_link('Click me')
@session.click_link('Has been clicked')
end
it "casts to string" do
@session.click_link(:'foo')
expect(@session).to have_content('Another World')
end
it "raises any errors caught inside the server", :requires => [:server] do
quietly { @session.visit("/error") }
expect do
@session.click_link('foo')
end.to raise_error(TestApp::TestAppError)
end
context "with id given" do
it "should take user to the linked page" do
@session.click_link('foo')
expect(@session).to have_content('Another World')
end
end
context "with text given" do
it "should take user to the linked page" do
@session.click_link('labore')
expect(@session).to have_content('Bar')
end
it "should accept partial matches" do
@session.click_link('abo')
expect(@session).to have_content('Bar')
end
end
context "with title given" do
it "should take user to the linked page" do
@session.click_link('awesome title')
expect(@session).to have_content('Bar')
end
it "should accept partial matches" do
@session.click_link('some titl')
expect(@session).to have_content('Bar')
end
end
context "with alternative text given to a contained image" do
it "should take user to the linked page" do
@session.click_link('awesome image')
expect(@session).to have_content('Bar')
end
it "should accept partial matches" do
@session.click_link('some imag')
expect(@session).to have_content('Bar')
end
end
context "with a locator that doesn't exist" do
it "should raise an error" do
msg = "Unable to find link \"does not exist\""
expect do
@session.click_link('does not exist')
end.to raise_error(Capybara::ElementNotFound, msg)
end
end
context "with :href option given" do
it "should find links with valid href" do
@session.click_link('labore', :href => '/with_simple_html')
expect(@session).to have_content('Bar')
end
it "should raise error if link wasn't found" do
expect { @session.click_link('labore', :href => 'invalid_href') }.to raise_error(Capybara::ElementNotFound)
end
end
context "with a regex :href option given" do
it "should find a link matching an all-matching regex pattern" do
@session.click_link('labore', :href => /.+/)
expect(@session).to have_content('Bar')
end
it "should find a link matching an exact regex pattern" do
@session.click_link('labore', :href => /\/with_simple_html/)
expect(@session).to have_content('Bar')
end
it "should find a link matching a partial regex pattern" do
@session.click_link('labore', :href => /\/with_simple/)
expect(@session).to have_content('Bar')
end
it "should raise an error if no link's href matched the pattern" do
expect { @session.click_link('labore', :href => /invalid_pattern/) }.to raise_error(Capybara::ElementNotFound)
expect { @session.click_link('labore', :href => /.+d+/) }.to raise_error(Capybara::ElementNotFound)
end
end
it "should follow relative links" do
@session.visit('/')
@session.click_link('Relative')
expect(@session).to have_content('This is a test')
end
it "should follow protocol relative links" do
@session.click_link('Protocol')
expect(@session).to have_content('Another World')
end
it "should follow redirects" do
@session.click_link('Redirect')
expect(@session).to have_content('You landed')
end
it "should follow redirects back to itself" do
@session.click_link('BackToMyself')
expect(@session).to have_css('#referrer', text: /\/with_html$/)
expect(@session).to have_content('This is a test')
end
it "should add query string to current URL with naked query string" do
@session.click_link('Naked Query String')
expect(@session).to have_content('Query String sent')
end
it "should do nothing on anchor links" do
@session.fill_in("test_field", :with => 'blah')
@session.click_link('Normal Anchor')
expect(@session.find_field("test_field").value).to eq('blah')
@session.click_link('Blank Anchor')
expect(@session.find_field("test_field").value).to eq('blah')
@session.click_link('Blank JS Anchor')
expect(@session.find_field("test_field").value).to eq('blah')
end
it "should do nothing on URL+anchor links for the same page" do
@session.fill_in("test_field", :with => 'blah')
@session.click_link('Anchor on same page')
expect(@session.find_field("test_field").value).to eq('blah')
end
it "should follow link on URL+anchor links for a different page" do
@session.click_link('Anchor on different page')
expect(@session).to have_content('Bar')
end
it "should follow link on anchor if the path has regex special characters" do
@session.visit('/with.*html')
@session.click_link('Anchor on different page')
expect(@session).to have_content('Bar')
end
it "raise an error with links with no href" do
expect do
@session.click_link('No Href')
end.to raise_error(Capybara::ElementNotFound)
end
context "with :exact option" do
it "should accept partial matches when false" do
@session.click_link('abo', :exact => false)
expect(@session).to have_content('Bar')
end
it "should not accept partial matches when true" do
expect do
@session.click_link('abo', :exact => true)
end.to raise_error(Capybara::ElementNotFound)
end
end
end
|