70 lines
2.7 KiB
Ruby
70 lines
2.7 KiB
Ruby
|
|
# frozen_string_literal: true
|
||
|
|
|
||
|
|
require "rubocop_spec_helper"
|
||
|
|
require_relative "../../../../rubocop/cop/cucumber/regex_step_name"
|
||
|
|
|
||
|
|
describe RuboCop::Cop::Cucumber::RegexStepName do
|
||
|
|
context "with a `Given` block" do
|
||
|
|
it "records a violation when named via regex" do
|
||
|
|
expect_offense(<<~INVALID)
|
||
|
|
Given /^I have no users$/ do
|
||
|
|
^^^^^^^^^^^^^^^^^^^ Prefer Cucumber expressions (https://github.com/cucumber/cucumber-expressions) over regex for step names; refer to https://github.com/otwcode/otwarchive/wiki/Reviewdog-and-RuboCop if regex is still required
|
||
|
|
User.delete_all
|
||
|
|
end
|
||
|
|
INVALID
|
||
|
|
end
|
||
|
|
|
||
|
|
it "does not record a violation when named via a Cucumber expression" do
|
||
|
|
expect_no_offenses(<<~RUBY)
|
||
|
|
Given "I have no users" do
|
||
|
|
User.delete_all
|
||
|
|
end
|
||
|
|
RUBY
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
context "with a `When` block" do
|
||
|
|
it "records a violation when named via regex" do
|
||
|
|
expect_offense(<<~INVALID)
|
||
|
|
When /^I visit the change username page for (.*)$/ do |login|
|
||
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Prefer Cucumber expressions (https://github.com/cucumber/cucumber-expressions) over regex for step names; refer to https://github.com/otwcode/otwarchive/wiki/Reviewdog-and-RuboCop if regex is still required
|
||
|
|
user = User.find_by(login: login)
|
||
|
|
visit change_username_user_path(user)
|
||
|
|
end
|
||
|
|
INVALID
|
||
|
|
end
|
||
|
|
|
||
|
|
it "does not record a violation when named via a Cucumber expression" do
|
||
|
|
expect_no_offenses(<<~RUBY)
|
||
|
|
When "I request a password reset for {string}" do |login|
|
||
|
|
step(%{I am on the login page})
|
||
|
|
step(%{I follow "Reset password"})
|
||
|
|
step(%{I fill in "Email address or user name" with "\#{login}"})
|
||
|
|
step(%{I press "Reset Password"})
|
||
|
|
end
|
||
|
|
RUBY
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
context "with a `Then` block" do
|
||
|
|
it "records a violation when named via regex" do
|
||
|
|
expect_offense(<<~INVALID)
|
||
|
|
Then /^the user "([^"]*)" should be activated$/ do |login|
|
||
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Prefer Cucumber expressions (https://github.com/cucumber/cucumber-expressions) over regex for step names; refer to https://github.com/otwcode/otwarchive/wiki/Reviewdog-and-RuboCop if regex is still required
|
||
|
|
user = User.find_by(login: login)
|
||
|
|
expect(user).to be_active
|
||
|
|
end
|
||
|
|
INVALID
|
||
|
|
end
|
||
|
|
|
||
|
|
it "does not record a violation when named via a Cucumber expression" do
|
||
|
|
expect_no_offenses(<<~RUBY)
|
||
|
|
Then "I should see the invitation id for the user {string}" do |login|
|
||
|
|
invitation_id = User.find_by(login: login).invitation.id
|
||
|
|
step %{I should see "Invitation: \#{invitation_id}"}
|
||
|
|
end
|
||
|
|
RUBY
|
||
|
|
end
|
||
|
|
end
|
||
|
|
end
|