{-# 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))