hw-mquery-0.1.0.3: test/HaskellWorks/Data/MQuerySpec.hs
module HaskellWorks.Data.MQuerySpec (spec) where
import Control.Lens
import HaskellWorks.Data.Model.Example
import HaskellWorks.Data.MQuery
import HaskellWorks.Hspec.Hedgehog
import Hedgehog
import Test.Hspec
import qualified Data.DList as DL
import qualified Data.Foldable as F
import qualified HaskellWorks.Data.Model.Lens as L
{-# ANN module ("HLint: ignore Redundant do" :: String) #-}
{-# ANN module ("HLint: ignore Reduce duplication" :: String) #-}
{-# ANN module ("HLint: ignore Redundant bracket" :: String) #-}
spec :: Spec
spec = describe "HaskellWorks.Data.MQuerySpec" $ do
it "Select into simple lens to boolean field" $ requireProperty $ do
let q = MQuery $ DL.fromList exampleMounts
let actual = F.toList $ q >>^. L.readOnly
actual === [True, False, False, False]
it "Select into simple lens to list" $ requireProperty $ do
let q = MQuery $ DL.fromList exampleMounts
let actual = F.toList $ q >>^. L.options
actual === [[], ["nosuid" , "noauto"], [], ["noexec"]]
it "Select into lens to a foldable" $ requireProperty $ do
let q = MQuery $ DL.fromList exampleMounts
let actual = F.toList $ q >>^.. L.options
actual === ["nosuid" , "noauto" , "noexec"]
it "Select into lens to a foldable" $ requireProperty $ do
let q = MQuery $ DL.fromList exampleMounts
let actual = F.toList $ q <&> view L.options
actual === [[] , ["nosuid" , "noauto"] , [] , ["noexec"]]