debian-mirror-gitlab/spec/rubocop/cop/rspec/misspelled_aggregate_failures_spec.rb
2023-06-20 00:43:36 +05:30

136 lines
3.6 KiB
Ruby

# frozen_string_literal: true
require 'rubocop_spec_helper'
require 'rspec-parameterized'
require_relative '../../../../rubocop/cop/rspec/misspelled_aggregate_failures'
RSpec.describe RuboCop::Cop::RSpec::MisspelledAggregateFailures, feature_category: :shared do
shared_examples 'misspelled tag' do |misspelled|
it 'flags and auto-corrects misspelled tags in describe' do
expect_offense(<<~'RUBY', misspelled: misspelled)
RSpec.describe 'a feature', :%{misspelled} do
^^{misspelled} Use `:aggregate_failures` to aggregate failures.
describe 'inner', :%{misspelled} do
^^{misspelled} Use `:aggregate_failures` to aggregate failures.
end
end
RUBY
expect_correction(<<~'RUBY')
RSpec.describe 'a feature', :aggregate_failures do
describe 'inner', :aggregate_failures do
end
end
RUBY
end
it 'flags and auto-corrects misspelled tags in context' do
expect_offense(<<~'RUBY', misspelled: misspelled)
context 'a feature', :%{misspelled} do
^^{misspelled} Use `:aggregate_failures` to aggregate failures.
end
RUBY
expect_correction(<<~'RUBY')
context 'a feature', :aggregate_failures do
end
RUBY
end
it 'flags and auto-corrects misspelled tags in examples' do
expect_offense(<<~'RUBY', misspelled: misspelled)
it 'aggregates', :%{misspelled} do
^^{misspelled} Use `:aggregate_failures` to aggregate failures.
end
specify :%{misspelled} do
^^{misspelled} Use `:aggregate_failures` to aggregate failures.
end
it :%{misspelled} do
^^{misspelled} Use `:aggregate_failures` to aggregate failures.
end
RUBY
expect_correction(<<~'RUBY')
it 'aggregates', :aggregate_failures do
end
specify :aggregate_failures do
end
it :aggregate_failures do
end
RUBY
end
it 'flags and auto-corrects misspelled tags in any order' do
expect_offense(<<~'RUBY', misspelled: misspelled)
it 'aggregates', :foo, :%{misspelled} do
^^{misspelled} Use `:aggregate_failures` to aggregate failures.
end
it 'aggregates', :%{misspelled}, :bar do
^^{misspelled} Use `:aggregate_failures` to aggregate failures.
end
RUBY
expect_correction(<<~'RUBY')
it 'aggregates', :foo, :aggregate_failures do
end
it 'aggregates', :aggregate_failures, :bar do
end
RUBY
end
end
shared_examples 'legit tag' do |legit_tag|
it 'does not flag' do
expect_no_offenses(<<~RUBY)
RSpec.describe 'a feature', :#{legit_tag} do
end
it 'is ok', :#{legit_tag} do
end
RUBY
end
end
context 'with misspelled tags' do
where(:tag) do
# From https://gitlab.com/gitlab-org/gitlab/-/issues/396356#list
%w[
aggregate_errors
aggregate_failure
aggregated_failures
aggregate_results
aggregated_errors
aggregates_failures
aggregate_failues
aggregate_bar
aggregate_foo
]
end
with_them do
it_behaves_like 'misspelled tag', params[:tag]
end
end
context 'with legit tags' do
where(:tag) do
%w[
aggregate
aggregations
aggregate_two_underscores
]
end
with_them do
it_behaves_like 'legit tag', params[:tag]
end
end
end