forex2ledger-1.0.0.0: test/Test/OpenExchangeRates.hs
{-# LANGUAGE OverloadedStrings #-}
module Test.OpenExchangeRates (
tests,
) where
import qualified Data.Aeson as Aeson
import Data.Currency (Alpha (..))
import qualified Data.Map.Strict as Map
import Data.Time (fromGregorian)
import OpenExchangeRates (OerRates (OerRates))
import Relude
import Test.Hspec (
SpecWith,
describe,
it,
)
import Test.Hspec.Expectations.Pretty (shouldBe)
tests :: SpecWith ()
tests = describe "OpenExchangeRates" $ do
describe "OerRates" $ do
describe "Aeson.FromJSON" $ do
it "parsesTheSampleConfig" $ do
let json =
"{\n\
\ \"disclaimer\": \"Usage subject to terms: https://openexchangerates.org/terms\",\n\
\ \"license\": \"https://openexchangerates.org/license\",\n\
\ \"timestamp\": 1616007600,\n\
\ \"base\": \"USD\",\n\
\ \"rates\": {\n\
\ \"CHF\": 0.922272\n\
\ }\n\
\ }"
Aeson.eitherDecode json
`shouldBe` Right
( OerRates
(fromGregorian 2021 3 17)
(Map.singleton CHF 0.922272)
)