fix extends tag

This commit is contained in:
Lunny Xiao 2017-10-25 23:54:10 +08:00
parent 1d5bc623f3
commit 2b06f05d40
No known key found for this signature in database
GPG Key ID: C3B7C91B632F738A
2 changed files with 57 additions and 6 deletions

7
tag.go
View File

@ -286,11 +286,12 @@ func ExtendsTagHandler(ctx *tagContext) error {
if err != nil {
return err
}
for _, col := range parentTable.Columns() {
for _, oriCol := range parentTable.Columns() {
col := *oriCol
col.FieldName = fmt.Sprintf("%v.%v", ctx.col.FieldName, col.FieldName)
ctx.table.AddColumn(col)
ctx.table.AddColumn(&col)
for indexName, indexType := range col.Indexes {
addIndex(indexName, ctx.table, col, indexType)
addIndex(indexName, ctx.table, &col, indexType)
}
}
default:

View File

@ -169,7 +169,7 @@ func TestExtends(t *testing.T) {
tu6 := &tempUser3{&tempUser{0, "extends update"}, ""}
_, err = testEngine.ID(tu5.Temp.Id).Update(tu6)
assert.Error(t, err)
assert.NoError(t, err)
users := make([]tempUser3, 0)
err = testEngine.Find(&users)
@ -203,8 +203,6 @@ func TestExtends(t *testing.T) {
assert.True(t, b)
assert.False(t, info.Userinfo.Uid == 0 || info.Userdetail.Id == 0)
panic("")
fmt.Println("----join--info2")
var info2 UserAndDetail
b, err = testEngine.Table(&Userinfo{}).
@ -516,3 +514,55 @@ func TestExtends4(t *testing.T) {
panic(err)
}
}
func TestExtendsTag(t *testing.T) {
assert.NoError(t, prepareEngine())
table := testEngine.TableInfo(new(Userdetail))
assert.NotNil(t, table)
assert.EqualValues(t, 3, len(table.ColumnsSeq()))
assert.EqualValues(t, "id", table.ColumnsSeq()[0])
assert.EqualValues(t, "intro", table.ColumnsSeq()[1])
assert.EqualValues(t, "profile", table.ColumnsSeq()[2])
table = testEngine.TableInfo(new(Userinfo))
assert.NotNil(t, table)
assert.EqualValues(t, 8, len(table.ColumnsSeq()))
assert.EqualValues(t, "id", table.ColumnsSeq()[0])
assert.EqualValues(t, "username", table.ColumnsSeq()[1])
assert.EqualValues(t, "departname", table.ColumnsSeq()[2])
assert.EqualValues(t, "created", table.ColumnsSeq()[3])
assert.EqualValues(t, "detail_id", table.ColumnsSeq()[4])
assert.EqualValues(t, "height", table.ColumnsSeq()[5])
assert.EqualValues(t, "avatar", table.ColumnsSeq()[6])
assert.EqualValues(t, "is_man", table.ColumnsSeq()[7])
table = testEngine.TableInfo(new(UserAndDetail))
assert.NotNil(t, table)
assert.EqualValues(t, 11, len(table.ColumnsSeq()))
assert.EqualValues(t, "id", table.ColumnsSeq()[0])
assert.EqualValues(t, "username", table.ColumnsSeq()[1])
assert.EqualValues(t, "departname", table.ColumnsSeq()[2])
assert.EqualValues(t, "created", table.ColumnsSeq()[3])
assert.EqualValues(t, "detail_id", table.ColumnsSeq()[4])
assert.EqualValues(t, "height", table.ColumnsSeq()[5])
assert.EqualValues(t, "avatar", table.ColumnsSeq()[6])
assert.EqualValues(t, "is_man", table.ColumnsSeq()[7])
assert.EqualValues(t, "id", table.ColumnsSeq()[8])
assert.EqualValues(t, "intro", table.ColumnsSeq()[9])
assert.EqualValues(t, "profile", table.ColumnsSeq()[10])
cols := table.Columns()
assert.EqualValues(t, 11, len(cols))
assert.EqualValues(t, "Userinfo.Uid", cols[0].FieldName)
assert.EqualValues(t, "Userinfo.Username", cols[1].FieldName)
assert.EqualValues(t, "Userinfo.Departname", cols[2].FieldName)
assert.EqualValues(t, "Userinfo.Created", cols[3].FieldName)
assert.EqualValues(t, "Userinfo.Detail", cols[4].FieldName)
assert.EqualValues(t, "Userinfo.Height", cols[5].FieldName)
assert.EqualValues(t, "Userinfo.Avatar", cols[6].FieldName)
assert.EqualValues(t, "Userinfo.IsMan", cols[7].FieldName)
assert.EqualValues(t, "Userdetail.Id", cols[8].FieldName)
assert.EqualValues(t, "Userdetail.Intro", cols[9].FieldName)
assert.EqualValues(t, "Userdetail.Profile", cols[10].FieldName)
}