class RSpectacles::Adapter::Logger

Attributes

test_run_key[R]

Public Class Methods

new(test_run_key: nil) click to toggle source
# File lib/rspectacles/adapter/logger.rb, line 11
def initialize(test_run_key: nil)
  @test_run_key = test_run_key || config.last_run_primary_key
end

Public Instance Methods

config() click to toggle source
# File lib/rspectacles/adapter/logger.rb, line 15
def config
  RSpectacles.config
end
log(example) click to toggle source
# File lib/rspectacles/adapter/logger.rb, line 29
def log(example)
  message = format_example(example)
  queue message
end
start() click to toggle source
# File lib/rspectacles/adapter/logger.rb, line 26
def start
end
stop() click to toggle source
# File lib/rspectacles/adapter/logger.rb, line 23
def stop
end
uri() click to toggle source
# File lib/rspectacles/adapter/logger.rb, line 19
def uri
  @uri ||= config.rspectacles_url
end

Private Instance Methods

active?() click to toggle source
# File lib/rspectacles/adapter/logger.rb, line 49
def active?
  !!uri
end
format_example(example) click to toggle source
# File lib/rspectacles/adapter/logger.rb, line 57
def format_example(example)
  {
    rspec_run: test_run_key,
    description: example.description,
    full_description: example.full_description,
    status: example.execution_result.status,
    duration: example.execution_result.run_time,
    file_path: example.metadata[:file_path],
    line_number: example.metadata[:line_number]
  }
end
full_uri() click to toggle source
# File lib/rspectacles/adapter/logger.rb, line 53
def full_uri
  "#{uri}/examples"
end
post_results(messages) click to toggle source
# File lib/rspectacles/adapter/logger.rb, line 41
def post_results(messages)
  HTTParty.post(full_uri, timeout: config.timeout,
                          body: { examples: messages }.to_json,
                          headers: { 'Content-Type' => 'application/json' })
rescue Net::ReadTimeout
  puts "RSpectacles Timeout! Failed to send #{messages.size} messages"
end
queue(message) click to toggle source
# File lib/rspectacles/adapter/logger.rb, line 36
def queue(message)
  return unless active?
  post_results Array.wrap(message)
end