{-# 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` [ [], [] ]