Sfoglia il codice sorgente

add test for insert anonymous struct

xormplus 7 anni fa
parent
commit
e1ba628cb2
2 ha cambiato i file con 40 aggiunte e 0 eliminazioni
  1. 39 0
      session_insert_test.go
  2. 1 0
      session_query.go

+ 39 - 0
session_insert_test.go

@@ -757,3 +757,42 @@ func TestInsertMulti4(t *testing.T) {
 	assert.NoError(t, err)
 	assert.NoError(t, err)
 	assert.EqualValues(t, len(users), cnt)
 	assert.EqualValues(t, len(users), cnt)
 }
 }
+
+func TestAnonymousStruct(t *testing.T) {
+	type PlainObject struct {
+		ID   uint64 `json:"id,string" xorm:"'ID' pk autoincr"`
+		Desc string `json:"desc" xorm:"'DESC' notnull"`
+	}
+
+	type PlainFoo struct {
+		PlainObject `xorm:"extends"` // primary key defined in extends struct
+
+		Width  uint32 `json:"width" xorm:"'WIDTH' notnull"`
+		Height uint32 `json:"height" xorm:"'HEIGHT' notnull"`
+
+		Ext struct {
+			F1 uint32 `json:"f1,omitempty"`
+			F2 uint32 `json:"f2,omitempty"`
+		} `json:"ext" xorm:"'EXT' json notnull"`
+	}
+
+	assert.NoError(t, prepareEngine())
+	assertSync(t, new(PlainFoo))
+
+	_, err := testEngine.Insert(&PlainFoo{
+		PlainObject: PlainObject{
+			Desc: "test",
+		},
+		Width:  10,
+		Height: 20,
+
+		Ext: struct {
+			F1 uint32 `json:"f1,omitempty"`
+			F2 uint32 `json:"f2,omitempty"`
+		}{
+			F1: 11,
+			F2: 12,
+		},
+	})
+	assert.NoError(t, err)
+}

+ 1 - 0
session_query.go

@@ -230,6 +230,7 @@ func (session *Session) QueryRows(sqlorArgs ...interface{}) (*core.Rows, error)
 	return rows, nil
 	return rows, nil
 }
 }
 
 
+// QueryString runs a raw sql and return records as []map[string]string
 func (session *Session) QueryString(sqlorArgs ...interface{}) ([]map[string]string, error) {
 func (session *Session) QueryString(sqlorArgs ...interface{}) ([]map[string]string, error) {
 	if session.isAutoClose {
 	if session.isAutoClose {
 		defer session.Close()
 		defer session.Close()