diff --git a/src/League.elm b/src/League.elm index 1a9acd4..56ca795 100644 --- a/src/League.elm +++ b/src/League.elm @@ -92,13 +92,25 @@ getPlayer name (League league) = addPlayer : Player -> League -> League addPlayer player (League league) = - League { league | players = Dict.insert player.name player league.players } + let + ratings = + Dict.values league.players + |> List.map .rating + |> List.sort + + medianishRating = + ratings + |> List.drop (List.length ratings // 2) + |> List.head + |> Maybe.withDefault Elo.initialRating + in + League { league | players = Dict.insert player.name (Player.setRating medianishRating player) league.players } {-| -} updatePlayer : Player -> League -> League -updatePlayer = - addPlayer +updatePlayer player (League league) = + League { league | players = Dict.insert player.name player league.players } retirePlayer : Player -> League -> League diff --git a/tests/LeagueTest.elm b/tests/LeagueTest.elm index 988ecd7..c965fb4 100644 --- a/tests/LeagueTest.elm +++ b/tests/LeagueTest.elm @@ -60,7 +60,8 @@ playersTests = League.init |> League.addPlayer player |> League.players - |> Expect.equal [ player ] + |> List.map .name + |> Expect.equal [ player.name ] , fuzz playerFuzzer "retiring a player removes them from the players list" <| \player -> League.init @@ -109,7 +110,8 @@ startMatchTests = |> League.addPlayer playerB |> League.startMatch (Match playerA playerB) |> League.currentMatch - |> Expect.equal (Just (Match playerA playerB)) + |> Maybe.map (\(Match a b) -> ( a.name, b.name )) + |> Expect.equal (Just ( playerA.name, playerB.name )) , fuzz playerFuzzer "you can't start a match with one player against themselves" <| \player -> League.init