From 2b06f05d40c8a2523e8a5eed45e27bb9ae9a323a Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Wed, 25 Oct 2017 23:54:10 +0800 Subject: [PATCH] fix extends tag --- tag.go | 7 +++--- tag_extends_test.go | 56 ++++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 57 insertions(+), 6 deletions(-) diff --git a/tag.go b/tag.go index 8c7f5b95..40405cc7 100644 --- a/tag.go +++ b/tag.go @@ -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: diff --git a/tag_extends_test.go b/tag_extends_test.go index 6c72a6dc..f0af21d7 100644 --- a/tag_extends_test.go +++ b/tag_extends_test.go @@ -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) +}