# 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