[Rails] Site internet de la World Tartiflette Tour.
Updated more tests.
test/models/score_test.rb
@@ -11,31 +11,39 @@
11
11
12
12
test "should have associated tartiflette" do
13
13
@score.tartiflette = nil
14
Removed:
assert_not @score.valid?, "Score has no associated tartiflette."
14
Added:
assert_not @score.valid?, "Score should not be valid without an associated tartiflette."
15
15
end
16
16
17
17
test "should have associated scoring_criterium" do
18
18
@score.scoring_criterium = nil
19
Removed:
assert_not @score.valid?, "Score has no associated scoring_criterium."
19
Added:
assert_not @score.valid?, "Score should not be valid without an associated scoring criterium."
20
20
end
21
21
22
22
test "should have value" do
23
23
@score.value = nil
24
Removed:
assert_not @score.valid?, "Score has no value."
24
Added:
assert_not @score.valid?, "Score should not be valid without a value."
25
25
end
26
26
27
27
test "value should be between 1 and 5" do
28
28
@score.value = 3
29
Removed:
assert @score.valid?, "Score value is invalid."
29
Added:
assert @score.valid?, "Score with a value of 3 should be valid."
30
30
end
31
31
32
32
test "value should be greater than or equal to 1" do
33
33
@score.value = 0
34
Removed:
assert_not @score.valid?, "Score is less than 1."
34
Added:
assert_not @score.valid?, "Score should not be valid with a value less than 1."
35
35
end
36
36
37
37
test "value should be less than or equal to 5" do
38
38
@score.value = 6
39
Removed:
assert_not @score.valid?, "Score is greater than 5."
39
Added:
assert_not @score.valid?, "Score should not be valid with a value greater than 5."
40
40
end
41
Added:
42
Added:
test "should have a session_id" do
43
Added:
@score.session_id = nil
44
Added:
assert_not @score.valid?, "Score should not be valid without a session_id."
45
Added:
assert_includes @score.errors[:session_id], "can't be blank"
46
Added:
end
47
Added:
48
Added:
41
49
end
test/services/tartiflette_scoring_service.rb
@@ -2,8 +2,9 @@
2
2
3
3
class TartifletteScoringServiceTest < ActiveSupport::TestCase
4
4
setup do
5
Removed:
@tartiflette = Tartiflette.new(scoring_id: 1)
6
Removed:
@session = {}
5
Added:
@tartiflette = tartiflettes(:one)
6
Added:
@existing_score = scores(:one)
7
Added:
@session = { id: @existing_score.session_id }
7
8
end
8
9
9
10
test "should check if tartiflette is already scored" do
@@ -14,6 +15,43 @@
14
15
test "should mark tartiflette as scored" do
15
16
TartifletteScoringService.mark_as_scored(@tartiflette, @session)
16
17
assert_includes @session[:scored_tartiflettes], @tartiflette.id
18
Added:
end
19
Added:
20
Added:
test "should process scores for tartiflette" do
21
Added:
scores = {
22
Added:
"1" => { value: 4, id: nil }, # New score for criterium_id 1
23
Added:
"2" => { value: 5, id: @existing_score.id } # Update existing score
24
Added:
}
25
Added:
26
Added:
assert_nothing_raised do
27
Added:
TartifletteScoringService.process_scores(@tartiflette, scores, @session)
28
Added:
end
29
Added:
30
Added:
# Assertions for new score
31
Added:
new_score = Score.find_by(scoring_criterium_id: 1, tartiflette: @tartiflette)
32
Added:
assert_equal 4, new_score.value
33
Added:
assert_equal @session[:id], new_score.session_id
34
Added:
35
Added:
# Assertions for updated score
36
Added:
@existing_score.reload
37
Added:
assert_equal 5, @existing_score.value
38
Added:
end
39
Added:
40
Added:
test "should raise error for invalid data" do
41
Added:
scores = {
42
Added:
"1" => { value: nil, id: nil }, # Missing value
43
Added:
"2" => { value: 5, id: nil } # Valid score
44
Added:
}
45
Added:
46
Added:
assert_raises(StandardError, /Failed to process scores/) do
47
Added:
TartifletteScoringService.process_scores(@tartiflette, scores, @session)
48
Added:
end
49
Added:
end
50
Added:
51
Added:
test "should mark tartiflette as scored in session" do
52
Added:
session = { scored_tartiflettes: [] }
53
Added:
TartifletteScoringService.mark_as_scored(@tartiflette, session)
54
Added:
assert_includes session[:scored_tartiflettes], @tartiflette.id
17
55
end
18
56
19
57
test "should calculate average of all scores for a tartiflette" do