github.com/SAP/jenkins-library@v1.362.0/pkg/versioning/yamlfile_test.go (about)

     1  //go:build unit
     2  // +build unit
     3  
     4  package versioning
     5  
     6  import (
     7  	"fmt"
     8  	"os"
     9  	"testing"
    10  
    11  	"github.com/stretchr/testify/assert"
    12  )
    13  
    14  func TestYAMLfileGetVersion(t *testing.T) {
    15  	t.Run("success case", func(t *testing.T) {
    16  		yamlfile := YAMLfile{
    17  			path:     "my.yaml",
    18  			readFile: func(filename string) ([]byte, error) { return []byte(`version: 1.2.3`), nil },
    19  		}
    20  		version, err := yamlfile.GetVersion()
    21  		assert.NoError(t, err)
    22  		assert.Equal(t, "1.2.3", version)
    23  	})
    24  
    25  	t.Run("error case", func(t *testing.T) {
    26  		yamlfile := YAMLfile{
    27  			path:         "my.yaml",
    28  			versionField: "theversion",
    29  			readFile:     func(filename string) ([]byte, error) { return []byte{}, fmt.Errorf("read error") },
    30  		}
    31  		version, err := yamlfile.GetVersion()
    32  		assert.EqualError(t, err, "failed to get key theversion: failed to read file 'my.yaml': read error")
    33  		assert.Equal(t, "", version)
    34  	})
    35  }
    36  
    37  func TestYAMLfileGetArtifactID(t *testing.T) {
    38  	t.Run("success case", func(t *testing.T) {
    39  		yamlfile := YAMLfile{
    40  			path:     "my.yaml",
    41  			readFile: func(filename string) ([]byte, error) { return []byte(`ID: artifact-id`), nil },
    42  		}
    43  		artifactID, err := yamlfile.GetArtifactID()
    44  		assert.NoError(t, err)
    45  		assert.Equal(t, "artifact-id", artifactID)
    46  	})
    47  
    48  	t.Run("error case", func(t *testing.T) {
    49  		yamlfile := YAMLfile{
    50  			path:            "my.yaml",
    51  			artifactIDField: "theArtifact",
    52  			readFile:        func(filename string) ([]byte, error) { return []byte{}, fmt.Errorf("read error") },
    53  		}
    54  		artifactID, err := yamlfile.GetArtifactID()
    55  		assert.EqualError(t, err, "failed to get key theArtifact: failed to read file 'my.yaml': read error")
    56  		assert.Equal(t, "", artifactID)
    57  	})
    58  }
    59  
    60  func TestYAMLfileSetVersion(t *testing.T) {
    61  	t.Run("success case", func(t *testing.T) {
    62  		var content []byte
    63  		yamlfile := YAMLfile{
    64  			path:         "my.yaml",
    65  			versionField: "theversion",
    66  			readFile:     func(filename string) ([]byte, error) { return []byte(`theversion: 1.2.3`), nil },
    67  			writeFile:    func(filename string, filecontent []byte, mode os.FileMode) error { content = filecontent; return nil },
    68  		}
    69  		err := yamlfile.SetVersion("1.2.4")
    70  		assert.NoError(t, err)
    71  		assert.Contains(t, string(content), "theversion: 1.2.4")
    72  	})
    73  
    74  	t.Run("error case", func(t *testing.T) {
    75  		yamlfile := YAMLfile{
    76  			path:         "my.yaml",
    77  			versionField: "theversion",
    78  			readFile:     func(filename string) ([]byte, error) { return []byte(`theversion: 1.2.3`), nil },
    79  			writeFile:    func(filename string, filecontent []byte, mode os.FileMode) error { return fmt.Errorf("write error") },
    80  		}
    81  		err := yamlfile.SetVersion("1.2.4")
    82  		assert.EqualError(t, err, "failed to write file 'my.yaml': write error")
    83  	})
    84  }