{-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE UndecidableInstances #-} {-# OPTIONS_GHC -Wno-unused-top-binds #-} module MaybeFieldDefsTest (specsWith, maybeFieldDefMigrate) where import Data.String (IsString) import Init share [mkPersist sqlSettings { mpsGeneric = True }, mkMigrate "maybeFieldDefMigrate"] [persistLowerCase| MaybeFieldDefEntity optionalString (Maybe String) optionalInt (Maybe Int) deriving Eq Show |] specsWith :: (Runner backend m) => RunDb backend m -> Spec specsWith :: RunDb backend m -> Spec specsWith RunDb backend m runDb = String -> Spec -> Spec forall a. HasCallStack => String -> SpecWith a -> SpecWith a describe String "Maybe Field Definitions" (Spec -> Spec) -> Spec -> Spec forall a b. (a -> b) -> a -> b $ do String -> IO () -> SpecWith (Arg (IO ())) forall a. (HasCallStack, Example a) => String -> a -> SpecWith (Arg a) it String "runs appropriate migrations" (IO () -> SpecWith (Arg (IO ()))) -> IO () -> SpecWith (Arg (IO ())) forall a b. (a -> b) -> a -> b $ RunDb backend m runDb RunDb backend m -> RunDb backend m forall a b. (a -> b) -> a -> b $ do Key (MaybeFieldDefEntityGeneric backend) emptyEntity <- MaybeFieldDefEntityGeneric backend -> ReaderT backend m (Key (MaybeFieldDefEntityGeneric backend)) forall backend record (m :: * -> *). (PersistStoreWrite backend, MonadIO m, PersistRecordBackend record backend, SafeToInsert record) => record -> ReaderT backend m (Key record) insert (MaybeFieldDefEntityGeneric backend -> ReaderT backend m (Key (MaybeFieldDefEntityGeneric backend))) -> MaybeFieldDefEntityGeneric backend -> ReaderT backend m (Key (MaybeFieldDefEntityGeneric backend)) forall a b. (a -> b) -> a -> b $ Maybe String -> Maybe Int -> MaybeFieldDefEntityGeneric backend forall backend. Maybe String -> Maybe Int -> MaybeFieldDefEntityGeneric backend MaybeFieldDefEntity Maybe String forall a. Maybe a Nothing Maybe Int forall a. Maybe a Nothing Maybe (MaybeFieldDefEntityGeneric backend) emptyResult <- Key (MaybeFieldDefEntityGeneric backend) -> ReaderT backend m (Maybe (MaybeFieldDefEntityGeneric backend)) forall backend record (m :: * -> *). (PersistStoreRead backend, MonadIO m, PersistRecordBackend record backend) => Key record -> ReaderT backend m (Maybe record) get Key (MaybeFieldDefEntityGeneric backend) emptyEntity IO () -> ReaderT backend m () forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO () -> ReaderT backend m ()) -> IO () -> ReaderT backend m () forall a b. (a -> b) -> a -> b $ Maybe (MaybeFieldDefEntityGeneric backend) emptyResult Maybe (MaybeFieldDefEntityGeneric backend) -> Maybe (MaybeFieldDefEntityGeneric backend) -> IO () forall a. (HasCallStack, Eq a, Show a) => a -> a -> IO () @?= MaybeFieldDefEntityGeneric backend -> Maybe (MaybeFieldDefEntityGeneric backend) forall a. a -> Maybe a Just (Maybe String -> Maybe Int -> MaybeFieldDefEntityGeneric backend forall backend. Maybe String -> Maybe Int -> MaybeFieldDefEntityGeneric backend MaybeFieldDefEntity Maybe String forall a. Maybe a Nothing Maybe Int forall a. Maybe a Nothing) Key (MaybeFieldDefEntityGeneric backend) populatedEntity <- MaybeFieldDefEntityGeneric backend -> ReaderT backend m (Key (MaybeFieldDefEntityGeneric backend)) forall backend record (m :: * -> *). (PersistStoreWrite backend, MonadIO m, PersistRecordBackend record backend, SafeToInsert record) => record -> ReaderT backend m (Key record) insert (MaybeFieldDefEntityGeneric backend -> ReaderT backend m (Key (MaybeFieldDefEntityGeneric backend))) -> MaybeFieldDefEntityGeneric backend -> ReaderT backend m (Key (MaybeFieldDefEntityGeneric backend)) forall a b. (a -> b) -> a -> b $ Maybe String -> Maybe Int -> MaybeFieldDefEntityGeneric backend forall backend. Maybe String -> Maybe Int -> MaybeFieldDefEntityGeneric backend MaybeFieldDefEntity (String -> Maybe String forall a. a -> Maybe a Just String "text") (Int -> Maybe Int forall a. a -> Maybe a Just Int 8) Maybe (MaybeFieldDefEntityGeneric backend) populatedResult <- Key (MaybeFieldDefEntityGeneric backend) -> ReaderT backend m (Maybe (MaybeFieldDefEntityGeneric backend)) forall backend record (m :: * -> *). (PersistStoreRead backend, MonadIO m, PersistRecordBackend record backend) => Key record -> ReaderT backend m (Maybe record) get Key (MaybeFieldDefEntityGeneric backend) populatedEntity IO () -> ReaderT backend m () forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO (IO () -> ReaderT backend m ()) -> IO () -> ReaderT backend m () forall a b. (a -> b) -> a -> b $ Maybe (MaybeFieldDefEntityGeneric backend) populatedResult Maybe (MaybeFieldDefEntityGeneric backend) -> Maybe (MaybeFieldDefEntityGeneric backend) -> IO () forall a. (HasCallStack, Eq a, Show a) => a -> a -> IO () @?= MaybeFieldDefEntityGeneric backend -> Maybe (MaybeFieldDefEntityGeneric backend) forall a. a -> Maybe a Just (Maybe String -> Maybe Int -> MaybeFieldDefEntityGeneric backend forall backend. Maybe String -> Maybe Int -> MaybeFieldDefEntityGeneric backend MaybeFieldDefEntity (String -> Maybe String forall a. a -> Maybe a Just String "text") (Int -> Maybe Int forall a. a -> Maybe a Just Int 8))