dbmigrations-0.8.2: test/FilesystemSerializeTest.hs
module FilesystemSerializeTest
( tests
)
where
import Test.HUnit
import Data.Time.Clock ( UTCTime )
import Database.Schema.Migrations.Filesystem.Serialize
import Database.Schema.Migrations.Migration
tests :: [Test]
tests = serializationTests
mkSerializationTest :: (Migration, String) -> Test
mkSerializationTest (m, expectedString) = test $ expectedString ~=? serializeMigration m
tsStr :: String
tsStr = "2009-04-15 10:02:06 UTC"
ts :: UTCTime
ts = read tsStr
valid_full :: Migration
valid_full = Migration {
mTimestamp = ts
, mId = "valid_full"
, mDesc = Just "A valid full migration."
, mDeps = ["another_migration"]
, mApply = " CREATE TABLE test (\n a int\n );\n"
, mRevert = Just "DROP TABLE test;"
}
serializationTestCases :: [(Migration, String)]
serializationTestCases = [ (valid_full, "Description: A valid full migration.\n\
\Created: " ++ tsStr ++ "\n\
\Depends: another_migration\n\
\Apply: |\n\
\ CREATE TABLE test (\n\
\ a int\n\
\ );\n\n\
\Revert: |\n\
\ DROP TABLE test;\n")
, (valid_full { mDesc = Nothing }
, "Created: " ++ tsStr ++ "\n\
\Depends: another_migration\n\
\Apply: |\n\
\ CREATE TABLE test (\n\
\ a int\n\
\ );\n\n\
\Revert: |\n\
\ DROP TABLE test;\n")
, (valid_full { mDeps = ["one", "two"] }
, "Description: A valid full migration.\n\
\Created: " ++ tsStr ++ "\n\
\Depends: one two\n\
\Apply: |\n\
\ CREATE TABLE test (\n\
\ a int\n\
\ );\n\n\
\Revert: |\n\
\ DROP TABLE test;\n")
, (valid_full { mRevert = Nothing }
, "Description: A valid full migration.\n\
\Created: " ++ tsStr ++ "\n\
\Depends: another_migration\n\
\Apply: |\n\
\ CREATE TABLE test (\n\
\ a int\n\
\ );\n")
]
serializationTests :: [Test]
serializationTests = map mkSerializationTest serializationTestCases