eve-0.1.6: test/Eve/Internal/StatesSpec.hs
{-# language TemplateHaskell #-}
module Eve.Internal.StatesSpec where
import Test.Hspec
import Fixtures
import Eve
import Control.Lens
import Data.Default
data SimpleState = SimpleState
{ _myString :: String
}
makeLenses ''SimpleState
instance Default SimpleState where
def = SimpleState "default"
myStringStateLens :: HasStates s => Lens' s String
myStringStateLens = makeStateLens myString
makeStateLensTest :: AppT AppState Identity String
makeStateLensTest = do
myStringStateLens .= "new"
use (stateLens.myString)
spec :: Spec
spec = do
describe "makeStateLens" $ do
it "creates a lens which accesses state from States" $
let (makeStateLensResult, _) = noIOTest makeStateLensTest
in makeStateLensResult `shouldBe` "new"