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