module MaxLenTest (
specs
#ifndef WITH_NOSQL
, maxlenMigrate
#endif
) where
import Init
import Data.String (IsString)
#ifdef WITH_NOSQL
db :: Action IO () -> Assertion
db = db' (return ())
mkPersist persistSettings [persistUpperCase|
#else
share [mkPersist sqlSettings, mkMigrate "maxlenMigrate"] [persistLowerCase|
#endif
MaxLen
text1 Text
text2 Text maxlen=3
bs1 ByteString
bs2 ByteString maxlen=3
str1 String
str2 String maxlen=3
MLText1 text1
MLText2 text2
MLBs1 bs1
MLBs2 bs2
MLStr1 str1
MLStr2 str2
deriving Show Eq
|]
specs :: Spec
specs = describe "Maximum length attribute" $ do
it "" $ db $ do
let t1 = MaxLen a a a a a a
t2 = MaxLen b b b b b b
t2' = MaxLen b b' b b' b b'
a, b, b' :: IsString t => t
a = "a"
b = "12345"
b' = "123"
t1k <- insert t1
t2k <- insert t2
Just t1v <- get t1k
Just t2v <- get t2k
liftIO $ do t1v @?= t1
if t2v == t2
then t2v @?= t2
else t2v @?= t2'