module MpsCustomPrefixTest where import Init import PersistentTestModels specsWith :: MonadIO m => RunDb SqlBackend m -> Spec specsWith :: RunDb SqlBackend m -> Spec specsWith RunDb SqlBackend m runDb = String -> Spec -> Spec forall a. HasCallStack => String -> SpecWith a -> SpecWith a describe String "mpsCustomPrefix" (Spec -> Spec) -> Spec -> Spec forall a b. (a -> b) -> a -> b $ String -> IO () -> SpecWith (Arg (IO ())) forall a. (HasCallStack, Example a) => String -> a -> SpecWith (Arg a) it String "works" (IO () -> SpecWith (Arg (IO ()))) -> IO () -> SpecWith (Arg (IO ())) forall a b. (a -> b) -> a -> b $ RunDb SqlBackend m runDb RunDb SqlBackend m -> RunDb SqlBackend m forall a b. (a -> b) -> a -> b $ do [Filter CustomPrefix2] -> ReaderT SqlBackend m () forall backend (m :: * -> *) record. (PersistQueryWrite backend, MonadIO m, PersistRecordBackend record backend) => [Filter record] -> ReaderT backend m () deleteWhere ([] :: [Filter CustomPrefix2]) [Filter CustomPrefix1] -> ReaderT SqlBackend m () forall backend (m :: * -> *) record. (PersistQueryWrite backend, MonadIO m, PersistRecordBackend record backend) => [Filter record] -> ReaderT backend m () deleteWhere ([] :: [Filter CustomPrefix1]) Key CustomPrefix1 cp1a <- CustomPrefix1 -> ReaderT SqlBackend m (Key CustomPrefix1) forall backend record (m :: * -> *). (PersistStoreWrite backend, MonadIO m, PersistRecordBackend record backend) => record -> ReaderT backend m (Key record) insert (CustomPrefix1 -> ReaderT SqlBackend m (Key CustomPrefix1)) -> CustomPrefix1 -> ReaderT SqlBackend m (Key CustomPrefix1) forall a b. (a -> b) -> a -> b $ Int -> CustomPrefix1 forall backend. Int -> CustomPrefix1Generic backend CustomPrefix1 Int 1 Key CustomPrefix1 -> [Update CustomPrefix1] -> ReaderT SqlBackend m () forall backend record (m :: * -> *). (PersistStoreWrite backend, MonadIO m, PersistRecordBackend record backend) => Key record -> [Update record] -> ReaderT backend m () update Key CustomPrefix1 cp1a [EntityField CustomPrefix1 Int forall backend typ. (typ ~ Int) => EntityField (CustomPrefix1Generic backend) typ CP1CustomFieldName EntityField CustomPrefix1 Int -> Int -> Update CustomPrefix1 forall v typ. PersistField typ => EntityField v typ -> typ -> Update v =. Int 2] Key CustomPrefix1 cp1b <- CustomPrefix1 -> ReaderT SqlBackend m (Key CustomPrefix1) forall backend record (m :: * -> *). (PersistStoreWrite backend, MonadIO m, PersistRecordBackend record backend) => record -> ReaderT backend m (Key record) insert (CustomPrefix1 -> ReaderT SqlBackend m (Key CustomPrefix1)) -> CustomPrefix1 -> ReaderT SqlBackend m (Key CustomPrefix1) forall a b. (a -> b) -> a -> b $ Int -> CustomPrefix1 forall backend. Int -> CustomPrefix1Generic backend CustomPrefix1 Int 3 Key CustomPrefix2 cp2 <- CustomPrefix2 -> ReaderT SqlBackend m (Key CustomPrefix2) forall backend record (m :: * -> *). (PersistStoreWrite backend, MonadIO m, PersistRecordBackend record backend) => record -> ReaderT backend m (Key record) insert (CustomPrefix2 -> ReaderT SqlBackend m (Key CustomPrefix2)) -> CustomPrefix2 -> ReaderT SqlBackend m (Key CustomPrefix2) forall a b. (a -> b) -> a -> b $ Int -> Key CustomPrefix1 -> CustomPrefix2 forall backend. Int -> Key (CustomPrefix1Generic backend) -> CustomPrefix2Generic backend CustomPrefix2 Int 4 Key CustomPrefix1 cp1a Key CustomPrefix2 -> [Update CustomPrefix2] -> ReaderT SqlBackend m () forall backend record (m :: * -> *). (PersistStoreWrite backend, MonadIO m, PersistRecordBackend record backend) => Key record -> [Update record] -> ReaderT backend m () update Key CustomPrefix2 cp2 [EntityField CustomPrefix2 (Key CustomPrefix1) forall backend typ. (typ ~ Key (CustomPrefix1Generic backend)) => EntityField (CustomPrefix2Generic backend) typ CP2CustomPrefixedRef EntityField CustomPrefix2 (Key CustomPrefix1) -> Key CustomPrefix1 -> Update CustomPrefix2 forall v typ. PersistField typ => EntityField v typ -> typ -> Update v =. Key CustomPrefix1 cp1b, EntityField CustomPrefix2 Int forall backend typ. (typ ~ Int) => EntityField (CustomPrefix2Generic backend) typ CP2OtherCustomFieldName EntityField CustomPrefix2 Int -> Int -> Update CustomPrefix2 forall v typ. PersistField typ => EntityField v typ -> typ -> Update v =. Int 5] Maybe CustomPrefix1 mcp1a <- Key CustomPrefix1 -> ReaderT SqlBackend m (Maybe CustomPrefix1) forall backend record (m :: * -> *). (PersistStoreRead backend, MonadIO m, PersistRecordBackend record backend) => Key record -> ReaderT backend m (Maybe record) get Key CustomPrefix1 cp1a IO () -> ReaderT SqlBackend m () forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO () -> ReaderT SqlBackend m ()) -> IO () -> ReaderT SqlBackend m () forall a b. (a -> b) -> a -> b $ Maybe CustomPrefix1 mcp1a Maybe CustomPrefix1 -> Maybe CustomPrefix1 -> IO () forall a. (HasCallStack, Eq a, Show a) => a -> a -> IO () @?= CustomPrefix1 -> Maybe CustomPrefix1 forall a. a -> Maybe a Just (Int -> CustomPrefix1 forall backend. Int -> CustomPrefix1Generic backend CustomPrefix1 Int 2) IO () -> ReaderT SqlBackend m () forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO () -> ReaderT SqlBackend m ()) -> IO () -> ReaderT SqlBackend m () forall a b. (a -> b) -> a -> b $ (CustomPrefix1 -> Int) -> Maybe CustomPrefix1 -> Maybe Int forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b fmap CustomPrefix1 -> Int forall backend. CustomPrefix1Generic backend -> Int _cp1CustomFieldName Maybe CustomPrefix1 mcp1a Maybe Int -> Maybe Int -> IO () forall a. (HasCallStack, Eq a, Show a) => a -> a -> IO () @?= Int -> Maybe Int forall a. a -> Maybe a Just Int 2 Maybe CustomPrefix2 mcp2 <- Key CustomPrefix2 -> ReaderT SqlBackend m (Maybe CustomPrefix2) forall backend record (m :: * -> *). (PersistStoreRead backend, MonadIO m, PersistRecordBackend record backend) => Key record -> ReaderT backend m (Maybe record) get Key CustomPrefix2 cp2 IO () -> ReaderT SqlBackend m () forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO () -> ReaderT SqlBackend m ()) -> IO () -> ReaderT SqlBackend m () forall a b. (a -> b) -> a -> b $ (CustomPrefix2 -> Key CustomPrefix1) -> Maybe CustomPrefix2 -> Maybe (Key CustomPrefix1) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b fmap CustomPrefix2 -> Key CustomPrefix1 forall backend. CustomPrefix2Generic backend -> Key (CustomPrefix1Generic backend) _cp2CustomPrefixedRef Maybe CustomPrefix2 mcp2 Maybe (Key CustomPrefix1) -> Maybe (Key CustomPrefix1) -> IO () forall a. (HasCallStack, Eq a, Show a) => a -> a -> IO () @?= Key CustomPrefix1 -> Maybe (Key CustomPrefix1) forall a. a -> Maybe a Just Key CustomPrefix1 cp1b IO () -> ReaderT SqlBackend m () forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO () -> ReaderT SqlBackend m ()) -> IO () -> ReaderT SqlBackend m () forall a b. (a -> b) -> a -> b $ (CustomPrefix2 -> Int) -> Maybe CustomPrefix2 -> Maybe Int forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b fmap CustomPrefix2 -> Int forall backend. CustomPrefix2Generic backend -> Int _cp2OtherCustomFieldName Maybe CustomPrefix2 mcp2 Maybe Int -> Maybe Int -> IO () forall a. (HasCallStack, Eq a, Show a) => a -> a -> IO () @?= Int -> Maybe Int forall a. a -> Maybe a Just Int 5 Key (CustomPrefixSumGeneric SqlBackend) cpls <- CustomPrefixSumGeneric SqlBackend -> ReaderT SqlBackend m (Key (CustomPrefixSumGeneric SqlBackend)) forall backend record (m :: * -> *). (PersistStoreWrite backend, MonadIO m, PersistRecordBackend record backend) => record -> ReaderT backend m (Key record) insert (CustomPrefixSumGeneric SqlBackend -> ReaderT SqlBackend m (Key (CustomPrefixSumGeneric SqlBackend))) -> CustomPrefixSumGeneric SqlBackend -> ReaderT SqlBackend m (Key (CustomPrefixSumGeneric SqlBackend)) forall a b. (a -> b) -> a -> b $ Int -> CustomPrefixSumGeneric SqlBackend forall backend. Int -> CustomPrefixSumGeneric backend CPCustomPrefixedLeftSum Int 5 Key (CustomPrefixSumGeneric SqlBackend) cprs <- CustomPrefixSumGeneric SqlBackend -> ReaderT SqlBackend m (Key (CustomPrefixSumGeneric SqlBackend)) forall backend record (m :: * -> *). (PersistStoreWrite backend, MonadIO m, PersistRecordBackend record backend) => record -> ReaderT backend m (Key record) insert (CustomPrefixSumGeneric SqlBackend -> ReaderT SqlBackend m (Key (CustomPrefixSumGeneric SqlBackend))) -> CustomPrefixSumGeneric SqlBackend -> ReaderT SqlBackend m (Key (CustomPrefixSumGeneric SqlBackend)) forall a b. (a -> b) -> a -> b $ String -> CustomPrefixSumGeneric SqlBackend forall backend. String -> CustomPrefixSumGeneric backend CPCustomPrefixedRightSum String "Hello" Key (CustomPrefixSumGeneric SqlBackend) -> [Update (CustomPrefixSumGeneric SqlBackend)] -> ReaderT SqlBackend m () forall backend record (m :: * -> *). (PersistStoreWrite backend, MonadIO m, PersistRecordBackend record backend) => Key record -> [Update record] -> ReaderT backend m () update Key (CustomPrefixSumGeneric SqlBackend) cpls [EntityField (CustomPrefixSumGeneric SqlBackend) Int forall backend typ. (typ ~ Int) => EntityField (CustomPrefixSumGeneric backend) typ CPCustomPrefixedLeft EntityField (CustomPrefixSumGeneric SqlBackend) Int -> Int -> Update (CustomPrefixSumGeneric SqlBackend) forall v typ. PersistField typ => EntityField v typ -> typ -> Update v =. Int 6] Key (CustomPrefixSumGeneric SqlBackend) -> [Update (CustomPrefixSumGeneric SqlBackend)] -> ReaderT SqlBackend m () forall backend record (m :: * -> *). (PersistStoreWrite backend, MonadIO m, PersistRecordBackend record backend) => Key record -> [Update record] -> ReaderT backend m () update Key (CustomPrefixSumGeneric SqlBackend) cprs [EntityField (CustomPrefixSumGeneric SqlBackend) String forall backend typ. (typ ~ String) => EntityField (CustomPrefixSumGeneric backend) typ CPCustomPrefixedRight EntityField (CustomPrefixSumGeneric SqlBackend) String -> String -> Update (CustomPrefixSumGeneric SqlBackend) forall v typ. PersistField typ => EntityField v typ -> typ -> Update v =. String "World"] Maybe (CustomPrefixSumGeneric SqlBackend) mcpls <- Key (CustomPrefixSumGeneric SqlBackend) -> ReaderT SqlBackend m (Maybe (CustomPrefixSumGeneric SqlBackend)) forall backend record (m :: * -> *). (PersistStoreRead backend, MonadIO m, PersistRecordBackend record backend) => Key record -> ReaderT backend m (Maybe record) get Key (CustomPrefixSumGeneric SqlBackend) cpls Maybe (CustomPrefixSumGeneric SqlBackend) mcprs <- Key (CustomPrefixSumGeneric SqlBackend) -> ReaderT SqlBackend m (Maybe (CustomPrefixSumGeneric SqlBackend)) forall backend record (m :: * -> *). (PersistStoreRead backend, MonadIO m, PersistRecordBackend record backend) => Key record -> ReaderT backend m (Maybe record) get Key (CustomPrefixSumGeneric SqlBackend) cprs IO () -> ReaderT SqlBackend m () forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO () -> ReaderT SqlBackend m ()) -> IO () -> ReaderT SqlBackend m () forall a b. (a -> b) -> a -> b $ Maybe (CustomPrefixSumGeneric SqlBackend) mcpls Maybe (CustomPrefixSumGeneric SqlBackend) -> Maybe (CustomPrefixSumGeneric SqlBackend) -> IO () forall a. (HasCallStack, Eq a, Show a) => a -> a -> IO () @?= CustomPrefixSumGeneric SqlBackend -> Maybe (CustomPrefixSumGeneric SqlBackend) forall a. a -> Maybe a Just (Int -> CustomPrefixSumGeneric SqlBackend forall backend. Int -> CustomPrefixSumGeneric backend CPCustomPrefixedLeftSum Int 6) IO () -> ReaderT SqlBackend m () forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO () -> ReaderT SqlBackend m ()) -> IO () -> ReaderT SqlBackend m () forall a b. (a -> b) -> a -> b $ Maybe (CustomPrefixSumGeneric SqlBackend) mcprs Maybe (CustomPrefixSumGeneric SqlBackend) -> Maybe (CustomPrefixSumGeneric SqlBackend) -> IO () forall a. (HasCallStack, Eq a, Show a) => a -> a -> IO () @?= CustomPrefixSumGeneric SqlBackend -> Maybe (CustomPrefixSumGeneric SqlBackend) forall a. a -> Maybe a Just (String -> CustomPrefixSumGeneric SqlBackend forall backend. String -> CustomPrefixSumGeneric backend CPCustomPrefixedRightSum String "World")