fradrive/test/Handler/ZipSpec.hs
2017-10-05 19:11:05 +02:00

31 lines
875 B
Haskell

{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE RecordWildCards #-}
{-# OPTIONS_GHC -fno-warn-orphans #-}
module Handler.ZipSpec where
import TestImport
import Handler.Zip
import System.FilePath
import Data.Conduit
import qualified Data.Conduit.List as Conduit
import Data.Conduit.Binary (sourceLbs, sinkLbs)
instance Arbitrary ZipEntry where
arbitrary = do
zipEntryName <- normalise . dropTrailingPathSeparator . joinPath <$> arbitrary
zipEntryTime <- arbitrary
zipEntryContents <- arbitrary
return ZipEntry{..}
spec :: Spec
spec = describe "Zip file handling" $ do
it "has compatible encoding/decoding to/from zip files" . property $
\zipFiles -> do
bs <- runConduit $ Conduit.sourceList zipFiles =$= produceZip def =$= sinkLbs
(_, zipFiles') <- runConduit $ sourceLbs bs =$= consumeZip return
zipFiles' `shouldBe` zipFiles