package alamo import ( "encoding/json" "testing" "github.com/stretchr/testify/require" ) func TestControlSettingsRequiresCompleteSupportedValues(t *testing.T) { for _, value := range []string{`null`, `{}`, `{"mode":"heat"}`, `{"mode":"heat","target_temperature":null}`, `{"mode":"cool","target_temperature":20}`, `{"mode":"heat","target_temperature":20,"extra":1}`, `{"mode":"off","target_temperature":20} {}`, `[]`, `{"mode":"heat","target_temperature":"20"}`} { _, err := decodeControl(json.RawMessage(value)) require.Error(t, err) } for _, mode := range []string{"off", "heat"} { settings, err := decodeControl(json.RawMessage(`{"mode":"` + mode + `","target_temperature":21.5}`)) require.NoError(t, err) require.Equal(t, mode, settings.Mode) require.InDelta(t, 21.5, settings.TargetTemperature, 0.001) } }