Class: JSONAPI::Grader::SerializationGrader

Inherits:
Object
  • Object
show all
Defined in:
lib/jsonapi/grader/serialization_grader.rb

Instance Method Summary collapse

Constructor Details

#initialize(scenarii_file = 'scenarii_serialization.json', options = {}) ⇒ SerializationGrader

Returns a new instance of SerializationGrader.



6
7
8
9
10
# File 'lib/jsonapi/grader/serialization_grader.rb', line 6

def initialize(scenarii_file = 'scenarii_serialization.json', options = {})
  scenarii_file = File.expand_path("../../../#{scenarii_file}", __dir__)
  @scenarii = JSON.parse(File.read(scenarii_file))
  @implementation_dir = options[:implementation_dir]
end

Instance Method Details

#gradeObject



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/jsonapi/grader/serialization_grader.rb', line 12

def grade
  compliance = true
  score = 0
  max_score = 0
  @scenarii.each do |scenario|
    current_score = score_scenario(scenario)
    compliance = false if scenario['required'] && current_score == 0
    max_score += scenario['score']
    score += current_score
  end

  STDERR.puts "Compliance: #{compliance}"
  score_percent = (100.0 * score / max_score).round(2)
  STDERR.puts "Score: #{score} / #{max_score} (#{score_percent}%)"

  score
end