From 66a2a70bbe2b9e5744b33253de5dbe56e5690ecd Mon Sep 17 00:00:00 2001 From: Jonathan Lamothe Date: Sat, 26 Oct 2019 02:05:55 -0400 Subject: [PATCH] implemented addGoalie --- src/Mtlstats/Actions.hs | 9 ++++++++- test/ActionsSpec.hs | 24 ++++++++++++++++++++++++ 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/src/Mtlstats/Actions.hs b/src/Mtlstats/Actions.hs index 4de1cd6..ea00bae 100644 --- a/src/Mtlstats/Actions.hs +++ b/src/Mtlstats/Actions.hs @@ -172,7 +172,14 @@ addPlayer s = fromMaybe s $ do -- | Adds the entered goalie to the roster addGoalie :: ProgState -> ProgState -addGoalie = undefined +addGoalie s = fromMaybe s $ do + let cgs = s^.progMode.createGoalieStateL + num <- cgs^.cgsNumber + let + name = cgs^.cgsName + goalie = newGoalie num name + Just $ s & database.dbGoalies + %~ (++[goalie]) -- | Resets the 'CreatePlayerState' value resetCreatePlayerState :: ProgState -> ProgState diff --git a/test/ActionsSpec.hs b/test/ActionsSpec.hs index 4b38d79..47226e3 100644 --- a/test/ActionsSpec.hs +++ b/test/ActionsSpec.hs @@ -58,6 +58,7 @@ spec = describe "Mtlstats.Actions" $ do createPlayerSpec createGoalieSpec addPlayerSpec + addGoalieSpec resetCreatePlayerStateSpec resetCreateGoalieStateSpec recordGoalAssistsSpec @@ -388,6 +389,29 @@ addPlayerSpec = describe "addPlayer" $ do s' = addPlayer $ s MainMenu in s'^.database.dbPlayers `shouldBe` [p1] +addGoalieSpec :: Spec +addGoalieSpec = describe "addGoalie" $ do + let + g1 = newGoalie 2 "Joe" + g2 = newGoalie 3 "Bob" + db = newDatabase + & dbGoalies .~ [g1] + s pm = newProgState + & database .~ db + & progMode .~ pm + + context "data available" $ + it "should create the goalie" $ let + s' = addGoalie $ s $ CreateGoalie $ newCreateGoalieState + & cgsNumber ?~ 3 + & cgsName .~ "Bob" + in s'^.database.dbGoalies `shouldBe` [g1, g2] + + context "data unavailable" $ + it "should not create the goalie" $ let + s' = addGoalie $ s MainMenu + in s'^.database.dbGoalies `shouldBe` [g1] + resetCreatePlayerStateSpec :: Spec resetCreatePlayerStateSpec = describe "resetCreatePlayerState" $ let cps = newCreatePlayerState