@@ -21,23 +21,31 @@ import Test.QuickCheck
2121import Test.QuickCheck.Monadic
2222import Test.QuickCheck.Monadic qualified as QC
2323import Data.Reflection
24+ import Data.IORef
2425import qualified Record
26+ import Control.Monad.IO.Class
2527
2628propDL :: forall apps s . Reifies s (WebApiGlobalStateModel apps ) => Proxy s -> (forall a . WebApiSessions apps a -> IO a ) -> DL (ApiState s apps ) () -> Property
27- propDL _ webapiRunner d = forAllDL d (prop_api webapiRunner)
29+ propDL _ webapiRunner d = forAllDL d (prop_api undefined webapiRunner)
2830
29- prop_api :: forall apps s . Reifies s (WebApiGlobalStateModel apps ) => (forall a . WebApiSessions apps a -> IO a ) -> Actions (ApiState s apps ) -> Property
30- prop_api webapiRunner s =
31+ prop_api :: forall apps s . Reifies s (WebApiGlobalStateModel apps ) => IORef ( Maybe ( ApiState s apps )) -> (forall a . WebApiSessions apps a -> IO a ) -> Actions (ApiState s apps ) -> Property
32+ prop_api newStRef webapiRunner s =
3133 monadic (ioProperty . webapiRunner) $ do
3234 monitor $ counterexample " \n Execution\n "
33- _ <- runActions s
35+ (anonSt, env) <- runActions s
36+ let
37+ newApiState = resolveNamedEntities env $ underlyingState anonSt
38+ liftIO $ writeIORef newStRef (Just newApiState)
3439 QC. assert True
3540
3641runWebApiTest :: WebApiGlobalStateModel apps -> (forall (s :: Type ). Reifies s (WebApiGlobalStateModel apps ) => Proxy s -> r ) -> r
3742runWebApiTest gstate runner = reify gstate (\ ps -> runner ps)
3843
39- apiAction :: (Typeable a , Eq (Action s a ), Show (Action s a )) => Action s a -> DL s (Val a )
40- apiAction = fmap (Var id ) . action
44+ apiAction :: (Typeable a , Eq (Action (ApiState s apps ) a ), Show (Action (ApiState s apps ) a )) => ApiAction apps a -> DL (ApiState s apps ) (Val a )
45+ apiAction (ApiAction act) = getModelStateDL >>= (\ st -> fmap (Var id ) . action $ act st)
46+
47+ -- apiAction' :: (Typeable a, Eq (Action s a), Show (Action s a)) => Action s a -> DL s (Val a)
48+ -- apiAction' = fmap (Var id) . action
4149
4250apiForAllVar :: forall a s . Typeable a => DL s (Val a )
4351apiForAllVar = fmap (Var id ) forAllVar
0 commit comments