module EquivalentTypeTest (specs) where
import Database.Persist.TH
import Control.Monad.Trans.Resource (runResourceT)
#ifdef WITH_POSTGRESQL
import qualified Data.Text as T
#endif
import Init
#ifdef WITH_NOSQL
mkPersist persistSettings [persistUpperCase|
#else
share [mkPersist sqlSettings, mkMigrate "migrateAll1"] [persistLowerCase|
#endif
EquivalentType sql=equivalent_types
field1 Int
#ifdef WITH_POSTGRESQL
field2 T.Text sqltype=text
field3 T.Text sqltype=us_postal_code
#endif
deriving Eq Show
|]
#ifdef WITH_NOSQL
mkPersist persistSettings [persistUpperCase|
#else
share [mkPersist sqlSettings, mkMigrate "migrateAll2"] [persistLowerCase|
#endif
EquivalentType2 sql=equivalent_types
field1 Int
#ifdef WITH_POSTGRESQL
field2 T.Text
field3 T.Text sqltype=us_postal_code
#endif
deriving Eq Show
|]
specs :: Spec
specs = describe "doesn't migrate equivalent types" $ do
it "works" $ asIO $ runResourceT $ runConn $ do
#ifdef WITH_POSTGRESQL
_ <- rawExecute "DROP DOMAIN IF EXISTS us_postal_code" []
_ <- rawExecute "CREATE DOMAIN us_postal_code AS TEXT CHECK(VALUE ~ '^\\d{5}$')" []
#endif
#ifndef WITH_NOSQL
_ <- runMigrationSilent migrateAll1
xs <- getMigration migrateAll2
liftIO $ xs @?= []
#else
return ()
#endif
asIO :: IO a -> IO a
asIO = id