115 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			115 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
# frozen_string_literal: true
 | 
						|
 | 
						|
require "rubocops/compact_blank"
 | 
						|
 | 
						|
RSpec.describe RuboCop::Cop::Homebrew::CompactBlank, :config do
 | 
						|
  it "registers and corrects an offense when using `reject { |e| e.blank? }`" do
 | 
						|
    expect_offense(<<~RUBY)
 | 
						|
      collection.reject { |e| e.blank? }
 | 
						|
                 ^^^^^^^^^^^^^^^^^^^^^^^ 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?)
 | 
						|
                 ^^^^^^^^^^^^^^^^ 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? }
 | 
						|
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^ 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?)
 | 
						|
                 ^^^^^^^^^^^^^^^^^^^ 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? }
 | 
						|
                 ^^^^^^^^^^^^^^^^^^^^^^^^ 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?)
 | 
						|
                 ^^^^^^^^^^^^^^^^^ 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?) }
 | 
						|
                                            ^^^^^^^^^^^^^^^^ 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
 |