Class: TestProf::FactoryDoctor::RSpecListener
- Inherits:
-
Object
- Object
- TestProf::FactoryDoctor::RSpecListener
- Includes:
- Logging
- Defined in:
- lib/test_prof/factory_doctor/rspec.rb
Overview
:nodoc:
Constant Summary collapse
- SUCCESS_MESSAGE =
'FactoryDoctor says: "Looks good to me!"'
- NOTIFICATIONS =
%i[ example_started example_finished ].freeze
Constants included from Logging
Instance Method Summary collapse
- #example_finished(notification) ⇒ Object
- #example_started(_notification) ⇒ Object
-
#initialize ⇒ RSpecListener
constructor
A new instance of RSpecListener.
- #print ⇒ Object
Methods included from Logging
#build_log_msg, #colorize, #log
Constructor Details
#initialize ⇒ RSpecListener
Returns a new instance of RSpecListener.
18 19 20 21 22 |
# File 'lib/test_prof/factory_doctor/rspec.rb', line 18 def initialize @count = 0 @time = 0.0 @example_groups = Hash.new { |h, k| h[k] = [] } end |
Instance Method Details
#example_finished(notification) ⇒ Object
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/test_prof/factory_doctor/rspec.rb', line 28 def example_finished(notification) FactoryDoctor.stop return if notification.example.pending? result = FactoryDoctor.result return unless result.bad? group = notification.example.example_group.parent_groups.last notification.example..merge!( factories: result.count, time: result.time ) @example_groups[group] << notification.example @count += 1 @time += result.time end |
#example_started(_notification) ⇒ Object
24 25 26 |
# File 'lib/test_prof/factory_doctor/rspec.rb', line 24 def example_started(_notification) FactoryDoctor.start end |
#print ⇒ Object
46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
# File 'lib/test_prof/factory_doctor/rspec.rb', line 46 def print return log(:info, SUCCESS_MESSAGE) if @example_groups.empty? msgs = [] msgs << <<~MSG FactoryDoctor report Total (potentially) bad examples: #{@count} Total wasted time: #{@time.duration} MSG @example_groups.each do |group, examples| msgs << "#{group.description} (#{group.[:location]})\n" examples.each do |ex| msgs << " #{ex.description} (#{ex.[:location]}) "\ "– #{pluralize_records(ex.[:factories])} created, "\ "#{ex.[:time].duration}\n" end msgs << "\n" end log :info, msgs.join end |