hasklepias-0.8.3: test/EventData/Context/DomainSpec.hs
{-# LANGUAGE OverloadedStrings #-}
module EventData.Context.DomainSpec (spec) where
import EventData.Context.Domain
import Test.Hspec ( it, shouldBe, Spec )
import Control.Lens ( preview, (^.), (^?), (.~), over )
import Control.Monad ( join )
import Data.Aeson ( decode )
import Data.Text ( Text, unpack )
import Data.Text.Read ( rational )
import qualified Data.ByteString.Lazy as B
dmo :: Domain
dmo = Demographics $ DemographicsFacts (DemographicsInfo BirthYear (Just "1987"))
myIntMap :: Text -> Maybe Integer -- TODO: this is ridiculous
myIntMap x = fmap floor (either (const Nothing) (Just . fst) (Data.Text.Read.rational x))
spec :: Spec
spec = do
it "preview demographics facts" $
dmo ^? _Demographics `shouldBe` Just (DemographicsFacts( DemographicsInfo BirthYear (Just "1987")))
it "preview demographic field" $
fmap (^.demo.field) (dmo ^? _Demographics) `shouldBe` Just BirthYear
it "preview birthyear" $
((^.demo.info) =<< preview _Demographics dmo) `shouldBe` Just "1987"
it "preview birthyear as Integer" $
(myIntMap =<< ((^.demo.info) =<< preview _Demographics dmo)) `shouldBe` Just 1987