{-# 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)])