40 lines
		
	
	
		
			694 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
		
		
			
		
	
	
			40 lines
		
	
	
		
			694 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
|   | module AuditMatchers | ||
|  |   extend RSpec::Matchers::DSL | ||
|  | 
 | ||
|  |   matcher :pass do | ||
|  |     match do |audit| | ||
|  |       !audit.errors? && !audit.warnings? | ||
|  |     end | ||
|  |   end | ||
|  | 
 | ||
|  |   matcher :fail do | ||
|  |     match(&:errors?) | ||
|  |   end | ||
|  | 
 | ||
|  |   matcher :warn do | ||
|  |     match do |audit| | ||
|  |       audit.warnings? && !audit.errors? | ||
|  |     end | ||
|  |   end | ||
|  | 
 | ||
|  |   matcher :fail_with do |error_msg| | ||
|  |     match do |audit| | ||
|  |       include_msg?(audit.errors, error_msg) | ||
|  |     end | ||
|  |   end | ||
|  | 
 | ||
|  |   matcher :warn_with do |warning_msg| | ||
|  |     match do |audit| | ||
|  |       include_msg?(audit.warnings, warning_msg) | ||
|  |     end | ||
|  |   end | ||
|  | 
 | ||
|  |   def include_msg?(messages, msg) | ||
|  |     if msg.is_a?(Regexp) | ||
|  |       Array(messages).any? { |m| m =~ msg } | ||
|  |     else | ||
|  |       Array(messages).include?(msg) | ||
|  |     end | ||
|  |   end | ||
|  | end |