github.com/jfrog/jfrog-cli-core/v2@v2.51.0/artifactory/commands/utils/precheckrunner/checkrunner_test.go (about)

     1  package precheckrunner
     2  
     3  import (
     4  	"context"
     5  	"fmt"
     6  	"github.com/stretchr/testify/assert"
     7  	"testing"
     8  )
     9  
    10  func TestChecks(t *testing.T) {
    11  	// Empty runner
    12  	runner := NewPreChecksRunner()
    13  	runner.AddCheck(nil)
    14  	assert.Len(t, runner.checks, 0)
    15  	runner.AddCheck(NewCheck("check", nil))
    16  	assert.Len(t, runner.checks, 1)
    17  }
    18  
    19  func TestRunChecks(t *testing.T) {
    20  	// Init
    21  	expectedErr := fmt.Errorf("CHECK_ERROR")
    22  	nSuccess := 3
    23  	nFail := 2
    24  	runner := NewPreChecksRunner()
    25  	successCheck := NewCheck("success", func(args RunArguments) (bool, error) {
    26  		return true, nil
    27  	})
    28  	failCheck := NewCheck("fail", func(args RunArguments) (bool, error) {
    29  		return false, nil
    30  	})
    31  	errCheck := NewCheck("error", func(args RunArguments) (bool, error) {
    32  		return false, expectedErr
    33  	})
    34  	// Empty
    35  	runAndAssert(t, 0, 0, nil, runner)
    36  	// With checks
    37  	for i := 0; i < nSuccess; i++ {
    38  		runner.AddCheck(successCheck)
    39  	}
    40  	runAndAssert(t, uint(nSuccess), 0, nil, runner)
    41  	// With failed checks
    42  	for i := 0; i < nFail; i++ {
    43  		runner.AddCheck(failCheck)
    44  	}
    45  	runAndAssert(t, uint(nSuccess), uint(nFail), nil, runner)
    46  	// With check that has error
    47  	runner.AddCheck(errCheck)
    48  	runAndAssert(t, 0, 0, expectedErr, runner)
    49  }
    50  
    51  func runAndAssert(t *testing.T, expectedSuccess, expectedFail uint, shouldHaveErr error, runner *PreCheckRunner) {
    52  	err := runner.Run(context.TODO(), nil)
    53  	if shouldHaveErr != nil {
    54  		assert.Errorf(t, err, shouldHaveErr.Error())
    55  	} else {
    56  		assert.NoError(t, err)
    57  		assert.Equal(t, expectedSuccess, runner.status.successes)
    58  		assert.Equal(t, expectedFail, runner.status.failures)
    59  		assert.Len(t, runner.checks, int(expectedSuccess+expectedFail))
    60  	}
    61  }