github.com/amimof/huego@v1.2.1/scene_test.go (about) 1 package huego 2 3 import ( 4 "github.com/stretchr/testify/assert" 5 "testing" 6 ) 7 8 func TestGetScenes(t *testing.T) { 9 b := New(hostname, username) 10 scenes, err := b.GetScenes() 11 if err != nil { 12 t.Fatal(err) 13 } 14 t.Logf("Found %d scenes", len(scenes)) 15 for i, scene := range scenes { 16 t.Logf("%d", i) 17 t.Logf(" Name: %s", scene.Name) 18 t.Logf(" Type: %s", scene.Type) 19 t.Logf(" Group: %s", scene.Group) 20 t.Logf(" Lights: %s", scene.Lights) 21 t.Logf(" Owner: %s", scene.Owner) 22 t.Logf(" Recycle: %t", scene.Recycle) 23 t.Logf(" Locked: %t", scene.Locked) 24 t.Logf(" AppData: %s", scene.AppData) 25 t.Logf(" Picture: %s", scene.Picture) 26 t.Logf(" LastUpdated: %s", scene.LastUpdated) 27 t.Logf(" Version: %d", scene.Version) 28 t.Logf(" StoreLightState: %t", scene.StoreLightState) 29 t.Logf(" ID: %s", scene.ID) 30 } 31 32 contains := func(name string, ss []Scene) bool { 33 for _, s := range ss { 34 if s.Name == name { 35 return true 36 } 37 } 38 return false 39 } 40 41 assert.True(t, contains("Kathyon1449133269486", scenes)) 42 assert.True(t, contains("Cozydinner", scenes)) 43 44 b.Host = badHostname 45 _, err = b.GetScenes() 46 assert.NotNil(t, err) 47 48 } 49 50 func TestGetScene(t *testing.T) { 51 b := New(hostname, username) 52 id := "4e1c6b20e-on-0" 53 s, err := b.GetScene(id) 54 if err != nil { 55 t.Fatal(err) 56 } 57 t.Logf(" Name: %s", s.Name) 58 t.Logf(" Type: %s", s.Type) 59 t.Logf(" Group: %s", s.Group) 60 t.Logf(" Lights: %s", s.Lights) 61 t.Logf(" Owner: %s", s.Owner) 62 t.Logf(" Recycle: %t", s.Recycle) 63 t.Logf(" Locked: %t", s.Locked) 64 t.Logf(" AppData: %s", s.AppData) 65 t.Logf(" Picture: %s", s.Picture) 66 t.Logf(" LastUpdated: %s", s.LastUpdated) 67 t.Logf(" Version: %d", s.Version) 68 t.Logf(" StoreLightState: %t", s.StoreLightState) 69 t.Logf(" ID: %s", s.ID) 70 t.Logf(" LightStates: %d", len(s.LightStates)) 71 for k := range s.LightStates { 72 t.Logf(" Light %d: %+v", k, s.LightStates[k]) 73 } 74 75 b.Host = badHostname 76 _, err = b.GetScene(id) 77 assert.NotNil(t, err) 78 } 79 80 func TestCreateScene(t *testing.T) { 81 b := New(hostname, username) 82 scene := &Scene{ 83 Name: "New Scene", 84 Lights: []string{"4", "5"}, 85 Recycle: true, 86 } 87 resp, err := b.CreateScene(scene) 88 if err != nil { 89 t.Fatal(err) 90 } 91 t.Logf("Scene created") 92 for k, v := range resp.Success { 93 t.Logf("%v: %s", k, v) 94 } 95 96 b.Host = badHostname 97 _, err = b.CreateScene(scene) 98 assert.NotNil(t, err) 99 } 100 101 func TestUpdateScene(t *testing.T) { 102 b := New(hostname, username) 103 scene, err := b.GetScene("4e1c6b20e-on-0") 104 if err != nil { 105 t.Fatal(err) 106 } 107 newscene := &Scene{ 108 Name: "New Scene", 109 Lights: []string{}, 110 } 111 resp, err := b.UpdateScene(scene.ID, newscene) 112 if err != nil { 113 t.Fatal(err) 114 } 115 t.Logf("Scene '%s' (%s) updated", scene.Name, scene.ID) 116 for k, v := range resp.Success { 117 t.Logf("%v: %s", k, v) 118 } 119 120 b.Host = badHostname 121 _, err = b.UpdateScene(scene.ID, newscene) 122 assert.NotNil(t, err) 123 } 124 125 func TestSetSceneLightState(t *testing.T) { 126 b := New(hostname, username) 127 scene, err := b.GetScene("4e1c6b20e-on-0") 128 if err != nil { 129 t.Fatal(err) 130 } 131 light := 1 132 state := &State{ 133 On: true, 134 Bri: 255, 135 } 136 t.Logf("Name: %s", scene.Name) 137 t.Logf("ID: %s", scene.ID) 138 t.Logf("LightStates: %+v", scene.LightStates) 139 _, err = b.SetSceneLightState(scene.ID, light, state) 140 if err != nil { 141 t.Fatal(err) 142 } 143 t.Logf("Successfully set the state of light %d of scene '%s'", light, scene.Name) 144 145 b.Host = badHostname 146 _, err = b.SetSceneLightState(scene.ID, light, state) 147 assert.NotNil(t, err) 148 149 } 150 151 func TestDeleteScene(t *testing.T) { 152 b := New(hostname, username) 153 scene, err := b.GetScene("4e1c6b20e-on-0") 154 if err != nil { 155 t.Fatal(err) 156 } 157 err = b.DeleteScene(scene.ID) 158 if err != nil { 159 t.Fatal(err) 160 } 161 t.Logf("Scene %s (%s) deleted", scene.Name, scene.ID) 162 } 163 164 func TestRecallScene(t *testing.T) { 165 b := New(hostname, username) 166 scene := "4e1c6b20e-on-0" 167 group := 1 168 resp, err := b.RecallScene("HcK1mEcgS7gcVcT", group) 169 if err != nil { 170 t.Fatal(err) 171 } 172 t.Logf("Scene %s recalled in group %d", scene, group) 173 for k, v := range resp.Success { 174 t.Logf("%v: %s", k, v) 175 } 176 177 b.Host = badHostname 178 _, err = b.RecallScene("HcK1mEcgS7gcVcT", group) 179 assert.NotNil(t, err) 180 } 181 182 func TestRecallScene2(t *testing.T) { 183 b := New(hostname, username) 184 group := 1 185 scene, err := b.GetScene("4e1c6b20e-on-0") 186 if err != nil { 187 t.Fatal(err) 188 } 189 err = scene.Recall(group) 190 if err != nil { 191 t.Fatal(err) 192 } 193 t.Logf("Scene %s (%s) recalled in group %d", scene.Name, scene.ID, group) 194 195 b.Host = badHostname 196 err = scene.Recall(group) 197 assert.NotNil(t, err) 198 }