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 }