class Guard::Jest::RunRequest

Attributes

paths[R]
result[R]

Public Class Methods

new(paths = :all) click to toggle source
# File lib/guard/jest/run_request.rb, line 9
def initialize(paths = :all)
    @paths = paths
    @end_time = Time.now
    @start_time = Time.now
    @is_complete = Concurrent::AtomicBoolean.new(false)
end

Public Instance Methods

all?() click to toggle source
# File lib/guard/jest/run_request.rb, line 16
def all?
    :all == paths
end
collect_spec_error_messages(specs) click to toggle source
# File lib/guard/jest/run_request.rb, line 74
def collect_spec_error_messages(specs)
    specs.select { |s| s['status'] == 'failed' }.map do |s|
        s['message']
    end
end
collect_spec_error_titles(specs) click to toggle source
# File lib/guard/jest/run_request.rb, line 67
def collect_spec_error_titles(specs)
    specs.select { |s| s['status'] == 'failed' }.map do |s|
        result = s['assertionResults'].detect { |res| res['status'] == 'failed' }
        result ? result['title'] : 'Unknown failure'
    end
end
elapsed_seconds() click to toggle source
# File lib/guard/jest/run_request.rb, line 20
def elapsed_seconds
    if satisfied?
        @end_time - @start_time
    else
        Time.now - @start_time
    end
end
notify(json) click to toggle source
# File lib/guard/jest/run_request.rb, line 39
def notify(json)
    r = json

    specs         = r['numTotalTests'] - r['numPendingTests']
    failed        = r['numFailedTests']
    specs_plural  = specs == 1 ? '' : 's'
    failed_plural = failed == 1 ? '' : 's'

    Formatter.info("Finished in #{elapsed_seconds} seconds")

    pending = r['numPendingTests'] > 0 ? " #{r['numPendingTests']} pending," : ''
    message = "#{specs} spec#{specs_plural}," \
              "#{pending} #{failed} failure#{failed_plural}"
    full_message = "#{message}\nin #{elapsed_seconds} seconds"

    if failed.zero?
        Formatter.success(message)
        Formatter.notify(full_message, title: 'Jest suite passed')
    else
        Formatter.error(
            collect_spec_error_messages(r['testResults']).join("\n")
        )
        error_title = collect_spec_error_titles(r['testResults']).join("\n")
        Formatter.notify("#{error_title}\n#{full_message}",
                         title: 'Jest test run failed', image: :failed, priority: 2)
    end
end
satisfied?() click to toggle source
# File lib/guard/jest/run_request.rb, line 28
def satisfied?
    @is_complete.true?
end
satisfy(json) click to toggle source
# File lib/guard/jest/run_request.rb, line 32
def satisfy(json)
    @end_time = Time.now
    @is_complete.make_true
    @result = json
    notify(json)
end