class RSpecApprovals::ApprovalHandler

Handles user input and interactive approvals

Attributes

actual[R]
approval_file[R]
expected[R]

Public Instance Methods

run(expected, actual, approval_file) click to toggle source
# File lib/rspec_approvals/approval_handler.rb, line 13
def run(expected, actual, approval_file)
  @expected = expected
  @actual = actual
  @approval_file = approval_file

  show expected.empty? ? actual : diff
  prompt_user
end

Private Instance Methods

approve() click to toggle source
# File lib/rspec_approvals/approval_handler.rb, line 65
def approve
  say "!txtgrn!Approved"
  File.deep_write approval_file, actual
  true
end
auto_approve?() click to toggle source
# File lib/rspec_approvals/approval_handler.rb, line 42
def auto_approve?
  RSpec.configuration.auto_approve
end
diff() click to toggle source
# File lib/rspec_approvals/approval_handler.rb, line 80
def diff
  Diffy::Diff.new(expected, actual, context: 2).to_s :color
end
get_response() click to toggle source
# File lib/rspec_approvals/approval_handler.rb, line 46
def get_response
  Prompt.select "Please Choose:", 'r', menu_options
end
menu_options() click to toggle source
prompt_user() click to toggle source
# File lib/rspec_approvals/approval_handler.rb, line 24
def prompt_user
  response = auto_approve? ? :approve : get_response

  case response

  when :approve, :reject
    send response

  when :actual, :expected, :diff
    show send response
    prompt_user

  else
    false

  end
end
reject() click to toggle source
# File lib/rspec_approvals/approval_handler.rb, line 71
def reject
  say "!txtred!Not Approved"
  false
end
separator() click to toggle source
# File lib/rspec_approvals/approval_handler.rb, line 76
def separator
  "!txtgrn!" + ('_' * terminal_width)
end
show(what) click to toggle source
# File lib/rspec_approvals/approval_handler.rb, line 84
def show(what)
  say ""
  say separator
  say what
  say separator
end