packages feed

csv-to-qif-0.3: test/Tester.hs

-----------------------------------------------------------------------------
--
-- Module      :  Tester
-- Copyright   :  (c) Ingolf Wagner
-- License     :  BSD3
--
-- Maintainer  :  Ingolf Wagner <palipalo9@googlemail.com>
-- Stability   :  unstable
-- Portability :
--
-- |
--
-----------------------------------------------------------------------------

module Main (main) where


import Test.Hspec
import Qifer

main :: IO ()
main = hspec $ do
  describe "Csv" $ do
    it "should transform CSV" $ do
        let rule = (Rule 1 [2] [0,3] 4)
            trans= (Transaction "2" "3" "1 4" "5")
            csv  = [["1","2","3","4","5"]]
        (toTransactions rule csv) `shouldBe` [trans]
    it "should generate Qif" $ do
        let trans = (Transaction "heute" "short" "long bla bla" "100$")
            qif   = ["Pshort","T100$","Dheute","Mlong bla bla"]
        (toQif trans) `shouldBe` qif
    it "should generate Qif File content" $ do
        let trans = (Transaction "heute" "short" "long bla bla" "100$")
            qif   = ["!Type:Bank","Pshort","T100$","Dheute","Mlong bla bla","^"]
        (transToQif [trans]) `shouldBe` qif
    it "should update a transaction" $ do
        let trans  = (Transaction "heute" "short" "long bla bla" "100$")
            theUpdate = (Transaction "heute" "bam" "long bla bla" "100$")
        (updateTransaction "ort" "bam" trans) `shouldBe` theUpdate
        (updateTransaction "foo" "bam" trans) `shouldBe` trans
    it "should update multiple transactions" $ do
        let transA       = (Transaction "heute"  "short story long its .." "long bla bla" "100$")
            transB       = (Transaction "morgen" "balla ball bam bam boom"   "long bla bla" "100$")
            transA1      = (Transaction "heute"  "found story" "long bla bla" "100$")
            transB1      = (Transaction "morgen" "found balla" "long bla bla" "100$")
            regex        = [("story","found story"),("balla","found balla")]
            transactions = [transA,transB]
        (update regex transactions) `shouldBe` [transA1,transB1]