Skip to content

Commit 7e305fa

Browse files
committed
Init NamedEntity and state mgmt apis
1 parent 20deaf2 commit 7e305fa

3 files changed

Lines changed: 311 additions & 63 deletions

File tree

webapi-test/quickcheck-dynamic/Test/WebApi/DynamicLogic.hs

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,23 +21,31 @@ import Test.QuickCheck
2121
import Test.QuickCheck.Monadic
2222
import Test.QuickCheck.Monadic qualified as QC
2323
import Data.Reflection
24+
import Data.IORef
2425
import qualified Record
26+
import Control.Monad.IO.Class
2527

2628
propDL :: 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 "\nExecution\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

3641
runWebApiTest :: WebApiGlobalStateModel apps -> (forall (s :: Type). Reifies s (WebApiGlobalStateModel apps) => Proxy s -> r) -> r
3742
runWebApiTest 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

4250
apiForAllVar :: forall a s. Typeable a => DL s (Val a)
4351
apiForAllVar = fmap (Var id) forAllVar

0 commit comments

Comments
 (0)