class Blade::TestResults

Constants

STATUS_DOTS

Attributes

failures[R]
results[R]
session_id[R]
state[R]
total[R]

Public Class Methods

new(session_id) click to toggle source
# File lib/blade/test_results.rb, line 6
def initialize(session_id)
  @session_id = session_id
  reset

  Blade.subscribe("/tests") do |details|
    if details[:session_id] == session_id
      event = details.delete(:event)
      try("process_#{event}", details)
    end
  end
end

Public Instance Methods

process_begin(details) click to toggle source
# File lib/blade/test_results.rb, line 25
def process_begin(details)
  reset
  @state = "running"
  @total = details[:total]
  publish(total: @total)
end
process_end(details) click to toggle source
# File lib/blade/test_results.rb, line 44
def process_end(details)
  @state = failures.zero? ? "finished" : "failed"
  publish(completed: true)
end
process_result(details) click to toggle source
# File lib/blade/test_results.rb, line 32
def process_result(details)
  result = details.slice(:status, :name, :message)
  @results << result

  if result[:status] == "fail"
    @state = "failing"
    @failures += 1
  end

  publish(result)
end
publish(message = {}) click to toggle source
# File lib/blade/test_results.rb, line 49
def publish(message = {})
  Blade.publish("/results", message.merge(state: state, session_id: session_id))
end
reset() click to toggle source
# File lib/blade/test_results.rb, line 18
def reset
  @results = []
  @state = "pending"
  @total = 0
  @failures = 0
end