29 lines
1.3 KiB
Haskell
29 lines
1.3 KiB
Haskell
{-# LANGUAGE OverloadedStrings #-}
|
|
module ControllerSpec where
|
|
import Test.Hspec
|
|
import Data.Default (def)
|
|
import HomeAssistant.Controller (Brightness(..), formatLightAttributes, LightAttributes(..))
|
|
import Data.Aeson (object, (.=))
|
|
|
|
|
|
spec :: Spec
|
|
spec = describe "Generic controller" $
|
|
describe "Light settings" $ do
|
|
it "formats the default as empty" $
|
|
formatLightAttributes def `shouldBe` Nothing
|
|
it "formats the transition" $
|
|
formatLightAttributes def{lightTransition=Just 5} `shouldBe`
|
|
Just (object ["transition" .= (5 :: Int)])
|
|
it "formats the temperature" $
|
|
formatLightAttributes def{lightColorTemperature=Just 5} `shouldBe`
|
|
Just (object ["color_temp_kelvin" .= (5 :: Int)])
|
|
it "formats the brightness as percentage" $
|
|
formatLightAttributes def{lightBrightness=Just (BrightnessPercent 100)} `shouldBe`
|
|
Just (object ["brightness_pct" .= (100 :: Int)])
|
|
it "formats the brightness as absolute" $
|
|
formatLightAttributes def{lightBrightness=Just (BrightnessAbsolute 200)} `shouldBe`
|
|
Just (object ["brightness" .= (200 :: Int)])
|
|
it "formats multiple values" $
|
|
formatLightAttributes def{lightTransition = Just 5, lightBrightness=Just (BrightnessAbsolute 200)} `shouldBe`
|
|
Just (object ["brightness" .= (200 :: Int), "transition" .= (5 :: Int)])
|