Have you ever wanted to create an assert that tests if a link is NOT on the page with Rails? It's not easy to find an example of this. You can find some with Rspec, but not with Rails's builtin test suite using Minitest.
Typically you'll use assert_selector
to find a match on the page like this:
assert_selector "a", "Edit Team"
This takes two arguments and searches for any anchor tags that contain the text "Edit Team" in them. If it finds it, the assertion passes.
Unfortunately there is no assert_not_selector
or refute_selector
method to execute the inverse of assert_selector
. The assert_selector docs do mention some
equality` options you can pass in, but the documentation is kind of hard to understand.
How do you test and assert a link is not on the page?
Well, you can pass in the text and count options and check for the count of 0. Easy as that.
assert_selector "a", text: "Edit Team", count: 0
To keep tests consistent, I like to use the same count selector when I want to check for presence too.
assert_selector "a", text: "Edit Team", count: 1