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.
60 lines
1.5 KiB
60 lines
1.5 KiB
package service |
|
|
|
import ( |
|
"context" |
|
"testing" |
|
"time" |
|
|
|
"go-common/library/ecode" |
|
|
|
. "github.com/smartystreets/goconvey/convey" |
|
) |
|
|
|
func TestService_Generate(t *testing.T) { |
|
Convey("Generate 10 codes in batch", t, func() { |
|
mid := int64(88888970) |
|
num := int64(10) |
|
expireDay := int64(30) |
|
res, err := s.Generate(context.Background(), mid, num, expireDay) |
|
So(err, ShouldBeNil) |
|
So(len(res), ShouldEqual, num) |
|
}) |
|
} |
|
|
|
func TestService_List(t *testing.T) { |
|
Convey("List when account's invite codes is not empty", t, func() { |
|
mid := int64(88888970) |
|
now := time.Now().Unix() |
|
start, end := now-86400, now+86400 |
|
res, err := s.List(context.Background(), mid, start, end) |
|
So(err, ShouldBeNil) |
|
So(len(res), ShouldBeGreaterThan, 0) |
|
}) |
|
} |
|
|
|
func TestService_ConcurrentGeneInviteCode(t *testing.T) { |
|
Convey("Generate 1000 codes in concurrency", t, func() { |
|
num := 1000 |
|
mid := int64(88888970) |
|
ts := time.Now().Unix() |
|
m, err := concurrentGenerateCode(mid, ts, num, _geneSubCount) |
|
So(err, ShouldBeNil) |
|
So(len(m), ShouldEqual, num) |
|
}) |
|
} |
|
|
|
func TestService_FetchMultiInfo(t *testing.T) { |
|
time.Sleep(time.Second * 2) |
|
Convey("Fetch multi info", t, func() { |
|
mids := []int64{88888970} |
|
Convey("when not timeout", func() { |
|
res, err := s.fetchInfos(context.Background(), mids, time.Second) |
|
So(err, ShouldBeNil) |
|
So(len(res), ShouldEqual, len(mids)) |
|
}) |
|
Convey("when timeout", func() { |
|
_, err := s.fetchInfos(context.Background(), mids, time.Millisecond) |
|
So(err, ShouldEqual, ecode.Deadline.Error()) |
|
}) |
|
}) |
|
}
|
|
|