Skip to content
Snippets Groups Projects
Select Git revision
  • 90269aff2bae12a05d5394eb223e08ff6c2bdb2f
  • master default protected
  • refactor/PRXS-3053-Files
  • feature/PRXS-3143-3235-ReferenceOptions
  • feature/PRXS-3421-ImplementNewRefAPI
  • feature/PRXS-3143-LimitReferenceFields
  • feature/PRXS-3234-FeaturePruneIdents
  • feature/3149-LocaleCodeAsID-Feature
  • feature/PRXS-3383-CollectionsRankSortAPI
  • PRXS-3421-RecursiveReferences
  • feature/PRXS-3383-CollectionsSort
  • feature/3109-SerializeFeature
  • release/0.33
  • feature/3109-RecoverySchema
  • feature/3109-feature
  • fix/PRXS-3369-ValidateFields
  • refactor/PRXS-3306-MovePkgGroup1
  • refactor/6-pkg-refactor-expr
  • fix/PRXS-3360-TemplateBuilderPatch
  • feature/3293-MongoV2
  • feature/3272-GoVersionUp
  • v0.33.1
  • v0.32.0
  • v0.31.1
  • v0.31.0
  • v0.30.0
  • v0.29.0
  • v0.28.0
  • v0.27.0-alpha.1+16
  • v0.27.0-alpha.1+15
  • v0.27.0-alpha.1+14
  • v0.27.0-alpha.1+13
  • v0.27.0-alpha.1+12
  • v0.27.0-alpha.1+11
  • v0.27.0-alpha.1+10
  • v0.27.0-alpha.1+9
  • v0.27.0-alpha.1+8
  • v0.27.0-alpha.1+7
  • v0.27.0-alpha.1+6
  • v0.27.0-alpha.1+5
  • v0.27.0-alpha.1+4
41 results

caching_middleware.go

Blame
  • client_test.go 2.33 KiB
    package extension
    
    import (
    	"testing"
    
    	"git.perx.ru/perxis/perxis-go/pkg/errors"
    	"github.com/stretchr/testify/assert"
    	"github.com/stretchr/testify/require"
    )
    
    func TestGetErrors(t *testing.T) {
    
    	getOut := func(results ...*RequestResult) results { return &InstallResponse{Results: results} }
    
    	tests := []struct {
    		name     string
    		out      results
    		err      error
    		wrapErr  error
    		checkErr func(t *testing.T, err error)
    	}{
    		{
    			name: "no errors",
    			out:  getOut(&RequestResult{State: RequestOK, Extension: "a"}),
    		},
    		{
    			name:    "no error",
    			out:     getOut(&RequestResult{State: RequestOK, Extension: "a"}),
    			wrapErr: ErrInstall,
    		},
    		{
    			name:    "one errored result",
    			out:     getOut(&RequestResult{State: RequestError, Extension: "a", Error: "some err", Msg: "Ошибка"}),
    			wrapErr: ErrInstall,
    			checkErr: func(t *testing.T, err error) {
    				assert.ErrorIs(t, err, ErrInstall)
    				errs := errors.GetErrors(err)
    				require.Len(t, errs, 1)
    
    				extErr := errs[0]
    				assert.Equal(t, "a", ExtensionFromError(extErr))
    				assert.Equal(t, "some err", extErr.Error())
    				assert.Equal(t, "Ошибка", errors.GetDetail(extErr))
    			},
    		},
    		{
    			name: "multiple results, some of them errored",
    			out: getOut(
    				&RequestResult{State: RequestError, Extension: "a", Error: "some err a", Msg: "Ошибка А"},
    				&RequestResult{State: RequestOK, Extension: "b"},
    				&RequestResult{State: RequestError, Extension: "c", Error: "some err c", Msg: "Ошибка С"},
    				&RequestResult{State: RequestOK, Extension: "d"},
    			),
    			wrapErr: ErrInstall,
    			checkErr: func(t *testing.T, err error) {
    				assert.ErrorIs(t, err, ErrInstall)
    				errs := errors.GetErrors(err)
    				require.Len(t, errs, 2)
    
    				extErr1 := errs[0]
    				assert.Equal(t, "a", ExtensionFromError(extErr1))
    				assert.Equal(t, "some err a", extErr1.Error())
    				assert.Equal(t, "Ошибка А", errors.GetDetail(extErr1))
    
    				extErr2 := errs[1]
    				assert.Equal(t, "c", ExtensionFromError(extErr2))
    				assert.Equal(t, "some err c", extErr2.Error())
    				assert.Equal(t, "Ошибка С", errors.GetDetail(extErr2))
    			},
    		},
    	}
    	for _, tt := range tests {
    		t.Run(tt.name, func(t *testing.T) {
    			err := getErrors(tt.out, tt.err, tt.wrapErr)
    			if tt.checkErr != nil {
    				require.Error(t, err)
    				tt.checkErr(t, err)
    			} else {
    				require.NoError(t, err)
    			}
    		})
    	}
    }