From 3089c6f8be3135ab1aa2b95b9314a753596714a7 Mon Sep 17 00:00:00 2001 From: Stian Aune Date: Wed, 27 Mar 2019 22:20:07 +0100 Subject: [PATCH] Bugfix + some unit tests bc why not? --- models/group_test.go | 53 +++++++++++++++++++ models/light_test.go | 25 +++++++++ models/user_test.go | 13 +++++ .../src/Components/Misc/BrightnessSlider.jsx | 7 ++- webui/src/Components/Misc/ColorPicker.jsx | 7 ++- 5 files changed, 103 insertions(+), 2 deletions(-) create mode 100644 models/group_test.go diff --git a/models/group_test.go b/models/group_test.go new file mode 100644 index 0000000..3275c61 --- /dev/null +++ b/models/group_test.go @@ -0,0 +1,53 @@ +package models_test + +import ( + "git.aiterp.net/lucifer/lucifer/models" + "github.com/stretchr/testify/assert" + "testing" +) + +func TestGroup_Permission_NotExisting(t *testing.T) { + group := models.Group{ + ID: 1001, + Name: "Illuminati", + Permissions: []models.GroupPermission{}, + } + + perm := group.Permission(2001) + + assert.Equal(t, 1001, perm.GroupID) + assert.Equal(t, 2001, perm.UserID) + assert.False(t, perm.Read) + assert.False(t, perm.Write) + assert.False(t, perm.Create) + assert.False(t, perm.Delete) + assert.False(t, perm.Manage) +} + +func TestGroup_Permission_Existing(t *testing.T) { + group := models.Group{ + ID: 1002, + Name: "The Not-So-Dark Side", + Permissions: []models.GroupPermission{ + { + GroupID: 1002, + UserID: 2002, + Read: true, + Write: true, + Create: false, + Delete: false, + Manage: false, + }, + }, + } + + perm := group.Permission(2002) + + assert.Equal(t, 1002, perm.GroupID) + assert.Equal(t, 2002, perm.UserID) + assert.True(t, perm.Read) + assert.True(t, perm.Write) + assert.False(t, perm.Create) + assert.False(t, perm.Delete) + assert.False(t, perm.Manage) +} \ No newline at end of file diff --git a/models/light_test.go b/models/light_test.go index b777535..a901678 100644 --- a/models/light_test.go +++ b/models/light_test.go @@ -6,6 +6,31 @@ import ( "testing" ) +func TestLight_SetColor_LoppingOffHash(t *testing.T) { + light := models.Light{} + + err := light.SetColor("#FFB34F") + + assert.Nil(t, err) + assert.Equal(t, "FFB34F", light.Color) +} + +func TestLight_SetColor_InvalidLength(t *testing.T) { + light := models.Light{} + + err := light.SetColor("FFB34F32") + + assert.NotNil(t, err) +} + +func TestLight_SetColor_InvalidHex(t *testing.T) { + light := models.Light{} + + err := light.SetColor("FFB34G") + + assert.NotNil(t, err) +} + func TestLight_SetColorRGB(t *testing.T) { light := models.Light{} diff --git a/models/user_test.go b/models/user_test.go index 4077a32..5d44942 100644 --- a/models/user_test.go +++ b/models/user_test.go @@ -1,6 +1,7 @@ package models_test import ( + "context" "git.aiterp.net/lucifer/lucifer/models" "github.com/stretchr/testify/assert" "testing" @@ -40,3 +41,15 @@ func TestUser_CheckPassword_Correct(t *testing.T) { assert.Nil(t, err) } + +func TestUserFromContext(t *testing.T) { + nilUser := models.UserFromContext(context.Background()) + + assert.Nil(t, nilUser) + + user := &models.User{ID: 1001, Name: "Freddie"} + + ctx := user.InContext(context.Background()) + + assert.Equal(t, user, models.UserFromContext(ctx)) +} diff --git a/webui/src/Components/Misc/BrightnessSlider.jsx b/webui/src/Components/Misc/BrightnessSlider.jsx index e95d594..a426e1a 100644 --- a/webui/src/Components/Misc/BrightnessSlider.jsx +++ b/webui/src/Components/Misc/BrightnessSlider.jsx @@ -23,7 +23,12 @@ function BrightnessSlider({brightness, onChange}) { }); return () => { - document.getElementById(`brightness-picker-${random}`).innerHTML = ""; + const elem = document.getElementById(`brightness-picker-${random}`); + if (elem === null) { + return; + } + + elem.innerHTML = ""; }; }, [brightness]); diff --git a/webui/src/Components/Misc/ColorPicker.jsx b/webui/src/Components/Misc/ColorPicker.jsx index d067a5c..7b70957 100644 --- a/webui/src/Components/Misc/ColorPicker.jsx +++ b/webui/src/Components/Misc/ColorPicker.jsx @@ -21,7 +21,12 @@ function ColorPicker({color, onChange}) { }); return () => { - document.getElementById(`color-picker-${random}`).innerHTML = ""; + const elem = document.getElementById(`color-picker-${random}`); + if (elem === null) { + return; + } + + elem.innerHTML = ""; }; }, [color]);