# typed: strict
# frozen_string_literal: true

require "rubocops/safe_navigation_with_blank"

RSpec.describe RuboCop::Cop::Homebrew::SafeNavigationWithBlank, :config do
  context "when in a conditional" do
    it "registers an offense on a single conditional" do
      expect_offense(<<~RUBY)
        do_something unless foo&.blank?
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Avoid calling `blank?` with the safe navigation operator in conditionals.
      RUBY

      expect_correction(<<~RUBY)
        do_something unless foo.blank?
      RUBY
    end

    it "registers an offense on chained conditionals" do
      expect_offense(<<~RUBY)
        do_something unless foo&.bar&.blank?
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Avoid calling `blank?` with the safe navigation operator in conditionals.
      RUBY

      expect_correction(<<~RUBY)
        do_something unless foo&.bar.blank?
      RUBY
    end

    it "does not register an offense on `.blank?`" do
      expect_no_offenses(<<~RUBY)
        return if foo.blank?
      RUBY
    end
  end

  context "when outside a conditional" do
    it "registers no offense" do
      expect_no_offenses(<<~RUBY)
        bar = foo&.blank?
      RUBY
    end
  end
end
