class ProbeDockRSpec::TestResult

Attributes

category[R]
data[R]
duration[R]
key[R]
message[R]
name[R]
tags[R]
tickets[R]

Public Class Methods

extract_grouped(example, groups = []) click to toggle source
# File lib/probe_dock_rspec/test_result.rb, line 58
def self.extract_grouped example, groups = []
  !!groups.collect{ |g| meta(g)[:grouped] }.compact.last
end
extract_key(example, groups = []) click to toggle source
# File lib/probe_dock_rspec/test_result.rb, line 62
def self.extract_key example, groups = []
  (groups.collect{ |g| meta(g)[:key] } << meta(example)[:key]).compact.reject{ |k| k.strip.empty? }.last
end
meta(holder) click to toggle source
# File lib/probe_dock_rspec/test_result.rb, line 66
def self.meta holder
  meta = holder.metadata[:probe_dock] || {}
  if meta.kind_of? String
    { key: meta }
  elsif meta.kind_of? Hash
    meta
  else
    {}
  end
end
new(project, example, groups = [], options = {}) click to toggle source
# File lib/probe_dock_rspec/test_result.rb, line 7
def initialize project, example, groups = [], options = {}

  @category = project.category
  @tags = project.tags
  @tickets = project.tickets

  @grouped = extract_grouped example, groups

  [ :key, :name, :category, :tags, :tickets, :data ].each do |attr|
    instance_variable_set "@#{attr}".to_sym, send("extract_#{attr}".to_sym, example, groups)
  end

  @passed = !!options[:passed]
  @duration = options[:duration]
  @message = options[:message]
end

Public Instance Methods

grouped?() click to toggle source
# File lib/probe_dock_rspec/test_result.rb, line 28
def grouped?
  @grouped
end
passed?() click to toggle source
# File lib/probe_dock_rspec/test_result.rb, line 24
def passed?
  @passed
end
to_h(options = {}) click to toggle source
# File lib/probe_dock_rspec/test_result.rb, line 38
def to_h options = {}
  {
    'p' => @passed,
    'd' => @duration
  }.tap do |h|

    h['k'] = @key if @key
    h['m'] = @message if @message

    cache = options[:cache]
    first = !cache || !cache.known?(self)
    stale = !first && cache.stale?(self)
    h['n'] = @name if stale or first
    h['c'] = @category if stale or (first and @category)
    h['g'] = @tags if stale or (first and !@tags.empty?)
    h['t'] = @tickets if stale or (first and !@tickets.empty?)
    h['a'] = @data if @data # FIXME: cache custom data
  end
end
update(options = {}) click to toggle source
# File lib/probe_dock_rspec/test_result.rb, line 32
def update options = {}
  @passed &&= options[:passed]
  @duration += options[:duration]
  @message = [ @message, options[:message] ].select{ |m| m }.join("\n\n") if options[:message]
end

Private Instance Methods

extract_category(example, groups = []) click to toggle source
# File lib/probe_dock_rspec/test_result.rb, line 98
def extract_category example, groups = []
  cat = (groups.collect{ |g| meta(g)[:category] }.unshift(@category) << meta(example)[:category]).compact.last
  cat ? cat.to_s : nil
end
extract_data(example, groups = []) click to toggle source
# File lib/probe_dock_rspec/test_result.rb, line 111
def extract_data example, groups = []
  meta(example)[:data]
end
extract_grouped(*args) click to toggle source
# File lib/probe_dock_rspec/test_result.rb, line 83
def extract_grouped *args
  self.class.extract_grouped *args
end
extract_key(*args) click to toggle source
# File lib/probe_dock_rspec/test_result.rb, line 87
def extract_key *args
  self.class.extract_key *args
end
extract_name(example, groups = []) click to toggle source
# File lib/probe_dock_rspec/test_result.rb, line 91
def extract_name example, groups = []
  parts = groups.dup
  parts = parts[0, parts.index{ |p| meta(p)[:grouped] } + 1] if @grouped
  parts << example unless @grouped
  parts.collect{ |p| p.description.strip }.join ' '
end
extract_tags(example, groups = []) click to toggle source
# File lib/probe_dock_rspec/test_result.rb, line 103
def extract_tags example, groups = []
  (wrap(@tags) + groups.collect{ |g| wrap meta(g)[:tags] } + (wrap meta(example)[:tags])).flatten.compact.uniq.collect(&:to_s)
end
extract_tickets(example, groups = []) click to toggle source
# File lib/probe_dock_rspec/test_result.rb, line 107
def extract_tickets example, groups = []
  (wrap(@tickets) + groups.collect{ |g| wrap meta(g)[:tickets] } + (wrap meta(example)[:tickets])).flatten.compact.uniq.collect(&:to_s)
end
meta(*args) click to toggle source
# File lib/probe_dock_rspec/test_result.rb, line 79
def meta *args
  self.class.meta *args
end
wrap(a) click to toggle source
# File lib/probe_dock_rspec/test_result.rb, line 115
def wrap a
  a.kind_of?(Array) ? a : [ a ]
end