@@ -6,6 +6,41 @@ defmodule Codebattle.Tournament.Ranking.ByUserTest do
66 alias Codebattle.Tournament.Ranking
77 alias Codebattle.Tournament.Ranking.ByUser
88
9+ test "add_new_player keeps top200 initial ranking ordered by player id" do
10+ tournament_id = System . unique_integer ( [ :positive ] )
11+
12+ tournament =
13+ :tournament
14+ |> insert (
15+ id: tournament_id ,
16+ type: "top200" ,
17+ ranking_type: "by_user" ,
18+ state: "active" ,
19+ current_round_position: 0
20+ )
21+ |> Map . merge ( % {
22+ players_table: Players . create_table ( tournament_id ) ,
23+ ranking_table: Ranking . create_table ( tournament_id )
24+ } )
25+
26+ Enum . each ( [ 3 , 1 , 2 ] , fn id ->
27+ player = Player . new! ( % { id: id , name: "player-#{ id } " , lang: "js" , state: "active" } )
28+
29+ Players . put_player ( tournament , player )
30+ ByUser . add_new_player ( tournament , player )
31+ end )
32+
33+ assert Enum . map ( ByUser . get_page ( tournament , 1 , 10 ) . entries , & { & 1 . id , & 1 . place } ) == [
34+ { 1 , 1 } ,
35+ { 2 , 2 } ,
36+ { 3 , 3 }
37+ ]
38+
39+ assert % { place: 1 } = Players . get_player ( tournament , 1 )
40+ assert % { place: 2 } = Players . get_player ( tournament , 2 )
41+ assert % { place: 3 } = Players . get_player ( tournament , 3 )
42+ end
43+
944 test "set_places_with_score_to_players updates place and score without overwriting lang" do
1045 tournament_id = System . unique_integer ( [ :positive ] )
1146
0 commit comments