github.com/movsb/taorm@v0.0.0-20201209183410-91bafb0b22a6/taorm/registry_test.go (about)

     1  package taorm
     2  
     3  import (
     4  	"reflect"
     5  	"testing"
     6  
     7  	"github.com/stretchr/testify/assert"
     8  )
     9  
    10  type TableNameType1 struct {
    11  }
    12  
    13  func (TableNameType1) TableName() string {
    14  	return `table_name`
    15  }
    16  
    17  type TableNameType2 struct {
    18  }
    19  
    20  func (*TableNameType2) TableName() string {
    21  	return `table_name`
    22  }
    23  
    24  func TestGetTableName(t *testing.T) {
    25  	{
    26  		name, err := getTableNameFromType(reflect.TypeOf(TableNameType1{}))
    27  		assert.NoError(t, err)
    28  		assert.Equal(t, `table_name`, name)
    29  	}
    30  	{
    31  		name, err := getTableNameFromType(reflect.TypeOf(&TableNameType1{}))
    32  		assert.NoError(t, err)
    33  		assert.Equal(t, `table_name`, name)
    34  	}
    35  	{
    36  		name, err := getTableNameFromType(reflect.TypeOf(TableNameType2{}))
    37  		assert.NoError(t, err)
    38  		assert.Equal(t, `table_name`, name)
    39  	}
    40  	{
    41  		name, err := getTableNameFromType(reflect.TypeOf(&TableNameType2{}))
    42  		assert.NoError(t, err)
    43  		assert.Equal(t, `table_name`, name)
    44  	}
    45  }
    46  
    47  type Base struct {
    48  	ID int64 `taorm:"id"`
    49  }
    50  
    51  type Embedded struct {
    52  	Base
    53  	Name string `taorm:"name:name"`
    54  }
    55  
    56  func TestEmbedded(t *testing.T) {
    57  	info, err := getRegistered(Embedded{})
    58  	if err != nil {
    59  		t.Fatal(err)
    60  	}
    61  
    62  	names := []string{`id`, `name`}
    63  	for _, name := range names {
    64  		if _, ok := info.fields[name]; !ok {
    65  			t.Fatalf(`name not in fields: %s`, name)
    66  		}
    67  	}
    68  	if len(info.fields) != len(names) {
    69  		t.Fatalf(`len(names) not equal: %d vs %d`, len(info.fields), len(names))
    70  	}
    71  }