packages feed

persistent-test-2.13.2.1: src/MaybeFieldDefsTest.hs

{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE TypeOperators #-}
{-# 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 = describe "Maybe Field Definitions" $ do
    it "runs appropriate migrations" $ runDb $ do
        emptyEntity <- insert $ MaybeFieldDefEntity Nothing Nothing
        emptyResult <- get emptyEntity
        liftIO $ emptyResult @?= Just (MaybeFieldDefEntity Nothing Nothing)
        populatedEntity <- insert $ MaybeFieldDefEntity (Just "text") (Just 8)
        populatedResult <- get populatedEntity
        liftIO $ populatedResult @?= Just (MaybeFieldDefEntity (Just "text") (Just 8))