about summary refs log tree commit diff
path: root/website/sandbox/shift-time/Spec.hs
blob: ba3f71d7c7549b28fcd2bd2aebb765d2d1521596 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
--------------------------------------------------------------------------------
module Spec where
--------------------------------------------------------------------------------
import RIO
import Test.Hspec
import Test.QuickCheck
import Main hiding (main)

import qualified RIO.Text as Text
--------------------------------------------------------------------------------

main :: IO ()
main = hspec $ do
  describe "Main" $ do
    it "handles seconds" $ do
      property $ \x -> parseTime (Text.concat [x & show & Text.pack, "s"]) ==
        (Just defaultShiftTimeRequest { shiftSeconds = x })

    it "handles minutes" $ do
      property $ \x -> parseTime (Text.concat [x & show & Text.pack, "m"]) ==
        (Just defaultShiftTimeRequest { shiftMinutes = x })

    it "handles hours" $ do
      property $ \x -> parseTime (Text.concat [x & show & Text.pack, "h"]) ==
        (Just defaultShiftTimeRequest { shiftHours = x })

    it "handles days" $ do
      property $ \x -> parseTime (Text.concat [x & show & Text.pack, "d"]) ==
        (Just defaultShiftTimeRequest { shiftDays = x })

    it "handles weeks" $ do
      property $ \x -> parseTime (Text.concat [x & show & Text.pack, "w"]) ==
        (Just defaultShiftTimeRequest { shiftWeeks = x })

    it "handles months" $ do
      property $ \x -> parseTime (Text.concat [x & show & Text.pack, "M"]) ==
        (Just defaultShiftTimeRequest { shiftMonths = x })

    it "handles quarters" $ do
      property $ \x -> parseTime (Text.concat [x & show & Text.pack, "q"]) ==
        (Just defaultShiftTimeRequest { shiftQuarters = x })

    it "handles multiple shifts" $ do
      parseTime "1s-20m5h0d-4w100M-3y2q" ==
        (Just $ ShiftTimeRequest
          { shiftSeconds = 1
          , shiftMinutes = -20
          , shiftHours = 5
          , shiftDays = 0
          , shiftWeeks = -4
          , shiftMonths = 100
          , shiftQuarters = 2
          , shiftYears = -3
          })