summaryrefslogtreecommitdiff
path: root/test/services/tartiflette_scoring_service.rb
blob: 6796342a97c36e2af9c0f1654c79d347571f7b53 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
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
Copyright 2019--2025 Marius PETER