packages feed

forex2ledger-1.0.0.0: test/Test/Ledger.hs

{-# LANGUAGE OverloadedStrings #-}

module Test.Ledger (
  tests,
) where

import Data.Currency (Alpha (..))
import qualified Data.Map.Strict as Map
import Data.Time (fromGregorian)
import Ledger (ratesToLedger)
import OpenExchangeRates (OerRates (OerRates))
import Relude
import Test.Hspec (
  SpecWith,
  describe,
  it,
 )
import Test.Hspec.Expectations.Pretty (shouldBe)

tests :: SpecWith ()
tests = describe "Ledger" $ do
  describe "ratesToLedger" $ do
    it "formatsRates" $ do
      ratesToLedger
        USD
        ( OerRates
            (fromGregorian 2021 3 17)
            ( Map.singleton CHF 0.922272
                <> Map.singleton EUR 1.1
            )
        )
        `shouldBe` "P 2021-03-17 USD 0.922272 CHF\n\
                   \P 2021-03-17 USD 1.1 EUR\n"