-
-
Save manavortex/15f883560733f22f3129294cab3b9546 to your computer and use it in GitHub Desktop.
Rspec Rails cheatsheet (include capybara matchers)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#Model | |
@user.should have(1).error_on(:username) # Checks whether there is an error in username | |
@user.errors[:username].should include("can't be blank") # check for the error message | |
#Rendering | |
response.should render_template(:index) | |
#Redirecting | |
response.should redirect_to(movies_path) | |
#Capybara Matchers | |
response.body.should have_content("Hello world") | |
response.body.should have_no_content("Hello world") | |
expect(response.body).to have_css("input#movie_title") | |
expect(response.body).to have_css("input#movie_title", :value => "Twelve Angry Men") | |
expect(response.body).to have_css("input", :count => 3) #True if there are 3 input tags in response | |
expect(response.body).to have_css("input", :maximum => 3) # True if there or fewer or equal to 3 input tags | |
expect(response.body).to have_css("input", :minimum => 3) # True if there are minimum of 3 input tags | |
expect(response.body).to have_css("input", :between => 1..3) # True if there 1 to 3 input tags | |
expect(response.body).to have_css("p a", :text => "hello") # True if there is a anchor tag with text hello | |
expect(response.body).to have_css("p a", :text => /[hH]ello(.+)/i) | |
# True if there is a anchor tag with text matching regex | |
expect(response.body).to have_xpath("//a") | |
expect(response.body).to have_xpath("//a",:href => "google.com") | |
expect(response.body).to have_xpath("//a[@href => 'google.com']") | |
expect(response.body).to have_xpath("//a[contains(.,'some string')]") | |
expect(response.body).to have_xpath("//p//a", :text => /re[dab]i/i, :count => 1) | |
# can take both xpath and css as input and can take arguments similar to both have_css and have_xpath | |
expect(response.body).to have_selector(:xpath, "//p/h1") | |
expect(response.body).to have_selector(:css, "p a#movie_edit_path") | |
# For making capybara to take css as default selector | |
Capybara.default_selector = :css | |
expect(response.body).to have_selector("input") #checks for the presence of the input tag | |
expect(response.body).to have_selector("input", :value =>"Twelve Angry Men") # checks for input tag with value | |
expect(response.body).to have_no_selector("input") | |
# For making capybara to take css as default selector | |
Capybara.default_selector = :xpath | |
expect(response.body).to have_selector("//input") #checks for the presence of the input tag | |
expect(response.body).to have_selector("//input", :value =>"Twelve Angry Men") # checks for input tag with value | |
# To access elements inside form | |
expect(response.body).to have_field("FirstName") # checks for presence of a input field named FirstName in a form | |
expect(response.body).to have_field("FirstName", :value => "Rambo") | |
expect(response.body).to have_field("FirstName", :with => "Rambo") | |
expect(response.body).to have_link("Foo") | |
expect(response.body).to have_link("Foo", :href=>"googl.com") | |
expect(response.body).to have_no_link("Foo", :href=>"google.com") | |
expect(page).to have_field("My Field", with: "the value in the field") |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment