diff --git a/src/Mtlstats/Types.hs b/src/Mtlstats/Types.hs index 28b1ed6..9b90e19 100644 --- a/src/Mtlstats/Types.hs +++ b/src/Mtlstats/Types.hs @@ -47,6 +47,7 @@ module Mtlstats.Types ( -- ** ProgMode Lenses gameStateL, createPlayerStateL, + createGoalieStateL, -- ** GameState Lenses gameYear, gameMonth, @@ -524,6 +525,13 @@ createPlayerStateL = lens _ -> newCreatePlayerState) (\_ cps -> CreatePlayer cps) +createGoalieStateL :: Lens' ProgMode CreateGoalieState +createGoalieStateL = lens + (\case + CreateGoalie cgs -> cgs + _ -> newCreateGoalieState) + (\_ cgs -> CreateGoalie cgs) + -- | Constructor for a 'ProgState' newProgState :: ProgState newProgState = ProgState diff --git a/test/TypesSpec.hs b/test/TypesSpec.hs index f07069f..cbaf831 100644 --- a/test/TypesSpec.hs +++ b/test/TypesSpec.hs @@ -46,6 +46,7 @@ spec = describe "Mtlstats.Types" $ do databaseSpec gameStateLSpec createPlayerStateLSpec + createGoalieStateLSpec teamScoreSpec otherScoreSpec homeTeamSpec @@ -117,6 +118,26 @@ createPlayerStateLSpec = describe "createPlayerStateL" $ & cpsName .~ "Bob" & cpsPosition .~ "defense" +createGoalieStateLSpec :: Spec +createGoalieStateLSpec = describe "createGoalieStateL" $ + lensSpec createGoalieStateL + -- getters + [ ( "missing state", MainMenu, newCreateGoalieState ) + , ( "with state", CreateGoalie cgs1, cgs1 ) + ] + -- setters + [ ( "set state", MainMenu, cgs1 ) + , ( "change state", CreateGoalie cgs1, cgs2 ) + , ( "clear state", CreateGoalie cgs1, newCreateGoalieState ) + ] + where + cgs1 = newCreateGoalieState + & cgsNumber ?~ 1 + & cgsName .~ "Joe" + cgs2 = newCreateGoalieState + & cgsNumber ?~ 2 + & cgsName .~ "Bob" + teamScoreSpec :: Spec teamScoreSpec = describe "teamScore" $ do let