...

Source file src/edge-infra.dev/pkg/edge/api/apierror/sql/sql_error_test.go

Documentation: edge-infra.dev/pkg/edge/api/apierror/sql

     1  package sql
     2  
     3  import (
     4  	"errors"
     5  	"testing"
     6  
     7  	"github.com/jackc/pgconn"
     8  	"github.com/lib/pq"
     9  	"github.com/stretchr/testify/assert"
    10  )
    11  
    12  const (
    13  	msg      = "invalid type for uuid"
    14  	code     = "08000"
    15  	verbose  = "long verbose sql jagon"
    16  	severity = "FATAL"
    17  )
    18  
    19  func TestSetMessage(t *testing.T) {
    20  	sqlerr := New(msg)
    21  	assert.NotNil(t, sqlerr)
    22  	assert.Equal(t, msg, sqlerr.Message)
    23  }
    24  
    25  func TestSetErrorCode(t *testing.T) {
    26  	sqlerr := New("").SetErrorCode(code)
    27  	assert.NotNil(t, sqlerr)
    28  	assert.Equal(t, pq.ErrorCode(code), sqlerr.ErrorCode)
    29  }
    30  
    31  func TestSetErrorType(t *testing.T) {
    32  	_type := EdgeSQLErrType
    33  	sqlerr := New("").SetErrorType(_type)
    34  	assert.NotNil(t, sqlerr)
    35  	assert.Equal(t, _type, sqlerr.ErrorType)
    36  }
    37  
    38  func TestSetVerbose(t *testing.T) {
    39  	sqlerr := New("").SetVerbose(verbose)
    40  	assert.NotNil(t, sqlerr)
    41  	assert.Equal(t, verbose, sqlerr.Verbose)
    42  }
    43  
    44  func TestSetSeverity(t *testing.T) {
    45  	sqlerr := New("").SetSeverity(pq.Efatal)
    46  	assert.NotNil(t, sqlerr)
    47  	assert.Equal(t, pq.Efatal, sqlerr.Severity)
    48  }
    49  
    50  func TestError(t *testing.T) {
    51  	sqlerr := New("").SetMessage(msg)
    52  	assert.NotNil(t, sqlerr)
    53  	assert.Equal(t, msg, sqlerr.Error())
    54  }
    55  
    56  func TestIsError(t *testing.T) {
    57  	err := errors.New(msg)
    58  	sqlerr := Wrap(err)
    59  	assert.NotNil(t, sqlerr)
    60  	assert.True(t, errors.Is(sqlerr, err))
    61  }
    62  
    63  func TestUnmarshalError(t *testing.T) {
    64  	pgErr := &pgconn.PgError{
    65  		Severity: pq.Efatal,
    66  		Code:     "22P02",
    67  		Message:  msg,
    68  	}
    69  	castedPgErr := error(pgErr)
    70  	sqlerr := New("").unmarshalError(castedPgErr)
    71  	assert.Equal(t, pq.ErrorCode(pgErr.Code), sqlerr.ErrorCode)
    72  	assert.Equal(t, EdgeSQLErrType, sqlerr.ErrorType)
    73  	assert.Equal(t, pq.Efatal, sqlerr.Severity)
    74  }
    75  
    76  func TestExtensions(t *testing.T) {
    77  	expectedExts := map[string]interface{}{
    78  		"severity":   severity,
    79  		"statusCode": code,
    80  		"errorType":  EdgeSQLErrType,
    81  	}
    82  	sqlerr := New("").SetMessage(msg).SetSeverity(pq.Efatal).SetErrorCode(code)
    83  	actualExts := sqlerr.Extensions()
    84  	assert.Equal(t, expectedExts["severity"], actualExts["severity"])
    85  	assert.Equal(t, pq.ErrorCode(expectedExts["statusCode"].(string)), actualExts["statusCode"])
    86  	assert.Equal(t, expectedExts["errorType"].(string), actualExts["errorType"])
    87  }
    88  

View as plain text