{-# language TemplateHaskell #-} module Fixtures ( store , CustomEvent(..) , noIOTest , ioTest , NestedStates , nestedString , nestedStates ) where import Eve.Testing import Eve.Internal.States import Eve.Internal.Listeners import Eve.Internal.Actions import Eve.Internal.AppState import Eve.Internal.Run import Control.Lens import Data.Default import Test.Hspec.Core.Spec (SpecM) import Test.Hspec data NestedStates = NestedStates { _nestedStates' :: States , _nestedString :: String } makeLenses ''NestedStates instance Default NestedStates where def = NestedStates mempty "default" instance HasStates NestedStates where states = nestedStates' instance HasEvents NestedStates nestedStates :: HasStates s => Lens' s NestedStates nestedStates = stateLens data Store = Store {_payload :: String } makeLenses ''Store store :: HasStates s => Lens' s String store = stateLens.payload instance Default Store where def = Store "default" data CustomEvent = CustomEvent ioTest :: App () -> SpecM m AppState ioTest = runIO . eve