set rookie flag appropriately on goalie creation
This commit is contained in:
@@ -176,9 +176,11 @@ 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])
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
|
||||||
& dbGoalies .~ [g1]
|
|
||||||
s pm = newProgState
|
|
||||||
& database .~ db
|
|
||||||
& progMode .~ pm
|
& progMode .~ pm
|
||||||
|
& database.dbGoalies .~ [joe]
|
||||||
|
ps' = addGoalie ps
|
||||||
|
in ps'^.database.dbGoalies `shouldBe` goalies)
|
||||||
|
|
||||||
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] )
|
||||||
|
, ( "rookie", success, mkRookie, [joe, rookie] )
|
||||||
|
, ( "normal goalie", success, mkNormal, [joe, normal] )
|
||||||
|
]
|
||||||
|
|
||||||
|
where
|
||||||
|
failure = "should not create the goalie"
|
||||||
|
success = "should create the goalie"
|
||||||
|
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"
|
& cgsName .~ "Bob"
|
||||||
in s'^.database.dbGoalies `shouldBe` [g1, g2]
|
& cgsRookieFlag .~ rf
|
||||||
|
|
||||||
context "data unavailable" $
|
|
||||||
it "should not create the goalie" $ let
|
|
||||||
s' = addGoalie $ s MainMenu
|
|
||||||
in s'^.database.dbGoalies `shouldBe` [g1]
|
|
||||||
|
|
||||||
resetCreatePlayerStateSpec :: Spec
|
resetCreatePlayerStateSpec :: Spec
|
||||||
resetCreatePlayerStateSpec = describe "resetCreatePlayerState" $ let
|
resetCreatePlayerStateSpec = describe "resetCreatePlayerState" $ let
|
||||||
|
|||||||
Reference in New Issue
Block a user