tbotd/vendor/src/github.com/asdine/storm/extract_test.go

58 lines
1.4 KiB
Go

package storm
import (
"testing"
"github.com/stretchr/testify/assert"
)
func TestExtractNoTags(t *testing.T) {
s := ClassicNoTags{}
_, err := extract(&s)
assert.Error(t, err)
assert.Equal(t, ErrNoID, err)
}
func TestExtractBadTags(t *testing.T) {
s := ClassicBadTags{}
infos, err := extract(&s)
assert.Error(t, err)
assert.Equal(t, ErrUnknownTag, err)
assert.Nil(t, infos)
}
func TestExtractUniqueTags(t *testing.T) {
s := ClassicUnique{ID: "id"}
infos, err := extract(&s)
assert.NoError(t, err)
assert.NotNil(t, infos)
assert.NotNil(t, infos.ID)
assert.False(t, infos.ID.IsZero)
assert.Equal(t, "ClassicUnique", infos.Name)
assert.Len(t, infos.AllByType("index"), 0)
assert.Len(t, infos.AllByType("unique"), 4)
}
func TestExtractIndexTags(t *testing.T) {
s := ClassicIndex{ID: "id"}
infos, err := extract(&s)
assert.NoError(t, err)
assert.NotNil(t, infos)
assert.NotNil(t, infos.ID)
assert.False(t, infos.ID.IsZero)
assert.Equal(t, "ClassicIndex", infos.Name)
assert.Len(t, infos.AllByType("index"), 5)
assert.Len(t, infos.AllByType("unique"), 0)
}
func TestExtractInlineWithIndex(t *testing.T) {
s := ClassicInline{ToEmbed: &ToEmbed{ID: "50"}}
infos, err := extract(&s)
assert.NoError(t, err)
assert.NotNil(t, infos)
assert.NotNil(t, infos.ID)
assert.Equal(t, "ClassicInline", infos.Name)
assert.Len(t, infos.AllByType("index"), 3)
assert.Len(t, infos.AllByType("unique"), 2)
}