github.com/SAP/jenkins-library@v1.362.0/cmd/karmaExecuteTests_test.go (about)

     1  //go:build unit
     2  // +build unit
     3  
     4  package cmd
     5  
     6  import (
     7  	"errors"
     8  	"testing"
     9  
    10  	"github.com/SAP/jenkins-library/pkg/mock"
    11  
    12  	"github.com/SAP/jenkins-library/pkg/log"
    13  	"github.com/stretchr/testify/assert"
    14  )
    15  
    16  func TestRunKarma(t *testing.T) {
    17  	t.Run("success case", func(t *testing.T) {
    18  		opts := karmaExecuteTestsOptions{Modules: []string{"./test"}, InstallCommand: "npm install test", RunCommand: "npm run test"}
    19  
    20  		e := mock.ExecMockRunner{}
    21  		runKarma(opts, &e)
    22  
    23  		assert.Equal(t, e.Dir[0], "./test", "install command dir incorrect")
    24  		assert.Equal(t, e.Calls[0], mock.ExecCall{Exec: "npm", Params: []string{"install", "test"}}, "install command/params incorrect")
    25  
    26  		assert.Equal(t, e.Dir[1], "./test", "run command dir incorrect")
    27  		assert.Equal(t, e.Calls[1], mock.ExecCall{Exec: "npm", Params: []string{"run", "test"}}, "run command/params incorrect")
    28  
    29  	})
    30  
    31  	t.Run("success case - verbose logging", func(t *testing.T) {
    32  		GeneralConfig.Verbose = true
    33  		defer func() { GeneralConfig.Verbose = false }()
    34  
    35  		opts := karmaExecuteTestsOptions{Modules: []string{"./test"}, InstallCommand: "npm install test", RunCommand: "npm run test"}
    36  
    37  		e := mock.ExecMockRunner{}
    38  		runKarma(opts, &e)
    39  
    40  		assert.Equal(t, "./test", e.Dir[1], "run command dir incorrect")
    41  		assert.Equal(t, mock.ExecCall{Exec: "npm", Params: []string{"run", "test", "--", "--log-level", "DEBUG"}}, e.Calls[1], "run command/params incorrect")
    42  	})
    43  
    44  	t.Run("error case install command", func(t *testing.T) {
    45  		var hasFailed bool
    46  		log.Entry().Logger.ExitFunc = func(int) { hasFailed = true }
    47  
    48  		opts := karmaExecuteTestsOptions{Modules: []string{"./test"}, InstallCommand: "fail install test", RunCommand: "npm run test"}
    49  
    50  		e := mock.ExecMockRunner{ShouldFailOnCommand: map[string]error{"fail install test": errors.New("error case")}}
    51  		runKarma(opts, &e)
    52  		assert.True(t, hasFailed, "expected command to exit with fatal")
    53  	})
    54  
    55  	t.Run("error case run command", func(t *testing.T) {
    56  		var hasFailed bool
    57  		log.Entry().Logger.ExitFunc = func(int) { hasFailed = true }
    58  
    59  		opts := karmaExecuteTestsOptions{Modules: []string{"./test"}, InstallCommand: "npm install test", RunCommand: "npm run test"}
    60  
    61  		e := mock.ExecMockRunner{ShouldFailOnCommand: map[string]error{"npm install test": errors.New("error case")}}
    62  		runKarma(opts, &e)
    63  		assert.True(t, hasFailed, "expected command to exit with fatal")
    64  	})
    65  }