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  }