(ns parse-test (:require [parse] [clojure.string :as str] [clojure.test :refer [deftest is]])) (deftest test-parse (let [transaction (str/triml " DATE txn \"Paychex\" \"Monthly Payroll - PERIOD - Fee\" program: \"Conservancy:Payroll\" project: \"Conservancy\" receipt: \"TODO-FEES-RECEIPT\" invoice: \"TODO-FEES-INVOICE\" approval: \"Financial/Employment-Records/memo-re-board-approval-of-payroll.txt\" tax-implication: \"USA-Corporation\" Expenses:Payroll:Fees 103.26 USD entity: \"Citizen-Jack\" Expenses:Payroll:Fees 103.25 USD entity: \"Citizen-Jill\" Assets:FR:Check2721 -206.51 USD ") expected '[{:date "DATE" :payee "Paychex" :desc "Monthly Payroll - PERIOD - Fee" :meta {:program "Conservancy:Payroll" :project "Conservancy" :receipt "TODO-FEES-RECEIPT" :invoice "TODO-FEES-INVOICE" :approval "Financial/Employment-Records/memo-re-board-approval-of-payroll.txt" :tax-implication "USA-Corporation"} :postings ({:account "Expenses:Payroll:Fees" :amount 103.26M :currency "USD" :meta {:entity "Citizen-Jack"}} {:account "Expenses:Payroll:Fees" :amount 103.25M :currency "USD" :meta {:entity "Citizen-Jill"}} {:account "Assets:FR:Check2721" :amount -206.51M :currency "USD"})}]] (is (= (parse/parse transaction) expected))))