test and fix for auto-clockout of a future clockin
This commit is contained in:
parent
b616cdf0de
commit
38fd44917c
@ -26,18 +26,19 @@ instance Show TimeLog where
|
|||||||
-- midnight are split into days to give accurate per-day totals.
|
-- midnight are split into days to give accurate per-day totals.
|
||||||
entriesFromTimeLogEntries :: LocalTime -> [TimeLogEntry] -> [Entry]
|
entriesFromTimeLogEntries :: LocalTime -> [TimeLogEntry] -> [Entry]
|
||||||
entriesFromTimeLogEntries _ [] = []
|
entriesFromTimeLogEntries _ [] = []
|
||||||
entriesFromTimeLogEntries t [i]
|
entriesFromTimeLogEntries now [i]
|
||||||
| odate > idate = [entryFromTimeLogInOut i o'] ++ entriesFromTimeLogEntries t [i',o]
|
| odate > idate = [entryFromTimeLogInOut i o'] ++ entriesFromTimeLogEntries now [i',o]
|
||||||
| otherwise = [entryFromTimeLogInOut i o]
|
| otherwise = [entryFromTimeLogInOut i o]
|
||||||
where
|
where
|
||||||
o = TimeLogEntry 'o' t ""
|
o = TimeLogEntry 'o' end ""
|
||||||
|
end = if itime > now then itime else now
|
||||||
(itime,otime) = (tldatetime i,tldatetime o)
|
(itime,otime) = (tldatetime i,tldatetime o)
|
||||||
(idate,odate) = (localDay itime,localDay otime)
|
(idate,odate) = (localDay itime,localDay otime)
|
||||||
o' = o{tldatetime=itime{localDay=idate, localTimeOfDay=TimeOfDay 23 59 59}}
|
o' = o{tldatetime=itime{localDay=idate, localTimeOfDay=TimeOfDay 23 59 59}}
|
||||||
i' = i{tldatetime=itime{localDay=addDays 1 idate, localTimeOfDay=midnight}}
|
i' = i{tldatetime=itime{localDay=addDays 1 idate, localTimeOfDay=midnight}}
|
||||||
entriesFromTimeLogEntries t (i:o:rest)
|
entriesFromTimeLogEntries now (i:o:rest)
|
||||||
| odate > idate = [entryFromTimeLogInOut i o'] ++ entriesFromTimeLogEntries t (i':o:rest)
|
| odate > idate = [entryFromTimeLogInOut i o'] ++ entriesFromTimeLogEntries now (i':o:rest)
|
||||||
| otherwise = [entryFromTimeLogInOut i o] ++ entriesFromTimeLogEntries t rest
|
| otherwise = [entryFromTimeLogInOut i o] ++ entriesFromTimeLogEntries now rest
|
||||||
where
|
where
|
||||||
(itime,otime) = (tldatetime i,tldatetime o)
|
(itime,otime) = (tldatetime i,tldatetime o)
|
||||||
(idate,odate) = (localDay itime,localDay otime)
|
(idate,odate) = (localDay itime,localDay otime)
|
||||||
|
|||||||
5
Tests.hs
5
Tests.hs
@ -337,6 +337,11 @@ tests = [
|
|||||||
assertEntriesGiveStrings "auto-clock-out if needed"
|
assertEntriesGiveStrings "auto-clock-out if needed"
|
||||||
[clockin (mktime today "00:00:00") ""]
|
[clockin (mktime today "00:00:00") ""]
|
||||||
["00:00-12:00"]
|
["00:00-12:00"]
|
||||||
|
let t = localTimeOfDay $ utcToLocalTime tz $ addUTCTime 100 now
|
||||||
|
s = formatTime defaultTimeLocale "%H:%M" t
|
||||||
|
assertEntriesGiveStrings "use the clockin time for auto-clockout if it's in the future"
|
||||||
|
[clockin (LocalTime today t) ""]
|
||||||
|
[printf "%s-%s" s s]
|
||||||
|
|
||||||
,"expandAccountNames" ~: do
|
,"expandAccountNames" ~: do
|
||||||
expandAccountNames ["assets:cash","assets:checking","expenses:vacation"] `is`
|
expandAccountNames ["assets:cash","assets:checking","expenses:vacation"] `is`
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user