github.com/jaylevin/jenkins-library@v1.230.4/cmd/githubCreateIssue_test.go (about)

     1  package cmd
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/SAP/jenkins-library/pkg/mock"
     7  
     8  	"github.com/stretchr/testify/assert"
     9  
    10  	piperGithub "github.com/SAP/jenkins-library/pkg/github"
    11  )
    12  
    13  func TestTransformConfig(t *testing.T) {
    14  	t.Parallel()
    15  
    16  	t.Run("Success", func(t *testing.T) {
    17  		// init
    18  		filesMock := mock.FilesMock{}
    19  		config := githubCreateIssueOptions{
    20  			Owner:      "TEST",
    21  			Repository: "test",
    22  			Body:       "This is my test body",
    23  			Title:      "This is my title",
    24  			Assignees:  []string{"userIdOne", "userIdTwo"},
    25  		}
    26  		options := piperGithub.CreateIssueOptions{}
    27  
    28  		// test
    29  		err := transformConfig(&config, &options, filesMock.FileRead)
    30  
    31  		// assert
    32  		assert.NoError(t, err)
    33  		assert.Equal(t, config.Token, options.Token)
    34  		assert.Equal(t, config.APIURL, options.APIURL)
    35  		assert.Equal(t, config.Owner, options.Owner)
    36  		assert.Equal(t, config.Repository, options.Repository)
    37  		assert.Equal(t, []byte(config.Body), options.Body)
    38  		assert.Equal(t, config.Title, options.Title)
    39  		assert.Equal(t, config.Assignees, options.Assignees)
    40  		assert.Equal(t, config.UpdateExisting, options.UpdateExisting)
    41  	})
    42  
    43  	t.Run("Success bodyFilePath", func(t *testing.T) {
    44  		// init
    45  		filesMock := mock.FilesMock{}
    46  		filesMock.AddFile("test.md", []byte("Test markdown"))
    47  		config := githubCreateIssueOptions{
    48  			Owner:        "TEST",
    49  			Repository:   "test",
    50  			BodyFilePath: "test.md",
    51  			Title:        "This is my title",
    52  			Assignees:    []string{"userIdOne", "userIdTwo"},
    53  		}
    54  		options := piperGithub.CreateIssueOptions{}
    55  
    56  		// test
    57  		err := transformConfig(&config, &options, filesMock.FileRead)
    58  
    59  		// assert
    60  		assert.NoError(t, err)
    61  		assert.Equal(t, config.Token, options.Token)
    62  		assert.Equal(t, config.APIURL, options.APIURL)
    63  		assert.Equal(t, config.Owner, options.Owner)
    64  		assert.Equal(t, config.Repository, options.Repository)
    65  		assert.Equal(t, []byte("Test markdown"), options.Body)
    66  		assert.Equal(t, config.Title, options.Title)
    67  		assert.Equal(t, config.Assignees, options.Assignees)
    68  		assert.Equal(t, config.UpdateExisting, options.UpdateExisting)
    69  	})
    70  
    71  	t.Run("Error - missing issue body", func(t *testing.T) {
    72  		// init
    73  		filesMock := mock.FilesMock{}
    74  		config := githubCreateIssueOptions{}
    75  		options := piperGithub.CreateIssueOptions{}
    76  
    77  		// test
    78  		err := transformConfig(&config, &options, filesMock.FileRead)
    79  
    80  		// assert
    81  		assert.EqualError(t, err, "either parameter `body` or parameter `bodyFilePath` is required")
    82  	})
    83  }