44 lines
1.4 KiB
Haskell
44 lines
1.4 KiB
Haskell
{-# LANGUAGE OverloadedStrings #-}
|
|
|
|
module LivingroomSpec (spec) where
|
|
|
|
import AFRP (Event (..))
|
|
import Data.Time (UTCTime (..), fromGregorian)
|
|
import HomeAssistant.Controller
|
|
import HomeAssistant.Controller.Livingroom
|
|
import Support
|
|
import Test.Hspec
|
|
|
|
-- | A UTCTime at a given hour on March 15, 2025 (Spring).
|
|
springAt :: Int -> UTCTime
|
|
springAt h = UTCTime (fromGregorian 2025 3 15) (fromIntegral (h * 3600))
|
|
|
|
-- | A UTCTime at a given hour on July 15, 2025 (Summer).
|
|
summerAt :: Int -> UTCTime
|
|
summerAt h = UTCTime (fromGregorian 2025 7 15) (fromIntegral (h * 3600))
|
|
|
|
spec :: Spec
|
|
spec = describe "livingroomPlantLights" $ do
|
|
it "activates the Growth scene at 10:00 in Spring" $ do
|
|
let result = runHASSTimed livingroomPlantLights
|
|
[ (springAt 9, Tick)
|
|
, (springAt 10, Tick)
|
|
]
|
|
services result
|
|
`shouldBe` [ [], [activateScene "scene.olohuoneen_kasvivalo"] ]
|
|
|
|
it "activates the Ambience scene at 20:00 in Spring" $ do
|
|
let result = runHASSTimed livingroomPlantLights
|
|
[ (springAt 19, Tick)
|
|
, (springAt 20, Tick)
|
|
]
|
|
services result
|
|
`shouldBe` [ [], [activateScene "scene.kasvivalo_iltatila"] ]
|
|
|
|
it "does not activate Growth in Summer" $ do
|
|
let result = runHASSTimed livingroomPlantLights
|
|
[ (summerAt 9, Tick)
|
|
, (summerAt 10, Tick)
|
|
]
|
|
services result `shouldBe` [ [], [] ]
|