require "test_helper" class TartifletteScoringServiceTest < ActiveSupport::TestCase setup do @tartiflette = Tartiflette.new(scoring_id: 1) @session = {} end test "should check if tartiflette is already scored" do @session[:scored_tartiflettes] = [ @tartiflette.id ] assert TartifletteScoringService.scored?(@tartiflette, @session) end test "should mark tartiflette as scored" do TartifletteScoringService.mark_as_scored(@tartiflette, @session) assert_includes @session[:scored_tartiflettes], @tartiflette.id end test "should calculate average of all scores for a tartiflette" do Score.create!(tartiflette: @tartiflette, scoring_criterium: scoring_criteria(:one), value: 4) Score.create!(tartiflette: @tartiflette, scoring_criterium: scoring_criteria(:two), value: 5) assert_equal 4.5, TartifletteScoringService.average_score(@tartiflette) end test "should calculate average score by category for a tartiflette" do Score.create!(tartiflette: @tartiflette, scoring_criterium: scoring_criteria(:one), value: 1) Score.create!(tartiflette: @tartiflette, scoring_criterium: scoring_criteria(:one), value: 2) Score.create!(tartiflette: @tartiflette, scoring_criterium: scoring_criteria(:four), value: 4) Score.create!(tartiflette: @tartiflette, scoring_criterium: scoring_criteria(:four), value: 5) average_score_by_category = { scoring_criteria(:one)[:category] => 1.5, scoring_criteria(:four)[:category] => 4.5 } assert_equal average_score_by_category, TartifletteScoringService.average_score_by_category(@tartiflette) end end