package models import ( "reflect" "testing" "github.com/NyaaPantsu/nyaa/config" "github.com/stretchr/testify/assert" ) func TestTagsType(t *testing.T) { assert := assert.New(t) torrent := &Torrent{} for _, tagConf := range config.Get().Torrents.Tags.Types { assert.NotEmpty(tagConf.Name, "A name must be provided for a tag type") assert.NotEmpty(tagConf.Field, "You need to provide a field from the torrent Struct for '%s' tag type in config", tagConf.Name) if tagConf.Defaults != nil && len(tagConf.Defaults) == 0 { t.Log("For '%s', you provided a defaults attributes but it is empty. You should remove the attribute or fill it", tagConf.Name) } field := reflect.ValueOf(torrent).Elem().FieldByName(tagConf.Field) assert.True(field.IsValid(), "The field '%s' provided for '%s' doesn't exist", tagConf.Field, tagConf.Name) // assert.Equal(reflect.String, field.Type().Kind(), "Only string tag types are supported, if you want to make an array do a string splitted by commas for '%s'", tagConf.Name) } }