ejdb2-binding-0.1.0.0: test/OnlineBackupTests.hs
module OnlineBackupTests ( tests ) where
import Control.Exception
import Control.Monad
import Database.EJDB2
import Database.EJDB2.Options
import Plant
import Prelude hiding ( id )
import System.Directory
import Test.Tasty
import Test.Tasty.HUnit
tests :: TestTree
tests = withResource (open testDatabaseOpts) close $
\databaseIO -> testGroup "onlineBackup" [ onlineBackupTest databaseIO ]
testDatabaseOpts :: Options
testDatabaseOpts =
minimalOptions "./test/onlinebackup-db" [ truncateOpenFlags ]
backupFilePath :: String
backupFilePath = "./test/onlinebackup-backup-db"
onlineBackupTest :: IO Database -> TestTree
onlineBackupTest databaseIO = testCase "onlineBackupTest" $ do
doesFileExist backupFilePath
>>= \exists -> when exists $ removeFile backupFilePath
database <- databaseIO
id <- putNew database "plants" plant
_ <- onlineBackup database backupFilePath
backupFileExists <- doesFileExist backupFilePath
backupFileExists @? "backup file exists"
databaseLast <- open $ minimalOptions backupFilePath [ readonlyOpenFlags ]
catch (do
backupPlant <- getById databaseLast "plants" id
backupPlant @?= Just plant
close databaseLast)
(\e -> do
close databaseLast
throw (e :: IOException))
where
plant = nothingPlant { id = Nothing
, name = Just "pinus"
, isTree = Just True
, year = Just 1753
, description = Just "wow 🌲"
}