You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
72 lines
1.2 KiB
Go
72 lines
1.2 KiB
Go
package mongo
|
|
|
|
import (
|
|
"errors"
|
|
"testing"
|
|
|
|
"github.com/globalsign/mgo"
|
|
"github.com/stretchr/testify/assert"
|
|
|
|
"zero/core/stringx"
|
|
)
|
|
|
|
func TestKeepPromise_accept(t *testing.T) {
|
|
p := new(mockPromise)
|
|
kp := keepablePromise{
|
|
promise: p,
|
|
log: func(error) {},
|
|
}
|
|
assert.Nil(t, kp.accept(nil))
|
|
assert.Equal(t, mgo.ErrNotFound, kp.accept(mgo.ErrNotFound))
|
|
}
|
|
|
|
func TestKeepPromise_keep(t *testing.T) {
|
|
tests := []struct {
|
|
err error
|
|
accepted bool
|
|
reason string
|
|
}{
|
|
{
|
|
err: nil,
|
|
accepted: true,
|
|
reason: "",
|
|
},
|
|
{
|
|
err: mgo.ErrNotFound,
|
|
accepted: true,
|
|
reason: "",
|
|
},
|
|
{
|
|
err: errors.New("any"),
|
|
accepted: false,
|
|
reason: "any",
|
|
},
|
|
}
|
|
|
|
for _, test := range tests {
|
|
t.Run(stringx.RandId(), func(t *testing.T) {
|
|
p := new(mockPromise)
|
|
kp := keepablePromise{
|
|
promise: p,
|
|
log: func(error) {},
|
|
}
|
|
assert.Equal(t, test.err, kp.keep(test.err))
|
|
assert.Equal(t, test.accepted, p.accepted)
|
|
assert.Equal(t, test.reason, p.reason)
|
|
})
|
|
}
|
|
}
|
|
|
|
type mockPromise struct {
|
|
accepted bool
|
|
reason string
|
|
}
|
|
|
|
func (p *mockPromise) Accept() {
|
|
p.accepted = true
|
|
}
|
|
|
|
func (p *mockPromise) Reject(reason string) {
|
|
p.reason = reason
|
|
}
|