github.com/ActiveState/cli@v0.0.0-20240508170324-6801f60cd051/pkg/projectfile/yamlfield_test.go (about)

     1  package projectfile
     2  
     3  import (
     4  	"fmt"
     5  	"testing"
     6  
     7  	"github.com/stretchr/testify/assert"
     8  )
     9  
    10  func Test_yamlField_update(t *testing.T) {
    11  	type fields struct {
    12  		field string
    13  		value interface{}
    14  	}
    15  	type args struct {
    16  		data []byte
    17  	}
    18  	tests := []struct {
    19  		name    string
    20  		fields  fields
    21  		args    args
    22  		want    []byte
    23  		wantErr assert.ErrorAssertionFunc
    24  	}{
    25  		{
    26  			"Add entry",
    27  			fields{
    28  				"version",
    29  				1,
    30  			},
    31  			args{
    32  				[]byte(`foo: bar`),
    33  			},
    34  			[]byte(`foo: bar
    35  version: 1
    36  `),
    37  			assert.NoError,
    38  		},
    39  		{
    40  			"Update entry",
    41  			fields{
    42  				"version",
    43  				2,
    44  			},
    45  			args{
    46  				[]byte(`foo: bar
    47  version: 1`),
    48  			},
    49  			[]byte(`foo: bar
    50  version: 2`),
    51  			assert.NoError,
    52  		},
    53  		{
    54  			"Update Wrapped entry",
    55  			fields{
    56  				"version",
    57  				2,
    58  			},
    59  			args{
    60  				[]byte(`key1: val1
    61  version: 1
    62  key2: val2`),
    63  			},
    64  			[]byte(`key1: val1
    65  version: 2
    66  key2: val2`),
    67  			assert.NoError,
    68  		},
    69  	}
    70  	for _, tt := range tests {
    71  		t.Run(tt.name, func(t *testing.T) {
    72  			y := &yamlField{
    73  				field: tt.fields.field,
    74  				value: tt.fields.value,
    75  			}
    76  			got, err := y.update(tt.args.data)
    77  			if !tt.wantErr(t, err, fmt.Sprintf("update(%v)", tt.args.data)) {
    78  				return
    79  			}
    80  			assert.Equalf(t, string(tt.want), string(got), "update(%v)", tt.args.data)
    81  		})
    82  	}
    83  }