class CmQuiz::ReviewQuiz

Public Class Methods

new(endpoint) click to toggle source
# File lib/cm_quiz/review_quiz.rb, line 5
def initialize(endpoint)
  @endpoint = endpoint
end

Public Instance Methods

perform() click to toggle source
# File lib/cm_quiz/review_quiz.rb, line 9
def perform
  test_results = perform_tests(@endpoint)
  build_message(test_results, @endpoint)
end

Private Instance Methods

arrange_results(test_results) click to toggle source
# File lib/cm_quiz/review_quiz.rb, line 67
def arrange_results(test_results)
  total_result_size = test_results.size
  failed_results = test_results.select { |test_result| test_result[1] == false }
  failed_result_size = failed_results.size
  score = 100 * (total_result_size - failed_result_size)/ total_result_size.to_f

  [score.round(2), failed_results]
end
build_message(test_results, endpoint) click to toggle source
# File lib/cm_quiz/review_quiz.rb, line 29
def build_message(test_results, endpoint)
  score, failed_results = arrange_results(test_results)
  example_messages = failed_results.map do |result|
    verb = result[0][:verb].upcase
    path = result[0][:path]
    options = result[0][:options]
    passed = result[1]
    messages = ["===#{verb} #{@endpoint}#{path}==="]
    messages << ""
    messages << "HTTP method:"
    messages << verb
    messages << ""
    messages << "Url:"
    messages << "#{@endpoint}#{path}"
    messages << ""
    if !options.nil?
      messages << "Request options:"
      messages << ""
      messages << JSON.pretty_generate(options)
    end
    messages << ""
    messages << "Error message:"
    messages << ""
    error_message = result[2].to_s
    error_message = error_message.slice(0, 500) + '...' if error_message.size > 500
    messages << error_message + "\n"

    messages.join("\n")
  end
  text = ([
    "endpoint: #{endpoint}",
    "score: #{score}",
    "#{test_results.size} examples, #{failed_results.size} failures",
    ""
  ] + example_messages).join("\n")
  text
end
perform_tests(endpoint) click to toggle source
# File lib/cm_quiz/review_quiz.rb, line 16
def perform_tests(endpoint)
  project_api = ProjectAPI.new(endpoint)
  tests = []
  tests << Review::LoginUser.new(project_api: project_api).perform
  tests << Review::SignUpUser.new(project_api: project_api).perform
  tests << Review::GetUserInfo.new(project_api: project_api).perform
  tests << Review::CreateIdea.new(project_api: project_api).perform
  tests << Review::GetIdeas.new(project_api: project_api).perform
  tests << Review::UpdateIdea.new(project_api: project_api).perform
  tests << Review::DeleteIdea.new(project_api: project_api).perform
  tests
end