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.
139 lines
3.8 KiB
139 lines
3.8 KiB
package dao |
|
|
|
import ( |
|
"context" |
|
"fmt" |
|
"testing" |
|
"time" |
|
|
|
"go-common/app/admin/main/reply/model" |
|
|
|
. "github.com/smartystreets/goconvey/convey" |
|
) |
|
|
|
func deleteSubject(d *Dao, oid int64, typ int32) error { |
|
_delSQL := "Delete from reply_subject_%d where oid=? and type=?" |
|
_, err := d.db.Exec(context.Background(), fmt.Sprintf(_delSQL, subHit(oid)), oid, typ) |
|
if err != nil { |
|
return err |
|
} |
|
return nil |
|
} |
|
|
|
func TestSubjectAttr(t *testing.T) { |
|
var ( |
|
sub = &model.Subject{ |
|
Oid: 1, |
|
Type: 1, |
|
} |
|
now = time.Now() |
|
c = context.Background() |
|
) |
|
Convey("get and update a subject", t, WithDao(func(d *Dao) { |
|
_, err := d.AddSubject(c, sub.Mid, sub.Oid, sub.Type, sub.State, now) |
|
So(err, ShouldBeNil) |
|
sub.AttrSet(model.AttrYes, model.SubAttrMonitor) |
|
_, err = d.UpSubjectAttr(c, sub.Oid, sub.Type, sub.Attr, now) |
|
So(err, ShouldBeNil) |
|
sub, err = d.Subject(c, sub.Oid, sub.Type) |
|
So(err, ShouldBeNil) |
|
So(sub.AttrVal(model.SubAttrMonitor), ShouldEqual, model.AttrYes) |
|
})) |
|
Convey("get and update a subject", t, WithDao(func(d *Dao) { |
|
_, err := d.AddSubject(c, sub.Mid, sub.Oid, sub.Type, sub.State, now) |
|
So(err, ShouldBeNil) |
|
sub.AttrSet(model.AttrNo, model.SubAttrMonitor) |
|
_, err = d.UpSubjectAttr(c, sub.Oid, sub.Type, sub.Attr, now) |
|
So(err, ShouldBeNil) |
|
sub, err = d.Subject(c, sub.Oid, sub.Type) |
|
So(err, ShouldBeNil) |
|
So(sub.AttrVal(model.SubAttrMonitor), ShouldEqual, model.AttrNo) |
|
})) |
|
} |
|
|
|
func TestSubjectState(t *testing.T) { |
|
var ( |
|
sub = &model.Subject{ |
|
Oid: 1, |
|
Type: 1, |
|
} |
|
now = time.Now() |
|
c = context.Background() |
|
) |
|
Convey("get and update a subject", t, WithDao(func(d *Dao) { |
|
_, err := d.AddSubject(c, sub.Mid, sub.Oid, sub.Type, sub.State, now) |
|
So(err, ShouldBeNil) |
|
_, err = d.UpSubjectState(c, sub.Oid, sub.Type, model.SubStateForbid, now) |
|
So(err, ShouldBeNil) |
|
sub, err = d.Subject(c, sub.Oid, sub.Type) |
|
So(sub.State, ShouldEqual, model.SubStateForbid) |
|
})) |
|
} |
|
|
|
func TestSubjectCount(t *testing.T) { |
|
d := _d |
|
var ( |
|
sub = &model.Subject{ |
|
Oid: 2, |
|
Type: 3, |
|
} |
|
now = time.Now() |
|
c = context.Background() |
|
) |
|
_, err := d.AddSubject(c, sub.Mid, sub.Oid, sub.Type, sub.State, now) |
|
if err != nil { |
|
t.Logf("add subject failed!%v", err) |
|
t.FailNow() |
|
} |
|
defer deleteSubject(d, 2, 3) |
|
Convey("increase and decrease subject", t, WithDao(func(d *Dao) { |
|
Convey("increase subject rcount", WithDao(func(d *Dao) { |
|
t, err := d.BeginTran(c) |
|
So(err, ShouldBeNil) |
|
rows, err := d.TxIncrSubRCount(t, 2, 3, now) |
|
So(err, ShouldBeNil) |
|
So(rows, ShouldBeGreaterThan, 0) |
|
err = t.Commit() |
|
So(err, ShouldBeNil) |
|
sub, err = d.Subject(c, sub.Oid, sub.Type) |
|
So(err, ShouldBeNil) |
|
So(sub.RCount, ShouldEqual, 1) |
|
})) |
|
Convey("decrease subject rcount", WithDao(func(d *Dao) { |
|
t, err := d.BeginTran(c) |
|
So(err, ShouldBeNil) |
|
rows, err := d.TxDecrSubRCount(t, 2, 3, now) |
|
So(err, ShouldBeNil) |
|
So(rows, ShouldBeGreaterThan, 0) |
|
err = t.Commit() |
|
So(err, ShouldBeNil) |
|
sub, err = d.Subject(c, sub.Oid, sub.Type) |
|
So(err, ShouldBeNil) |
|
So(sub.RCount, ShouldEqual, 0) |
|
})) |
|
Convey("increase subject acount", WithDao(func(d *Dao) { |
|
t, err := d.BeginTran(c) |
|
So(err, ShouldBeNil) |
|
rows, err := d.TxIncrSubACount(t, 2, 3, 123, now) |
|
So(err, ShouldBeNil) |
|
So(rows, ShouldBeGreaterThan, 0) |
|
err = t.Commit() |
|
So(err, ShouldBeNil) |
|
sub, err = d.Subject(c, sub.Oid, sub.Type) |
|
So(err, ShouldBeNil) |
|
So(sub.ACount, ShouldEqual, 123) |
|
})) |
|
Convey("decrease subject acount", WithDao(func(d *Dao) { |
|
t, err := d.BeginTran(c) |
|
So(err, ShouldBeNil) |
|
rows, err := d.TxSubDecrACount(t, 2, 3, 23, now) |
|
So(err, ShouldBeNil) |
|
So(rows, ShouldBeGreaterThan, 0) |
|
err = t.Commit() |
|
So(err, ShouldBeNil) |
|
sub, err = d.Subject(c, sub.Oid, sub.Type) |
|
So(err, ShouldBeNil) |
|
So(sub.ACount, ShouldEqual, 100) |
|
})) |
|
})) |
|
}
|
|
|