117 lines
3.3 KiB
Ruby
117 lines
3.3 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require "rubocops/compact_blank"
|
|
|
|
RSpec.describe RuboCop::Cop::Homebrew::CompactBlank do
|
|
subject(:cop) { described_class.new }
|
|
|
|
it "registers and corrects an offense when using `reject { |e| e.blank? }`" do
|
|
expect_offense(<<~RUBY)
|
|
collection.reject { |e| e.blank? }
|
|
^^^^^^^^^^^^^^^^^^^^^^^ Homebrew/CompactBlank: Use `compact_blank` instead.
|
|
RUBY
|
|
|
|
expect_correction(<<~RUBY)
|
|
collection.compact_blank
|
|
RUBY
|
|
end
|
|
|
|
it "registers and corrects an offense when using `reject(&:blank?)`" do
|
|
expect_offense(<<~RUBY)
|
|
collection.reject(&:blank?)
|
|
^^^^^^^^^^^^^^^^ Homebrew/CompactBlank: Use `compact_blank` instead.
|
|
RUBY
|
|
|
|
expect_correction(<<~RUBY)
|
|
collection.compact_blank
|
|
RUBY
|
|
end
|
|
|
|
it "registers and corrects an offense when using `delete_if { |e| e.blank? }`" do
|
|
expect_offense(<<~RUBY)
|
|
collection.delete_if { |e| e.blank? }
|
|
^^^^^^^^^^^^^^^^^^^^^^^^^^ Homebrew/CompactBlank: Use `compact_blank!` instead.
|
|
RUBY
|
|
|
|
expect_correction(<<~RUBY)
|
|
collection.compact_blank!
|
|
RUBY
|
|
end
|
|
|
|
it "registers and corrects an offense when using `delete_if(&:blank?)`" do
|
|
expect_offense(<<~RUBY)
|
|
collection.delete_if(&:blank?)
|
|
^^^^^^^^^^^^^^^^^^^ Homebrew/CompactBlank: Use `compact_blank!` instead.
|
|
RUBY
|
|
|
|
expect_correction(<<~RUBY)
|
|
collection.compact_blank!
|
|
RUBY
|
|
end
|
|
|
|
it "registers and corrects an offense when using `reject! { |e| e.blank? }`" do
|
|
expect_offense(<<~RUBY)
|
|
collection.reject! { |e| e.blank? }
|
|
^^^^^^^^^^^^^^^^^^^^^^^^ Homebrew/CompactBlank: Use `compact_blank!` instead.
|
|
RUBY
|
|
|
|
expect_correction(<<~RUBY)
|
|
collection.compact_blank!
|
|
RUBY
|
|
end
|
|
|
|
it "registers and corrects an offense when using `reject!(&:blank?)`" do
|
|
expect_offense(<<~RUBY)
|
|
collection.reject!(&:blank?)
|
|
^^^^^^^^^^^^^^^^^ Homebrew/CompactBlank: Use `compact_blank!` instead.
|
|
RUBY
|
|
|
|
expect_correction(<<~RUBY)
|
|
collection.compact_blank!
|
|
RUBY
|
|
end
|
|
|
|
it "registers and corrects an offense when using `reject(&:blank?)` in block" do
|
|
expect_offense(<<~RUBY)
|
|
hash.transform_values { |value| value.reject(&:blank?) }
|
|
^^^^^^^^^^^^^^^^ Homebrew/CompactBlank: Use `compact_blank` instead.
|
|
RUBY
|
|
|
|
expect_correction(<<~RUBY)
|
|
hash.transform_values { |value| value.compact_blank }
|
|
RUBY
|
|
end
|
|
|
|
it "does not register an offense when using `compact_blank`" do
|
|
expect_no_offenses(<<~RUBY)
|
|
collection.compact_blank
|
|
RUBY
|
|
end
|
|
|
|
it "does not register an offense when using `compact_blank!`" do
|
|
expect_no_offenses(<<~RUBY)
|
|
collection.compact_blank!
|
|
RUBY
|
|
end
|
|
|
|
it "does not register an offense when using `reject { |k, v| k.blank? }`" do
|
|
expect_no_offenses(<<~RUBY)
|
|
collection.reject { |k, v| k.blank? }
|
|
RUBY
|
|
end
|
|
|
|
it "does not register an offense when using the receiver of `blank?` is not a block variable" do
|
|
expect_no_offenses(<<~RUBY)
|
|
def foo(arg)
|
|
collection.reject { |_| arg.blank? }
|
|
end
|
|
RUBY
|
|
end
|
|
|
|
it "does not register an offense when using `reject { |e| e.empty? }`" do
|
|
expect_no_offenses(<<~RUBY)
|
|
collection.reject { |e| e.empty? }
|
|
RUBY
|
|
end
|
|
end
|