Files
karma/internal/models/annotation_test.go
2018-10-27 11:19:40 +01:00

117 lines
2.3 KiB
Go

package models_test
import (
"reflect"
"sort"
"testing"
"github.com/prymitive/karma/internal/models"
)
type annotationMapsTestCase struct {
annotationMap map[string]string
annotations models.Annotations
}
var annotationMapsTestCases = []annotationMapsTestCase{
{
annotationMap: map[string]string{
"foo": "bar",
},
annotations: models.Annotations{
models.Annotation{
Name: "foo",
Value: "bar",
Visible: true,
IsLink: false,
},
},
},
{
annotationMap: map[string]string{
"foo": "http://localhost",
},
annotations: models.Annotations{
models.Annotation{
Name: "foo",
Value: "http://localhost",
Visible: true,
IsLink: true,
},
},
},
{
annotationMap: map[string]string{
"foo": "ftp://localhost",
},
annotations: models.Annotations{
models.Annotation{
Name: "foo",
Value: "ftp://localhost",
Visible: true,
IsLink: true,
},
},
},
{
annotationMap: map[string]string{
"foo": "https://localhost/xxx",
"abc": "xyz",
},
annotations: models.Annotations{
models.Annotation{
Name: "abc",
Value: "xyz",
Visible: true,
IsLink: false,
},
models.Annotation{
Name: "foo",
Value: "https://localhost/xxx",
Visible: true,
IsLink: true,
},
},
},
}
func TestAnnotationsFromMap(t *testing.T) {
for _, testCase := range annotationMapsTestCases {
result := models.AnnotationsFromMap(testCase.annotationMap)
if !reflect.DeepEqual(testCase.annotations, result) {
t.Errorf("AnnotationsFromMap result mismatch for map %v, expected %v got %v",
testCase.annotationMap, testCase.annotations, result)
}
}
}
func TestAnnotationsSort(t *testing.T) {
annotations := models.Annotations{
models.Annotation{
Name: "bar",
Value: "abc",
Visible: true,
IsLink: false,
},
models.Annotation{
Name: "xyz",
Value: "xyz",
Visible: true,
IsLink: true,
},
models.Annotation{
Name: "abc",
Value: "bar",
Visible: true,
IsLink: true,
},
}
sort.Stable(annotations)
if annotations[0].Name != "abc" {
t.Errorf("Expected 'abc' to be first, got '%s'", annotations[0].Name)
}
if annotations[2].Name != "xyz" {
t.Errorf("Expected 'xyz' to be last, got '%s'", annotations[2].Name)
}
}