class ShouldIT::Formatters::RSpecFormatter

Constants

VERSION

Attributes

output[R]
specs[R]

Public Class Methods

new(output) click to toggle source
Calls superclass method
# File lib/shouldit/formatters/rspec_formatter.rb, line 14
def initialize(output)
  super

  @specs = {}
end

Public Instance Methods

build_output(examples) click to toggle source
# File lib/shouldit/formatters/rspec_formatter.rb, line 44
def build_output(examples)
  examples.each do |example|
    group = @specs[example[:group]] || {}

    @specs[example[:group]] = group.merge({
      example[:description] => example[:result]
    })
  end
end
close(_notification) click to toggle source
# File lib/shouldit/formatters/rspec_formatter.rb, line 54
def close(_notification)
  output.write @specs.to_json
  output.close if IO === output && output != $stdout
end
group_for(metadata) click to toggle source
# File lib/shouldit/formatters/rspec_formatter.rb, line 36
def group_for(metadata)
  metadata[:full_description].gsub(metadata[:description], '').strip
end
map_example(example) click to toggle source
# File lib/shouldit/formatters/rspec_formatter.rb, line 28
def map_example(example)
  {
    group: group_for(example.metadata),
    description: example.metadata[:description],
    result: result_for(example.metadata)
  }
end
result_for(metadata) click to toggle source
# File lib/shouldit/formatters/rspec_formatter.rb, line 40
def result_for(metadata)
  metadata[:execution_result].status.upcase.to_s
end
stop(notification) click to toggle source
# File lib/shouldit/formatters/rspec_formatter.rb, line 20
def stop(notification)
  examples = notification.examples.map do |example|
    map_example(example)
  end

  build_output(examples)
end