fradrive/test/Handler/Utils/Zip/RatingSpec.hs
2017-10-09 23:19:51 +02:00

34 lines
931 B
Haskell

{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE RecordWildCards #-}
{-# OPTIONS_GHC -fno-warn-orphans #-}
module Handler.Utils.Zip.RatingSpec where
import TestImport
import Handler.Utils.Zip.Rating
import qualified Data.ByteString.Lazy as Lazy.ByteString
import qualified Data.Text as Text
import Database.Persist.Class
import Database.Persist.Sql
instance Arbitrary Rating where
arbitrary = do
ratingCourseName <- arbitrary
ratingSheetName <- arbitrary
ratingSubmissionId <- SubmissionKey . SqlBackendKey <$> arbitrary
ratingComment <- (fmap Text.strip <$> arbitrary) `suchThat` maybe True (not . Text.null)
ratingPoints <- arbitrary
return Rating{..}
spec :: Spec
spec = describe "Rating files" $ do
it "have compatible formatting/parsing" . property $
\rating@(Rating{..}) -> parseRating (Lazy.ByteString.toStrict $ formatRating rating) >>= (`shouldBe` (ratingPoints, ratingComment))