You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
305 lines
11 KiB
305 lines
11 KiB
package dao |
|
|
|
import ( |
|
"context" |
|
"database/sql" |
|
"fmt" |
|
|
|
"reflect" |
|
"testing" |
|
"time" |
|
|
|
"go-common/app/job/main/member/model" |
|
xsql "go-common/library/database/sql" |
|
|
|
"github.com/bouk/monkey" |
|
. "github.com/smartystreets/goconvey/convey" |
|
) |
|
|
|
func TestDao_SetBaseInfo(t *testing.T) { |
|
r := &model.BaseInfo{Mid: 100, Sex: 1, Name: "lgs", Face: "face", Sign: "sign", Rank: 3} |
|
Convey("SetBaseInfo", t, func() { |
|
Convey("SetBaseInfo success", func() { |
|
monkey.PatchInstanceMethod(reflect.TypeOf(d.db), "Exec", func(_ *xsql.DB, _ context.Context, _ string, _ ...interface{}) (sql.Result, error) { |
|
return nil, nil |
|
}) |
|
defer monkey.UnpatchAll() |
|
err := d.SetBaseInfo(context.TODO(), r) |
|
So(err, ShouldBeNil) |
|
}) |
|
Convey("SetBaseInfo failed", func() { |
|
monkey.PatchInstanceMethod(reflect.TypeOf(d.db), "Exec", func(_ *xsql.DB, _ context.Context, _ string, _ ...interface{}) (sql.Result, error) { |
|
return nil, fmt.Errorf("cannot connect database error") |
|
}) |
|
defer monkey.UnpatchAll() |
|
err := d.SetBaseInfo(context.TODO(), r) |
|
So(err, ShouldNotBeNil) |
|
}) |
|
}) |
|
} |
|
|
|
func TestDao_UpdateSign(t *testing.T) { |
|
Convey("SetSign", t, func() { |
|
Convey("SetSign success", func() { |
|
monkey.PatchInstanceMethod(reflect.TypeOf(d.db), "Exec", func(_ *xsql.DB, _ context.Context, _ string, _ ...interface{}) (sql.Result, error) { |
|
return nil, nil |
|
}) |
|
defer monkey.UnpatchAll() |
|
err := d.SetSign(context.TODO(), 1, "my sign") |
|
So(err, ShouldBeNil) |
|
}) |
|
Convey("SetSign failed", func() { |
|
monkey.PatchInstanceMethod(reflect.TypeOf(d.db), "Exec", func(_ *xsql.DB, _ context.Context, _ string, _ ...interface{}) (sql.Result, error) { |
|
return nil, fmt.Errorf("cannot connect database error") |
|
}) |
|
defer monkey.UnpatchAll() |
|
err := d.SetSign(context.TODO(), 1, "my sign") |
|
So(err, ShouldNotBeNil) |
|
}) |
|
}) |
|
} |
|
|
|
func TestDao_SetName(t *testing.T) { |
|
Convey("SetName", t, func() { |
|
Convey("SetName success", func() { |
|
monkey.PatchInstanceMethod(reflect.TypeOf(d.db), "Exec", func(_ *xsql.DB, _ context.Context, _ string, _ ...interface{}) (sql.Result, error) { |
|
return nil, nil |
|
}) |
|
defer monkey.UnpatchAll() |
|
err := d.SetName(context.TODO(), 1, "myname") |
|
So(err, ShouldBeNil) |
|
}) |
|
Convey("SetName failed", func() { |
|
monkey.PatchInstanceMethod(reflect.TypeOf(d.db), "Exec", func(_ *xsql.DB, _ context.Context, _ string, _ ...interface{}) (sql.Result, error) { |
|
return nil, fmt.Errorf("cannot connect database error") |
|
}) |
|
defer monkey.UnpatchAll() |
|
err := d.SetName(context.TODO(), 1, "myname") |
|
So(err, ShouldNotBeNil) |
|
}) |
|
}) |
|
} |
|
|
|
func TestDao_UpdateFace(t *testing.T) { |
|
Convey("SetFaceRank", t, func() { |
|
Convey("SetFaceRank success", func() { |
|
err := d.SetFace(context.TODO(), int64(1), "http://face") |
|
So(err, ShouldBeNil) |
|
}) |
|
Convey("SetFaceRank failed", func() { |
|
monkey.PatchInstanceMethod(reflect.TypeOf(d.db), "Exec", func(_ *xsql.DB, _ context.Context, _ string, _ ...interface{}) (sql.Result, error) { |
|
return nil, fmt.Errorf("cannot connect database error") |
|
}) |
|
defer monkey.UnpatchAll() |
|
err := d.SetFace(context.TODO(), int64(1), "http://face") |
|
So(err, ShouldNotBeNil) |
|
}) |
|
}) |
|
} |
|
|
|
func TestDao_SelMoral(t *testing.T) { |
|
Convey("SelMoral", t, func() { |
|
Convey("SelMoral success", func() { |
|
monkey.PatchInstanceMethod(reflect.TypeOf(d.accdb.QueryRow(context.TODO(), _SelMoral, 1)), "Scan", func(_ *xsql.Row, _ ...interface{}) error { |
|
return nil |
|
}) |
|
defer monkey.UnpatchAll() |
|
moral, err := d.SelMoral(context.TODO(), int64(8)) |
|
So(err, ShouldBeNil) |
|
So(moral, ShouldNotBeNil) |
|
}) |
|
Convey("SelMoral error", func() { |
|
monkey.PatchInstanceMethod(reflect.TypeOf(d.accdb.QueryRow(context.TODO(), _SelMoral, 1)), "Scan", func(_ *xsql.Row, _ ...interface{}) error { |
|
return fmt.Errorf("row.Scan error") |
|
}) |
|
defer monkey.UnpatchAll() |
|
moral, err := d.SelMoral(context.TODO(), int64(8)) |
|
So(err, ShouldNotBeNil) |
|
So(moral, ShouldNotBeNil) |
|
}) |
|
Convey("SelMoral no record", func() { |
|
monkey.PatchInstanceMethod(reflect.TypeOf(d.accdb.QueryRow(context.TODO(), _SelMoral, 1)), "Scan", func(_ *xsql.Row, _ ...interface{}) error { |
|
return sql.ErrNoRows |
|
}) |
|
defer monkey.UnpatchAll() |
|
moral, err := d.SelMoral(context.TODO(), int64(8)) |
|
So(err, ShouldBeNil) |
|
So(moral, ShouldBeNil) |
|
}) |
|
}) |
|
} |
|
|
|
func TestDao_IncrMoral(t *testing.T) { |
|
Convey("IncrMoral", t, func() { |
|
Convey("AuditQueuingFace success", func() { |
|
_, err := d.RecoverMoral(context.TODO(), 2, 100, 1, time.Now().Format("2006-01-02")) |
|
So(err, ShouldBeNil) |
|
}) |
|
Convey("AuditQueuingFace failed", func() { |
|
monkey.PatchInstanceMethod(reflect.TypeOf(d.db), "Exec", func(_ *xsql.DB, _ context.Context, _ string, _ ...interface{}) (sql.Result, error) { |
|
return nil, fmt.Errorf("cannot connect database error") |
|
}) |
|
defer monkey.UnpatchAll() |
|
_, err := d.RecoverMoral(context.TODO(), 2, 100, 1, time.Now().Format("2006-01-02")) |
|
So(err, ShouldNotBeNil) |
|
}) |
|
}) |
|
} |
|
|
|
func TestDao_AuditQueuingFace(t *testing.T) { |
|
Convey("AuditQueuingFace", t, func() { |
|
Convey("AuditQueuingFace success", func() { |
|
err := d.AuditQueuingFace(context.TODO(), "/bfs/face/7e68723b9d3664ac3773c1f3c26d5e2bfabc0f22.jpg", "", 0) |
|
So(err, ShouldBeNil) |
|
}) |
|
Convey("AuditQueuingFace failed", func() { |
|
monkey.PatchInstanceMethod(reflect.TypeOf(d.db), "Exec", func(_ *xsql.DB, _ context.Context, _ string, _ ...interface{}) (sql.Result, error) { |
|
return nil, fmt.Errorf("cannot connect database error") |
|
}) |
|
defer monkey.UnpatchAll() |
|
err := d.AuditQueuingFace(context.TODO(), "/bfs/face/7e68723b9d3664ac3773c1f3c26d5e2bfabc0f22.jpg", "", 0) |
|
So(err, ShouldNotBeNil) |
|
}) |
|
}) |
|
} |
|
|
|
func TestDao_BaseInfo(t *testing.T) { |
|
Convey("BaseInfo", t, func() { |
|
Convey("BaseInfo success", func() { |
|
monkey.PatchInstanceMethod(reflect.TypeOf(d.accdb.QueryRow(context.TODO(), _SelBaseInfo, 1)), "Scan", func(_ *xsql.Row, _ ...interface{}) error { |
|
return nil |
|
}) |
|
defer monkey.UnpatchAll() |
|
r, err := d.BaseInfo(context.TODO(), 100) |
|
So(err, ShouldBeNil) |
|
So(r, ShouldNotBeNil) |
|
}) |
|
Convey("BaseInfo error", func() { |
|
monkey.PatchInstanceMethod(reflect.TypeOf(d.accdb.QueryRow(context.TODO(), _SelBaseInfo, 1)), "Scan", func(_ *xsql.Row, _ ...interface{}) error { |
|
return fmt.Errorf("row.Scan error") |
|
}) |
|
defer monkey.UnpatchAll() |
|
r, err := d.BaseInfo(context.TODO(), 11) |
|
So(err, ShouldNotBeNil) |
|
So(r, ShouldBeNil) |
|
}) |
|
Convey("BaseInfo no record", func() { |
|
monkey.PatchInstanceMethod(reflect.TypeOf(d.accdb.QueryRow(context.TODO(), _SelBaseInfo, 1)), "Scan", func(_ *xsql.Row, _ ...interface{}) error { |
|
return sql.ErrNoRows |
|
}) |
|
defer monkey.UnpatchAll() |
|
r, err := d.BaseInfo(context.TODO(), 11) |
|
So(err, ShouldBeNil) |
|
So(r, ShouldBeNil) |
|
}) |
|
}) |
|
|
|
} |
|
|
|
// TestDao_RecoverMoral update |
|
func TestDao_RecoverMoral(t *testing.T) { |
|
Convey("RecoverMoral", t, func() { |
|
Convey("RecoverMoral success", func() { |
|
_, err := d.RecoverMoral(context.TODO(), 121, 1, 1, time.Now().Format("2006-01-02")) |
|
So(err, ShouldBeNil) |
|
}) |
|
Convey("RecoverMoral failed", func() { |
|
monkey.PatchInstanceMethod(reflect.TypeOf(d.db), "Exec", func(_ *xsql.DB, _ context.Context, _ string, _ ...interface{}) (sql.Result, error) { |
|
return nil, fmt.Errorf("cannot connect database error") |
|
}) |
|
defer monkey.UnpatchAll() |
|
r, err := d.RecoverMoral(context.TODO(), 121, 1, 1, time.Now().Format("2006-01-02")) |
|
So(err, ShouldNotBeNil) |
|
So(r, ShouldEqual, 0) |
|
}) |
|
}) |
|
} |
|
|
|
func TestDao_SetSign(t *testing.T) { |
|
Convey("SetSign", t, func() { |
|
Convey("SetSign success", func() { |
|
monkey.PatchInstanceMethod(reflect.TypeOf(d.db), "Exec", func(_ *xsql.DB, _ context.Context, _ string, _ ...interface{}) (sql.Result, error) { |
|
return nil, nil |
|
}) |
|
defer monkey.UnpatchAll() |
|
err := d.SetSign(context.TODO(), 100, fmt.Sprintf("sign%s", time.Minute.String())) |
|
So(err, ShouldBeNil) |
|
}) |
|
Convey("SetSign failed", func() { |
|
monkey.PatchInstanceMethod(reflect.TypeOf(d.db), "Exec", func(_ *xsql.DB, _ context.Context, _ string, _ ...interface{}) (sql.Result, error) { |
|
return nil, fmt.Errorf("cannot connect database error") |
|
}) |
|
defer monkey.UnpatchAll() |
|
err := d.SetSign(context.TODO(), 100, fmt.Sprintf("sign%s", time.Minute.String())) |
|
So(err, ShouldNotBeNil) |
|
}) |
|
}) |
|
} |
|
|
|
func TestDao_SetOfficial(t *testing.T) { |
|
Convey("SetOfficial", t, func() { |
|
Convey("SetOfficial success", func() { |
|
monkey.PatchInstanceMethod(reflect.TypeOf(d.db), "Exec", func(_ *xsql.DB, _ context.Context, _ string, _ ...interface{}) (sql.Result, error) { |
|
return nil, nil |
|
}) |
|
defer monkey.UnpatchAll() |
|
err := d.SetOfficial(context.TODO(), 100, 1, fmt.Sprintf("title%s", time.Minute.String()), "it's a test") |
|
So(err, ShouldBeNil) |
|
}) |
|
Convey("SetOfficial failed", func() { |
|
monkey.PatchInstanceMethod(reflect.TypeOf(d.db), "Exec", func(_ *xsql.DB, _ context.Context, _ string, _ ...interface{}) (sql.Result, error) { |
|
return nil, fmt.Errorf("cannot connect database error") |
|
}) |
|
defer monkey.UnpatchAll() |
|
err := d.SetOfficial(context.TODO(), 100, 1, fmt.Sprintf("title%s", time.Minute.String()), "it's a test") |
|
So(err, ShouldNotBeNil) |
|
}) |
|
}) |
|
} |
|
|
|
func TestDao_SetFace(t *testing.T) { |
|
Convey("SetFace", t, func() { |
|
err := d.SetFace(context.TODO(), 100, fmt.Sprintf("face%s", time.Minute.String())) |
|
So(err, ShouldBeNil) |
|
}) |
|
|
|
Convey("SetFace", t, func() { |
|
Convey("SetFace success", func() { |
|
monkey.PatchInstanceMethod(reflect.TypeOf(d.db), "Exec", func(_ *xsql.DB, _ context.Context, _ string, _ ...interface{}) (sql.Result, error) { |
|
return nil, nil |
|
}) |
|
defer monkey.UnpatchAll() |
|
err := d.SetFace(context.TODO(), 100, fmt.Sprintf("face%s", time.Minute.String())) |
|
So(err, ShouldBeNil) |
|
}) |
|
Convey("SetFace failed", func() { |
|
monkey.PatchInstanceMethod(reflect.TypeOf(d.db), "Exec", func(_ *xsql.DB, _ context.Context, _ string, _ ...interface{}) (sql.Result, error) { |
|
return nil, fmt.Errorf("cannot connect database error") |
|
}) |
|
defer monkey.UnpatchAll() |
|
err := d.SetFace(context.TODO(), 100, fmt.Sprintf("face%s", time.Minute.String())) |
|
So(err, ShouldNotBeNil) |
|
}) |
|
}) |
|
} |
|
|
|
func TestDao_InitBase(t *testing.T) { |
|
Convey("InitBase", t, func() { |
|
Convey("InitBase success", func() { |
|
monkey.PatchInstanceMethod(reflect.TypeOf(d.db), "Exec", func(_ *xsql.DB, _ context.Context, _ string, _ ...interface{}) (sql.Result, error) { |
|
return nil, nil |
|
}) |
|
defer monkey.UnpatchAll() |
|
err := d.InitBase(context.TODO(), 1) |
|
So(err, ShouldBeNil) |
|
}) |
|
Convey("InitBase failed", func() { |
|
monkey.PatchInstanceMethod(reflect.TypeOf(d.db), "Exec", func(_ *xsql.DB, _ context.Context, _ string, _ ...interface{}) (sql.Result, error) { |
|
return nil, fmt.Errorf("cannot connect database error") |
|
}) |
|
defer monkey.UnpatchAll() |
|
err := d.InitBase(context.TODO(), 1) |
|
So(err, ShouldNotBeNil) |
|
}) |
|
}) |
|
}
|
|
|