44 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
		
		
			
		
	
	
			44 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
|   | # 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 |