persistent-test-2.13.2.1: src/TransactionLevelTest.hs
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE TypeOperators #-}
{-# LANGUAGE UndecidableInstances #-}
module TransactionLevelTest where
import Init
share
[mkPersist sqlSettings, mkMigrate "migration"]
[persistUpperCase|
Wombat
name Text sqltype=varchar(80)
Primary name
deriving Eq Show Ord
|]
specsWith :: (MonadIO m, MonadFail m) => RunDb SqlBackend m -> Spec
specsWith runDb = describe "IsolationLevel" $ do
let
item = Wombat "uno"
isolationLevels = [minBound .. maxBound]
forM_ isolationLevels $ \il -> describe "insertOnDuplicateKeyUpdate" $ do
it (show il ++ " works") $ runDb $ do
transactionUndoWithIsolation il
deleteWhere ([] :: [Filter Wombat])
insert_ item
Just item' <- get (WombatKey "uno")
item' @== item