registry-hedgehog-0.3.0.0: test/Test/Tutorial/Exercise5.hs
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE KindSignatures #-}
{-# LANGUAGE PartialTypeSignatures #-}
{-# OPTIONS_GHC -fno-warn-partial-type-signatures #-}
module Test.Tutorial.Exercise5 where
import Data.Registry
import Data.Registry.Hedgehog
import Data.Text as T
import Hedgehog hiding (test)
import Protolude
import Test.Tasty.Hedgehogx
import Test.Tutorial.DataModel
import Test.Tutorial.Exercise2 (genText)
import Test.Tutorial.Exercise3 (registry3)
import Test.Tutorial.Exercise4 (genDepartmentName)
runGens = runS registry3
genEmployeeName :: Gen Text
genEmployeeName = T.take 10 . T.toLower <$> genText
setDepartmentName = specializeGenS @Department genDepartmentName
setEmployeeName = specializeGenS @Employee genEmployeeName
setOneDepartment = addFunS $ listOfMinMax @Department 1 1
setOneEmployee = addFunS $ listOfMinMax @Employee 1 1
setSmallCompany = setOneEmployee >> setOneDepartment
test_small_company = prop "make a small company" $
runGens $ do
setSmallCompany
setEmployeeName
setDepartmentName
collect =<< forallS @Company