module DateTimeSpec where import Composite.Aeson (parseJsonWithFormat', toJsonWithFormat) import Composite.Aeson.Formats.DateTime (iso8601DateTimeJsonFormat) import Data.Aeson.Types (parseEither) import Data.Aeson.QQ (aesonQQ) import Data.Time.Calendar (Day(ModifiedJulianDay)) import Data.Time.Clock (UTCTime(UTCTime)) import Test.Hspec (Spec, describe, it, shouldBe) testDate :: UTCTime testDate = UTCTime (ModifiedJulianDay 58025) (fromRational 72151.986) dateTimeSuite :: Spec dateTimeSuite = do describe "Composite.Aeson.Formats.DateTime" $ do it "encodes ISO8601 date time format for a test date" $ toJsonWithFormat iso8601DateTimeJsonFormat testDate `shouldBe` [aesonQQ|"2017-09-29T20:02:31.986+0000"|] it "decodes ISO8601 date time format for a test date" $ parseEither (parseJsonWithFormat' iso8601DateTimeJsonFormat) [aesonQQ|"2017-09-29T20:02:31.986+0000"|] `shouldBe` Right testDate