implemented edit functions in Mtlstats.Actions.EditState module
This commit is contained in:
@@ -23,29 +23,61 @@ along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
module Actions.EditStandingsSpec (spec) where
|
||||
|
||||
import Lens.Micro ((^.))
|
||||
import Test.Hspec (Spec, describe, it, shouldBe, shouldSatisfy)
|
||||
import Lens.Micro ((^.), (&), (.~))
|
||||
import Test.Hspec
|
||||
( Spec
|
||||
, context
|
||||
, describe
|
||||
, it
|
||||
, shouldBe
|
||||
, shouldSatisfy
|
||||
)
|
||||
|
||||
import Mtlstats.Actions.EditStandings
|
||||
import Mtlstats.Types
|
||||
|
||||
spec :: Spec
|
||||
spec = describe "EditStandings" $ mapM_
|
||||
(\(label, f, expected) -> describe label $ do
|
||||
let
|
||||
ps = newProgState
|
||||
ps' = f ps
|
||||
spec = describe "EditStandings" $ do
|
||||
mapM_
|
||||
(\(label, f, expected) -> describe label $ do
|
||||
let
|
||||
ps = newProgState
|
||||
ps' = f ps
|
||||
|
||||
it "should set progMode to EditStandings" $
|
||||
ps'^.progMode `shouldSatisfy` \case
|
||||
(EditStandings _) -> True
|
||||
_ -> False
|
||||
it "should set progMode to EditStandings" $
|
||||
ps'^.progMode `shouldSatisfy` \case
|
||||
(EditStandings _) -> True
|
||||
_ -> False
|
||||
|
||||
it ("should set editStandingsMode to " ++ show expected) $
|
||||
ps'^.progMode.editStandingsModeL `shouldBe` expected)
|
||||
it ("should set editStandingsMode to " ++ show expected) $
|
||||
ps'^.progMode.editStandingsModeL `shouldBe` expected)
|
||||
|
||||
-- label, function, expected mode
|
||||
[ ( "editStandings", editStandings, ESMMenu )
|
||||
, ( "editHomeStandings", editHomeStandings, ESMHome )
|
||||
, ( "editAwayStandings", editAwayStandings, ESMAway )
|
||||
]
|
||||
-- label, function, expected mode
|
||||
[ ( "editStandings", editStandings, ESMMenu )
|
||||
, ( "editHomeStandings", editHomeStandings, ESMHome ESMSubMenu )
|
||||
, ( "editAwayStandings", editAwayStandings, ESMAway ESMSubMenu )
|
||||
]
|
||||
|
||||
mapM_
|
||||
(\(label, f, expected) -> describe label $ do
|
||||
mapM_
|
||||
(\prefix -> context ("mode: " ++ show (prefix ESMSubMenu)) $ let
|
||||
ps = newProgState & progMode.editStandingsModeL .~ prefix ESMSubMenu
|
||||
ps' = f ps
|
||||
in it ("should set the mode to " ++ show expected) $
|
||||
ps'^.progMode.editStandingsModeL `shouldBe` prefix expected)
|
||||
[ESMHome, ESMAway]
|
||||
|
||||
context "mode: ESMMenu" $ let
|
||||
ps = newProgState & progMode.editStandingsModeL .~ ESMMenu
|
||||
ps' = f ps
|
||||
in it "should not change the mode" $
|
||||
ps'^.progMode.editStandingsModeL `shouldBe` ESMMenu)
|
||||
|
||||
-- label, function, expected
|
||||
[ ( "editWins", editWins, ESMEditWins )
|
||||
, ( "editLosses", editLosses, ESMEditLosses )
|
||||
, ( "editOvertime", editOvertime, ESMEditOvertime )
|
||||
, ( "editGoalsFor", editGoalsFor, ESMEditGoalsFor )
|
||||
, ( "editGoalsAgainst", editGoalsAgainst, ESMEditGoalsAgainst )
|
||||
]
|
||||
|
||||
@@ -59,6 +59,7 @@ spec = describe "Mtlstats.Types" $ do
|
||||
editPlayerStateLSpec
|
||||
editGoalieStateLSpec
|
||||
editStandingsModeLSpec
|
||||
esmSubModeLSpec
|
||||
teamScoreSpec
|
||||
otherScoreSpec
|
||||
homeTeamSpec
|
||||
@@ -196,13 +197,42 @@ editStandingsModeLSpec :: Spec
|
||||
editStandingsModeLSpec = describe "editStandingsModeL" $
|
||||
lensSpec editStandingsModeL
|
||||
-- getters
|
||||
[ ( "missing mode", MainMenu, ESMMenu )
|
||||
, ( "with mode", EditStandings ESMHome, ESMHome )
|
||||
[ ( "missing mode", MainMenu, menu )
|
||||
, ( "with mode", EditStandings home, home )
|
||||
]
|
||||
-- setters
|
||||
[ ( "set mode", MainMenu, ESMHome )
|
||||
, ( "change mode", EditStandings ESMMenu, ESMHome )
|
||||
[ ( "set mode", MainMenu, home )
|
||||
, ( "change mode", EditStandings home, away )
|
||||
]
|
||||
where
|
||||
menu = ESMMenu
|
||||
home = ESMHome ESMSubMenu
|
||||
away = ESMAway ESMSubMenu
|
||||
|
||||
esmSubModeLSpec :: Spec
|
||||
esmSubModeLSpec = describe "esmSubModeL" $ do
|
||||
|
||||
context "getters" $ mapM_
|
||||
(\(label, mode, expected) -> context label $
|
||||
it ("should be " ++ show expected) $
|
||||
mode^.esmSubModeL `shouldBe` expected)
|
||||
|
||||
-- label, mode, expected
|
||||
[ ( "no state", ESMMenu, ESMSubMenu )
|
||||
, ( "with state", ESMHome ESMEditWins, ESMEditWins )
|
||||
]
|
||||
|
||||
context "setters" $ mapM_
|
||||
(\(label, mode, expected) -> context label $
|
||||
it ("should be " ++ show expected) $ let
|
||||
mode' = mode & esmSubModeL .~ ESMEditWins
|
||||
in mode' `shouldBe` expected)
|
||||
|
||||
-- label, mode, expected
|
||||
[ ( "no state", ESMMenu, ESMMenu )
|
||||
, ( "home mode", ESMHome ESMSubMenu, ESMHome ESMEditWins )
|
||||
, ( "away mode", ESMAway ESMSubMenu, ESMAway ESMEditWins )
|
||||
]
|
||||
|
||||
teamScoreSpec :: Spec
|
||||
teamScoreSpec = describe "teamScore" $ do
|
||||
|
||||
Reference in New Issue
Block a user