gorm/errors_13_test.go
2019-10-21 09:47:39 +08:00

54 lines
2.2 KiB
Go

// +build go1.13
package gorm_test
import (
"errors"
"fmt"
"testing"
"github.com/jinzhu/gorm"
)
func TestNotFound(t *testing.T) {
type testcase struct {
err error
isErrRecordNotFound bool
}
var wrapErrRecordNotFound = fmt.Errorf("get user fail: %w", gorm.ErrRecordNotFound)
var cases = []testcase{
{gorm.ErrRecordNotFound, true},
{gorm.Errors{gorm.ErrRecordNotFound}, true},
{gorm.Errors{gorm.ErrRecordNotFound, gorm.ErrRecordNotFound}, true},
{wrapErrRecordNotFound, true},
{gorm.Errors{wrapErrRecordNotFound}, true},
{gorm.Errors{gorm.ErrRecordNotFound, wrapErrRecordNotFound}, true},
{gorm.Errors{wrapErrRecordNotFound, gorm.ErrRecordNotFound}, true},
{gorm.Errors{wrapErrRecordNotFound, wrapErrRecordNotFound}, true},
{fmt.Errorf("get user fail: %w", gorm.ErrRecordNotFound), true},
{fmt.Errorf("get user fail: %w", wrapErrRecordNotFound), true},
{fmt.Errorf("get user fail: %w", fmt.Errorf("get user fail: %w", wrapErrRecordNotFound)), true},
{fmt.Errorf("get user fail: %w", gorm.Errors{gorm.ErrRecordNotFound}), true},
{fmt.Errorf("get user fail: %w", gorm.Errors{wrapErrRecordNotFound}), true},
{fmt.Errorf("get user fail: %w", gorm.Errors{gorm.ErrRecordNotFound, gorm.ErrRecordNotFound}), true},
{fmt.Errorf("get user fail: %w", gorm.Errors{wrapErrRecordNotFound, wrapErrRecordNotFound}), true},
{fmt.Errorf("get user fail: %w", gorm.Errors{wrapErrRecordNotFound, gorm.ErrRecordNotFound}), true},
{fmt.Errorf("get user fail: %w", gorm.Errors{gorm.ErrRecordNotFound, wrapErrRecordNotFound}), true},
{fmt.Errorf("get user fail: %w", fmt.Errorf("get user fail: %w", gorm.Errors{gorm.ErrRecordNotFound, wrapErrRecordNotFound})), true},
{errors.New("err"), false},
{fmt.Errorf("get user fail: %s", gorm.ErrRecordNotFound), false},
{fmt.Errorf("get user fail: %v", gorm.ErrRecordNotFound), false},
{fmt.Errorf("get user fail: %+v", gorm.ErrRecordNotFound), false},
}
for idx, err := range cases {
isRecordNotFoundError := gorm.IsRecordNotFoundError(err.err)
if isRecordNotFoundError != err.isErrRecordNotFound {
t.Errorf("err: %s(%d) should be ErrRecordNotFound: %v, but got: %v", err.err, idx, err.isErrRecordNotFound, isRecordNotFoundError)
}
}
}