diff --git a/pkg/models/task_collection_filter_test.go b/pkg/models/task_collection_filter_test.go index a495ec50c..ca9ea6cf9 100644 --- a/pkg/models/task_collection_filter_test.go +++ b/pkg/models/task_collection_filter_test.go @@ -17,13 +17,14 @@ package models import ( - "code.vikunja.io/api/pkg/db" "testing" "time" - "xorm.io/builder" + + "code.vikunja.io/api/pkg/db" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + "xorm.io/builder" ) func TestParseFilter(t *testing.T) { diff --git a/pkg/utils/normalize_hex.go b/pkg/utils/normalize_hex.go index 83b7de3e5..35c2af7b8 100644 --- a/pkg/utils/normalize_hex.go +++ b/pkg/utils/normalize_hex.go @@ -19,8 +19,10 @@ package utils import "strings" func NormalizeHex(hex string) string { - if strings.HasPrefix(hex, "#") { - return strings.TrimPrefix(hex, "#") + hex = strings.TrimPrefix(hex, "#") + + if len(hex) > 6 { + return hex[:6] } return hex diff --git a/pkg/utils/normalize_hex_test.go b/pkg/utils/normalize_hex_test.go new file mode 100644 index 000000000..b5b367fd4 --- /dev/null +++ b/pkg/utils/normalize_hex_test.go @@ -0,0 +1,56 @@ +// Vikunja is a to-do list application to facilitate your life. +// Copyright 2018-present Vikunja and contributors. All rights reserved. +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU Affero General Public Licensee as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Affero General Public Licensee for more details. +// +// You should have received a copy of the GNU Affero General Public Licensee +// along with this program. If not, see . + +package utils + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestNormalizeHex(t *testing.T) { + t.Run("no prefix", func(t *testing.T) { + normalized := NormalizeHex("fff000") + + assert.Equal(t, "fff000", normalized) + }) + t.Run("with # prefix", func(t *testing.T) { + normalized := NormalizeHex("#fff000") + + assert.Equal(t, "fff000", normalized) + }) + t.Run("longer than 6 chars with #", func(t *testing.T) { + normalized := NormalizeHex("#fff000SA") + + assert.Equal(t, "fff000", normalized) + }) + t.Run("longer than 6 chars", func(t *testing.T) { + normalized := NormalizeHex("fff000SA") + + assert.Equal(t, "fff000", normalized) + }) + t.Run("shorter than 6 chars with #", func(t *testing.T) { + normalized := NormalizeHex("#fff") + + assert.Equal(t, "fff", normalized) + }) + t.Run("shorter than 6 chars", func(t *testing.T) { + normalized := NormalizeHex("fff") + + assert.Equal(t, "fff", normalized) + }) +}