mirror of
https://github.com/simonmichael/hledger.git
synced 2024-11-07 21:15:19 +03:00
tests: ReportOptions -> easytest
This commit is contained in:
parent
3b63c2ff2f
commit
241d0dbebd
@ -1,4 +1,4 @@
|
||||
{-# LANGUAGE RecordWildCards, DeriveDataTypeable, FlexibleInstances #-}
|
||||
{-# LANGUAGE OverloadedStrings, RecordWildCards, DeriveDataTypeable, FlexibleInstances #-}
|
||||
{-|
|
||||
|
||||
Generate several common kinds of report from a journal, as \"*Report\" -
|
||||
@ -18,9 +18,9 @@ module Hledger.Reports (
|
||||
module Hledger.Reports.MultiBalanceReports,
|
||||
module Hledger.Reports.BudgetReport,
|
||||
-- module Hledger.Reports.BalanceHistoryReport,
|
||||
|
||||
-- * Tests
|
||||
tests_Hledger_Reports
|
||||
tests_Hledger_Reports,
|
||||
easytests_Reports
|
||||
)
|
||||
where
|
||||
|
||||
@ -36,11 +36,13 @@ import Hledger.Reports.BudgetReport
|
||||
import Hledger.Utils.Test
|
||||
|
||||
tests_Hledger_Reports = TestList $
|
||||
-- ++ tests_isInterestingIndented
|
||||
[
|
||||
tests_Hledger_Reports_ReportOptions,
|
||||
tests_Hledger_Reports_EntriesReport,
|
||||
tests_Hledger_Reports_PostingsReport,
|
||||
tests_Hledger_Reports_BalanceReport,
|
||||
tests_Hledger_Reports_MultiBalanceReport
|
||||
]
|
||||
|
||||
easytests_Reports = tests "Reports" [
|
||||
easytests_ReportOptions
|
||||
]
|
||||
|
@ -1,10 +1,11 @@
|
||||
{-# LANGUAGE RecordWildCards, DeriveDataTypeable #-}
|
||||
{-|
|
||||
|
||||
Options common to most hledger reports.
|
||||
|
||||
-}
|
||||
|
||||
{-# LANGUAGE OverloadedStrings, RecordWildCards, DeriveDataTypeable #-}
|
||||
|
||||
module Hledger.Reports.ReportOptions (
|
||||
ReportOpts(..),
|
||||
BalanceType(..),
|
||||
@ -32,7 +33,7 @@ module Hledger.Reports.ReportOptions (
|
||||
specifiedStartDate,
|
||||
specifiedEndDate,
|
||||
|
||||
tests_Hledger_Reports_ReportOptions
|
||||
easytests_ReportOptions
|
||||
)
|
||||
where
|
||||
|
||||
@ -51,7 +52,7 @@ import Text.Megaparsec.Error
|
||||
|
||||
import Hledger.Data
|
||||
import Hledger.Query
|
||||
import Hledger.Utils
|
||||
import Hledger.Utils hiding (is)
|
||||
|
||||
|
||||
type FormatStr = String
|
||||
@ -371,21 +372,6 @@ queryFromOptsOnly _d ReportOpts{..} = simplifyQuery flagsq
|
||||
++ [Or $ map StatusQ statuses_]
|
||||
++ (maybe [] ((:[]) . Depth) depth_)
|
||||
|
||||
tests_queryFromOpts = [
|
||||
"queryFromOpts" ~: do
|
||||
assertEqual "" Any (queryFromOpts nulldate defreportopts)
|
||||
assertEqual "" (Acct "a") (queryFromOpts nulldate defreportopts{query_="a"})
|
||||
assertEqual "" (Desc "a a") (queryFromOpts nulldate defreportopts{query_="desc:'a a'"})
|
||||
assertEqual "" (Date $ mkdatespan "2012/01/01" "2013/01/01")
|
||||
(queryFromOpts nulldate defreportopts{period_=PeriodFrom (parsedate "2012/01/01")
|
||||
,query_="date:'to 2013'"
|
||||
})
|
||||
assertEqual "" (Date2 $ mkdatespan "2012/01/01" "2013/01/01")
|
||||
(queryFromOpts nulldate defreportopts{query_="date2:'in 2012'"})
|
||||
assertEqual "" (Or [Acct "a a", Acct "'b"])
|
||||
(queryFromOpts nulldate defreportopts{query_="'a a' 'b"})
|
||||
]
|
||||
|
||||
-- | Convert report options and arguments to query options.
|
||||
queryOptsFromOpts :: Day -> ReportOpts -> [QueryOpt]
|
||||
queryOptsFromOpts d ReportOpts{..} = flagsqopts ++ argsqopts
|
||||
@ -393,15 +379,6 @@ queryOptsFromOpts d ReportOpts{..} = flagsqopts ++ argsqopts
|
||||
flagsqopts = []
|
||||
argsqopts = snd $ parseQuery d (T.pack query_)
|
||||
|
||||
tests_queryOptsFromOpts = [
|
||||
"queryOptsFromOpts" ~: do
|
||||
assertEqual "" [] (queryOptsFromOpts nulldate defreportopts)
|
||||
assertEqual "" [] (queryOptsFromOpts nulldate defreportopts{query_="a"})
|
||||
assertEqual "" [] (queryOptsFromOpts nulldate defreportopts{period_=PeriodFrom (parsedate "2012/01/01")
|
||||
,query_="date:'to 2013'"
|
||||
})
|
||||
]
|
||||
|
||||
-- | The effective report span is the start and end dates specified by
|
||||
-- options or queries, or otherwise the earliest and latest transaction or
|
||||
-- posting dates in the journal. If no dates are specified by options/queries
|
||||
@ -441,7 +418,29 @@ specifiedStartDate ropts = fst <$> specifiedStartEndDates ropts
|
||||
specifiedEndDate :: ReportOpts -> IO (Maybe Day)
|
||||
specifiedEndDate ropts = snd <$> specifiedStartEndDates ropts
|
||||
|
||||
-- tests
|
||||
|
||||
is :: (Eq a, Show a, HasCallStack) => a -> a -> Test ()
|
||||
is = flip expectEq'
|
||||
|
||||
easytests_ReportOptions = tests "ReportOptions" [
|
||||
tests "queryFromOpts" [
|
||||
(queryFromOpts nulldate defreportopts) `is` Any
|
||||
,(queryFromOpts nulldate defreportopts{query_="a"}) `is` (Acct "a")
|
||||
,(queryFromOpts nulldate defreportopts{query_="desc:'a a'"}) `is` (Desc "a a")
|
||||
,(queryFromOpts nulldate defreportopts{period_=PeriodFrom (parsedate "2012/01/01"),query_="date:'to 2013'" })
|
||||
`is` (Date $ mkdatespan "2012/01/01" "2013/01/01")
|
||||
,(queryFromOpts nulldate defreportopts{query_="date2:'in 2012'"}) `is` (Date2 $ mkdatespan "2012/01/01" "2013/01/01")
|
||||
,(queryFromOpts nulldate defreportopts{query_="'a a' 'b"}) `is` (Or [Acct "a a", Acct "'b"])
|
||||
]
|
||||
|
||||
,tests "queryOptsFromOpts" [
|
||||
(queryOptsFromOpts nulldate defreportopts) `is` []
|
||||
,(queryOptsFromOpts nulldate defreportopts{query_="a"}) `is` []
|
||||
,(queryOptsFromOpts nulldate defreportopts{period_=PeriodFrom (parsedate "2012/01/01")
|
||||
,query_="date:'to 2013'"
|
||||
})
|
||||
`is` []
|
||||
]
|
||||
]
|
||||
|
||||
tests_Hledger_Reports_ReportOptions = TestList $
|
||||
tests_queryFromOpts
|
||||
++ tests_queryOptsFromOpts
|
||||
|
Loading…
Reference in New Issue
Block a user