fakedata-0.3.0: test/BeerSpec.hs
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE OverloadedStrings #-}
module BeerSpec where
import Config
import Control.Monad.Catch
import Control.Monad.IO.Class
import qualified Data.Map as M
import Data.Text hiding (all, map)
import qualified Data.Text as T
import Data.Vector (Vector)
import qualified Data.Vector as V
import Faker hiding (defaultFakerSettings)
import Faker.Internal
import Faker.Provider.Beer
import Test.Hspec
import TestImport
spec :: Spec
spec = do
describe "Beer" $ do
it "Has enough beers" $ do
ctries <- beerNameProvider defaultFakerSettings
(ctries) `shouldSatisfy` \x -> V.length x > 10
it "Equality of generated and manually coded beers" $ do
let beerNameProvider2 ::
(MonadThrow m, MonadIO m) => FakerSettings -> m (Vector Text)
beerNameProvider2 settings = fetchData settings Beer parseBeerName
beers1 <- beerNameProvider2 defaultFakerSettings
beers2 <- beerNameProvider defaultFakerSettings
beers1 `shouldBe` beers2
it "Equality of generated and manually coded beer brands" $ do
let beerBrandProvider2 ::
(MonadThrow m, MonadIO m) => FakerSettings -> m (Vector Text)
beerBrandProvider2 settings = fetchData settings Beer parseBeerBrand
beers1 <- beerBrandProvider2 defaultFakerSettings
beers2 <- beerBrandProvider defaultFakerSettings
beers1 `shouldBe` beers2