github.com/hechain20/hechain@v0.0.0-20220316014945-b544036ba106/core/committer/txvalidator/router_test.go (about)

     1  /*
     2  Copyright hechain. All Rights Reserved.
     3  
     4  SPDX-License-Identifier: Apache-2.0
     5  */
     6  
     7  package txvalidator_test
     8  
     9  import (
    10  	"errors"
    11  	"testing"
    12  
    13  	"github.com/hechain20/hechain/core/committer/txvalidator"
    14  	"github.com/hechain20/hechain/core/committer/txvalidator/mocks"
    15  	"github.com/stretchr/testify/mock"
    16  	"github.com/stretchr/testify/require"
    17  )
    18  
    19  func TestRouter(t *testing.T) {
    20  	c14 := &mocks.ApplicationCapabilities{}
    21  	c20 := &mocks.ApplicationCapabilities{}
    22  	mcp := &mocks.CapabilityProvider{}
    23  	mv14 := &mocks.Validator{}
    24  	mv20 := &mocks.Validator{}
    25  
    26  	c14.On("V2_0Validation").Return(false)
    27  	c20.On("V2_0Validation").Return(true)
    28  
    29  	r := &txvalidator.ValidationRouter{
    30  		CapabilityProvider: mcp,
    31  		V14Validator:       mv14,
    32  		V20Validator:       mv20,
    33  	}
    34  
    35  	t.Run("v14 validator returns an error", func(t *testing.T) {
    36  		mcp.On("Capabilities").Return(c14).Once()
    37  		mv14.On("Validate", mock.Anything).Return(errors.New("uh uh")).Once()
    38  
    39  		err := r.Validate(nil)
    40  		require.EqualError(t, err, "uh uh")
    41  	})
    42  
    43  	t.Run("v20 validator returns an error", func(t *testing.T) {
    44  		mcp.On("Capabilities").Return(c20).Once()
    45  		mv20.On("Validate", mock.Anything).Return(errors.New("uh uh")).Once()
    46  
    47  		err := r.Validate(nil)
    48  		require.EqualError(t, err, "uh uh")
    49  	})
    50  
    51  	t.Run("v14 validator returns an error", func(t *testing.T) {
    52  		mcp.On("Capabilities").Return(c14).Once()
    53  		mv14.On("Validate", mock.Anything).Return(nil).Once()
    54  
    55  		err := r.Validate(nil)
    56  		require.NoError(t, err)
    57  	})
    58  
    59  	t.Run("v20 validator returns an error", func(t *testing.T) {
    60  		mcp.On("Capabilities").Return(c20).Once()
    61  		mv20.On("Validate", mock.Anything).Return(nil).Once()
    62  
    63  		err := r.Validate(nil)
    64  		require.NoError(t, err)
    65  	})
    66  }