github.com/amimof/huego@v1.2.1/rule_test.go (about) 1 package huego 2 3 import ( 4 "github.com/stretchr/testify/assert" 5 "testing" 6 ) 7 8 func TestGetRules(t *testing.T) { 9 b := New(hostname, username) 10 rules, err := b.GetRules() 11 if err != nil { 12 t.Fatal(err) 13 } 14 t.Logf("Found %d rules", len(rules)) 15 for _, rule := range rules { 16 t.Log(rule) 17 } 18 19 contains := func(name string, ss []*Rule) bool { 20 for _, s := range ss { 21 if s.Name == name { 22 return true 23 } 24 } 25 return false 26 } 27 28 assert.True(t, contains("Wall Switch Rule", rules)) 29 assert.True(t, contains("Wall Switch Rule 2", rules)) 30 31 b.Host = badHostname 32 _, err = b.GetRules() 33 assert.NotNil(t, err) 34 } 35 36 func TestGetRule(t *testing.T) { 37 b := New(hostname, username) 38 l, err := b.GetRule(1) 39 if err != nil { 40 t.Fatal(err) 41 } else { 42 t.Log(l) 43 } 44 45 b.Host = badHostname 46 _, err = b.GetRule(1) 47 assert.NotNil(t, err) 48 } 49 50 func TestCreateRule(t *testing.T) { 51 b := New(hostname, username) 52 conditions := []*Condition{ 53 { 54 Address: "/sensors/2/state/buttonevent", 55 Operator: "eq", 56 Value: "16", 57 }, 58 } 59 actions := []*RuleAction{ 60 { 61 Address: "/groups/0/action", 62 Method: "PUT", 63 Body: &State{On: true}, 64 }, 65 } 66 rule := &Rule{ 67 Name: "Huego Test Rule", 68 Conditions: conditions, 69 Actions: actions, 70 } 71 resp, err := b.CreateRule(rule) 72 if err != nil { 73 t.Fatal(err) 74 } else { 75 t.Logf("Rule created") 76 for k, v := range resp.Success { 77 t.Logf("%v: %s", k, v) 78 } 79 } 80 81 b.Host = badHostname 82 _, err = b.CreateRule(rule) 83 assert.NotNil(t, err) 84 } 85 86 func TestUpdateRule(t *testing.T) { 87 b := New(hostname, username) 88 id := 1 89 rule := &Rule{ 90 Actions: []*RuleAction{ 91 { 92 Address: "/groups/1/action", 93 Method: "PUT", 94 Body: &State{On: true}, 95 }, 96 }, 97 } 98 resp, err := b.UpdateRule(id, rule) 99 if err != nil { 100 t.Fatal(err) 101 } else { 102 t.Logf("Rule %d updated", id) 103 for k, v := range resp.Success { 104 t.Logf("%v: %s", k, v) 105 } 106 } 107 b.Host = badHostname 108 _, err = b.UpdateRule(id, rule) 109 assert.NotNil(t, err) 110 } 111 112 func TestDeleteRule(t *testing.T) { 113 b := New(hostname, username) 114 id := 1 115 err := b.DeleteRule(id) 116 if err != nil { 117 t.Fatal(err) 118 } else { 119 t.Logf("Rule %d deleted", id) 120 } 121 }