set rookie flag appropriately on goalie creation

This commit is contained in:
Jonathan Lamothe
2020-02-13 19:45:36 -05:00
parent 14386f9c7d
commit e51953650c
2 changed files with 33 additions and 20 deletions

View File

@@ -175,10 +175,12 @@ addPlayer s = fromMaybe s $ do
addGoalie :: ProgState -> ProgState addGoalie :: ProgState -> ProgState
addGoalie s = fromMaybe s $ do addGoalie s = fromMaybe s $ do
let cgs = s^.progMode.createGoalieStateL let cgs = s^.progMode.createGoalieStateL
num <- cgs^.cgsNumber num <- cgs^.cgsNumber
rFlag <- cgs^.cgsRookieFlag
let let
name = cgs^.cgsName name = cgs^.cgsName
goalie = newGoalie num name goalie = newGoalie num name
& gRookie .~ rFlag
Just $ s & database.dbGoalies Just $ s & database.dbGoalies
%~ (++[goalie]) %~ (++[goalie])

View File

@@ -347,27 +347,38 @@ addPlayerSpec = describe "addPlayer" $ mapM_
& cpsRookieFlag .~ rf & cpsRookieFlag .~ rf
addGoalieSpec :: Spec addGoalieSpec :: Spec
addGoalieSpec = describe "addGoalie" $ do addGoalieSpec = describe "addGoalie" $ mapM_
let (\(label, expectation, pm, goalies) -> context label $
g1 = newGoalie 2 "Joe" it expectation $ let
g2 = newGoalie 3 "Bob" ps = newProgState
db = newDatabase & progMode .~ pm
& dbGoalies .~ [g1] & database.dbGoalies .~ [joe]
s pm = newProgState ps' = addGoalie ps
& database .~ db in ps'^.database.dbGoalies `shouldBe` goalies)
& progMode .~ pm
context "data available" $ -- label, expectation, progMode, expected goalies
it "should create the goalie" $ let [ ( "wrong mode", failure, MainMenu, [joe] )
s' = addGoalie $ s $ CreateGoalie $ newCreateGoalieState , ( "no number", failure, noNum, [joe] )
& cgsNumber ?~ 3 , ( "no rookie flag", failure, noRookie, [joe] )
& cgsName .~ "Bob" , ( "rookie", success, mkRookie, [joe, rookie] )
in s'^.database.dbGoalies `shouldBe` [g1, g2] , ( "normal goalie", success, mkNormal, [joe, normal] )
]
context "data unavailable" $ where
it "should not create the goalie" $ let failure = "should not create the goalie"
s' = addGoalie $ s MainMenu success = "should create the goalie"
in s'^.database.dbGoalies `shouldBe` [g1] noNum = cgs Nothing (Just False)
noRookie = cgs (Just 3) Nothing
mkRookie = cgs (Just 3) (Just True)
mkNormal = cgs (Just 3) (Just False)
joe = newGoalie 2 "Joe"
rookie = bob True
normal = bob False
bob r = newGoalie 3 "Bob" & gRookie .~ r
cgs n rf = CreateGoalie $ newCreateGoalieState
& cgsNumber .~ n
& cgsName .~ "Bob"
& cgsRookieFlag .~ rf
resetCreatePlayerStateSpec :: Spec resetCreatePlayerStateSpec :: Spec
resetCreatePlayerStateSpec = describe "resetCreatePlayerState" $ let resetCreatePlayerStateSpec = describe "resetCreatePlayerState" $ let