github.imxd.top/gopinath-langote/1build@v1.2.0/testing/fixtures/command_set_fixtures.go (about)

     1  package fixtures
     2  
     3  import (
     4  	"github.com/gopinath-langote/1build/testing/def"
     5  	"github.com/gopinath-langote/1build/testing/utils"
     6  	"github.com/stretchr/testify/assert"
     7  	"io/ioutil"
     8  	"testing"
     9  )
    10  
    11  func FeatureSetTestsData() []Test {
    12  	feature := "set"
    13  
    14  	return []Test{
    15  		shouldSetNewCommand(feature),
    16  		shouldUpdateExistingCommand(feature),
    17  		shouldFailWhenConfigurationFileIsNotFound(feature),
    18  		shouldFailWhenConfigurationFileIsInInvalidFormat(feature),
    19  	}
    20  }
    21  
    22  func shouldSetNewCommand(feature string) Test {
    23  
    24  	defaultFileContent := `
    25  project: Sample Project
    26  commands:
    27    - build: go build
    28  `
    29  
    30  	expectedOutput := `project: Sample Project
    31  commands:
    32    - build: go build
    33    - test: go test
    34  `
    35  
    36  	return Test{
    37  		Feature: feature,
    38  		Name:    "shouldSetNewCommand",
    39  		CmdArgs: []string{"set", "test", "go test"},
    40  		Setup: func(dir string) error {
    41  			return utils.CreateConfigFile(dir, defaultFileContent)
    42  		},
    43  		Assertion: func(dir string, actualOutput string, t *testing.T) bool {
    44  			filePath := dir + "/" + def.ConfigFileName
    45  			assert.FileExists(t, dir+"/"+def.ConfigFileName)
    46  			content, _ := ioutil.ReadFile(filePath)
    47  			return assert.Contains(t, string(content), expectedOutput)
    48  		},
    49  	}
    50  }
    51  
    52  func shouldUpdateExistingCommand(feature string) Test {
    53  
    54  	defaultFileContent := `
    55  project: Sample Project
    56  commands:
    57    - build: go build
    58  `
    59  
    60  	expectedOutput := `project: Sample Project
    61  commands:
    62    - build: go build -o
    63  `
    64  
    65  	return Test{
    66  		Feature: feature,
    67  		Name:    "shouldUpdateExistingCommand",
    68  		CmdArgs: []string{"set", "build", "go build -o"},
    69  		Setup: func(dir string) error {
    70  			return utils.CreateConfigFile(dir, defaultFileContent)
    71  		},
    72  		Assertion: func(dir string, actualOutput string, t *testing.T) bool {
    73  			filePath := dir + "/" + def.ConfigFileName
    74  			assert.FileExists(t, dir+"/"+def.ConfigFileName)
    75  			content, _ := ioutil.ReadFile(filePath)
    76  			return assert.Contains(t, string(content), expectedOutput)
    77  		},
    78  	}
    79  }
    80  
    81  func shouldFailWhenConfigurationFileIsNotFound(feature string) Test {
    82  	return Test{
    83  		Feature: feature,
    84  		Name:    "shouldFailWhenConfigurationFileIsNotFound",
    85  		CmdArgs: []string{"set", "build", "go build -o"},
    86  		Assertion: func(dir string, actualOutput string, t *testing.T) bool {
    87  			return assert.Contains(t, actualOutput, "no '"+def.ConfigFileName+"' file found in current directory")
    88  		},
    89  	}
    90  }
    91  
    92  func shouldFailWhenConfigurationFileIsInInvalidFormat(feature string) Test {
    93  	return Test{
    94  		Feature: feature,
    95  		Name:    "shouldFailWhenConfigurationFileIsInInvalidFormat",
    96  		CmdArgs: []string{"set", "build", "go build"},
    97  		Setup: func(dir string) error {
    98  			return utils.CreateConfigFile(dir, "invalid config content")
    99  		},
   100  		Assertion: func(dir string, actualOutput string, t *testing.T) bool {
   101  			return assert.Contains(t, actualOutput, "Unable to parse '"+def.ConfigFileName+"' config file. Make sure file is in correct format.")
   102  		},
   103  	}
   104  }