packages feed

follow-0.1.0.0: test/Data/Time/FollowSpec.hs

{-# LANGUAGE OverloadedStrings #-}

module Data.Time.FollowSpec where

import           Data.Time        (UTCTime)
import           Data.Time.Follow
import           Test.Hspec

spec :: Spec
spec =
  describe ".parseTimeGuess" $ do
    it "parses from iso8601" $ do
      let string = "2018-09-02"
      let time = parseTimeGuess string :: Maybe UTCTime
      (show <$> time) `shouldBe` Just "2018-09-02 00:00:00 UTC"
    it "parses from iso8601 with time" $ do
      let string = "2018-09-02T01:00:00"
      let time = parseTimeGuess string :: Maybe UTCTime
      (show <$> time) `shouldBe` Just "2018-09-02 01:00:00 UTC"
    it "parses from iso8601 with time and timezone" $ do
      let string = "2018-09-02T01:00:00+0000"
      let time = parseTimeGuess string :: Maybe UTCTime
      (show <$> time) `shouldBe` Just "2018-09-02 01:00:00 UTC"
    it "parses from iso8601 with fractions of seconds" $ do
      let string = "2018-09-02T01:00:00.001000"
      let time = parseTimeGuess string :: Maybe UTCTime
      (show <$> time) `shouldBe` Just "2018-09-02 01:00:00.001 UTC"
    it "parses from iso8601 with fractions of seconds and timezone" $ do
      let string = "2018-09-02T01:00:00.001000+0000"
      let time = parseTimeGuess string :: Maybe UTCTime
      (show <$> time) `shouldBe` Just "2018-09-02 01:00:00.001 UTC"
    it "parses from rfc822" $ do
      let string = "Sun, 02 Sep 2018 01:00:00 +0000"
      let time = parseTimeGuess string :: Maybe UTCTime
      (show <$> time) `shouldBe` Just "2018-09-02 01:00:00 UTC"
    it "parses from epoch" $ do
      let string = "1535846400"
      let time = parseTimeGuess string :: Maybe UTCTime
      (show <$> time) `shouldBe` Just "2018-09-02 00:00:00 UTC"
    it "returns Nothing when unknown" $ do
      let string = "None"
      let time = parseTimeGuess string :: Maybe UTCTime
      time `shouldBe` Nothing