github.com/amimof/huego@v1.2.1/schedule_test.go (about)

     1  package huego
     2  
     3  import (
     4  	"github.com/stretchr/testify/assert"
     5  	"testing"
     6  )
     7  
     8  func TestGetSchedules(t *testing.T) {
     9  	b := New(hostname, username)
    10  	schedules, err := b.GetSchedules()
    11  	if err != nil {
    12  		t.Fatal(err)
    13  	}
    14  	t.Logf("Found %d schedules", len(schedules))
    15  	for i, schedule := range schedules {
    16  		t.Logf("%d:", i)
    17  		t.Logf("  Name: %s", schedule.Name)
    18  		t.Logf("  Description: %s", schedule.Description)
    19  		t.Logf("  Command:")
    20  		t.Logf("    Address: %s", schedule.Command.Address)
    21  		t.Logf("    Method: %s", schedule.Command.Method)
    22  		t.Logf("    Body: %s", schedule.Command.Body)
    23  		t.Logf("  Time: %s", schedule.Time)
    24  		t.Logf("  LocalTime: %s", schedule.LocalTime)
    25  		t.Logf("  StartTime: %s", schedule.StartTime)
    26  		t.Logf("  Status: %s", schedule.Status)
    27  		t.Logf("  AutoDelete: %t", schedule.AutoDelete)
    28  		t.Logf("  ID: %d", schedule.ID)
    29  	}
    30  
    31  	contains := func(name string, ss []*Schedule) bool {
    32  		for _, s := range ss {
    33  			if s.Name == name {
    34  				return true
    35  			}
    36  		}
    37  		return false
    38  	}
    39  
    40  	assert.True(t, contains("Timer", schedules))
    41  	assert.True(t, contains("Alarm", schedules))
    42  
    43  	b.Host = badHostname
    44  	_, err = b.GetSchedules()
    45  	assert.NotNil(t, err)
    46  }
    47  
    48  func TestGetSchedule(t *testing.T) {
    49  	b := New(hostname, username)
    50  	s, err := b.GetSchedule(1)
    51  	if err != nil {
    52  		t.Fatal(err)
    53  	}
    54  	t.Logf("Time: %s", s.Time)
    55  	t.Logf("LocalTime: %s", s.LocalTime)
    56  	t.Logf("StartTime: %s", s.StartTime)
    57  	t.Logf("Status: %s", s.Status)
    58  	t.Logf("AutoDelete: %t", s.AutoDelete)
    59  	t.Logf("ID: %d", s.ID)
    60  
    61  	b.Host = badHostname
    62  	_, err = b.GetSchedule(1)
    63  	assert.NotNil(t, err)
    64  }
    65  
    66  func TestCreateSchedule(t *testing.T) {
    67  	b := New(hostname, username)
    68  	command := &Command{
    69  		Address: "/api/" + username + "/lights/0",
    70  		Body: &struct {
    71  			on bool
    72  		}{
    73  			false,
    74  		},
    75  		Method: "PUT",
    76  	}
    77  	schedule := &Schedule{
    78  		Name:        "TestSchedule",
    79  		Description: "Huego test schedule",
    80  		Command:     command,
    81  		LocalTime:   "2019-09-22T13:37:00",
    82  	}
    83  	resp, err := b.CreateSchedule(schedule)
    84  	if err != nil {
    85  		t.Fatal(err)
    86  	} else {
    87  		t.Logf("Schedule created")
    88  		for k, v := range resp.Success {
    89  			t.Logf("%v: %s", k, v)
    90  		}
    91  	}
    92  
    93  	b.Host = badHostname
    94  	_, err = b.CreateSchedule(schedule)
    95  	assert.NotNil(t, err)
    96  }
    97  
    98  func TestUpdateSchedule(t *testing.T) {
    99  	b := New(hostname, username)
   100  	id := 1
   101  	schedule := &Schedule{
   102  		Name:        "New Scehdule",
   103  		Description: "Updated parameter",
   104  	}
   105  	resp, err := b.UpdateSchedule(id, schedule)
   106  	if err != nil {
   107  		t.Fatal(err)
   108  	} else {
   109  		t.Logf("Schedule %d updated", id)
   110  		for k, v := range resp.Success {
   111  			t.Logf("%v: %s", k, v)
   112  		}
   113  	}
   114  
   115  	b.Host = badHostname
   116  	_, err = b.UpdateSchedule(id, schedule)
   117  	assert.NotNil(t, err)
   118  }
   119  
   120  func TestDeleteSchedule(t *testing.T) {
   121  	b := New(hostname, username)
   122  	id := 1
   123  	err := b.DeleteSchedule(id)
   124  	if err != nil {
   125  		t.Fatal(err)
   126  	} else {
   127  		t.Logf("Schedule %d deleted", id)
   128  	}
   129  }