From 710fec9b18740e6f3ca4ae463fe28ee540f6eff5 Mon Sep 17 00:00:00 2001 From: Gregor Kleen Date: Mon, 9 Oct 2017 22:57:06 +0200 Subject: [PATCH] Test for rating formatting/parsing --- src/Handler/Utils/Zip/Rating.hs | 9 ++++---- test/Handler/Utils/Zip/RatingSpec.hs | 33 ++++++++++++++++++++++++++++ test/TestImport.hs | 2 ++ 3 files changed, 40 insertions(+), 4 deletions(-) create mode 100644 test/Handler/Utils/Zip/RatingSpec.hs diff --git a/src/Handler/Utils/Zip/Rating.hs b/src/Handler/Utils/Zip/Rating.hs index 6837fccfd..1d2e4c0b0 100644 --- a/src/Handler/Utils/Zip/Rating.hs +++ b/src/Handler/Utils/Zip/Rating.hs @@ -10,7 +10,8 @@ {-# OPTIONS_GHC -fno-warn-name-shadowing #-} module Handler.Utils.Zip.Rating - ( getRating + ( Rating(..) + , getRating , formatRating , parseRating ) where @@ -77,9 +78,9 @@ formatRating Rating{..} = let parseRating :: ByteString - -> Either Text ( Maybe Points - , Maybe Text -- ^ Rating comment - ) + -> Either Text ( Maybe Points + , Maybe Text -- ^ Rating comment + ) parseRating input = do inputText <- first tshow $ Text.decodeUtf8' input let diff --git a/test/Handler/Utils/Zip/RatingSpec.hs b/test/Handler/Utils/Zip/RatingSpec.hs new file mode 100644 index 000000000..7908d833d --- /dev/null +++ b/test/Handler/Utils/Zip/RatingSpec.hs @@ -0,0 +1,33 @@ +{-# 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` Right (ratingPoints, ratingComment) diff --git a/test/TestImport.hs b/test/TestImport.hs index 768cafad7..29f09bdc6 100644 --- a/test/TestImport.hs +++ b/test/TestImport.hs @@ -86,3 +86,5 @@ authenticateAs (Entity _ User{..}) = do -- checking is switched off in wipeDB for those database backends which need it. createUser :: Text -> Text -> YesodExample UniWorX (Entity User) createUser userPlugin userIdent = runDB $ insertEntity User{..} + where + userMatrikelnummer = "DummyMatrikelnummer"