github.com/ouraigua/jenkins-library@v0.0.0-20231028010029-fbeaf2f3aa9b/pkg/abap/aakaas/versionables_test.go (about)

     1  //go:build unit
     2  // +build unit
     3  
     4  package aakaas
     5  
     6  import (
     7  	"testing"
     8  
     9  	abapbuild "github.com/SAP/jenkins-library/pkg/abap/build"
    10  	"github.com/stretchr/testify/assert"
    11  )
    12  
    13  func TestCvResolve(t *testing.T) {
    14  	//arrange
    15  	conn := new(abapbuild.Connector)
    16  	mc := abapbuild.NewMockClient()
    17  	conn.Client = &mc
    18  	vers := versionable{}
    19  
    20  	t.Run("Factory Success", func(t *testing.T) {
    21  		//act
    22  		err := vers.constructVersionable("DummyComp", "1.2.3", *conn, "")
    23  		//assert
    24  		assert.NoError(t, err)
    25  		assert.Equal(t, "DummyComp", vers.Name)
    26  		assert.Equal(t, "1", vers.TechRelease)
    27  		assert.Equal(t, "0002", vers.TechSpLevel)
    28  		assert.Equal(t, "0003", vers.TechPatchLevel)
    29  		assert.Equal(t, "1.2.3", vers.Version)
    30  	})
    31  	t.Run("Factory No Name", func(t *testing.T) {
    32  		err := vers.constructVersionable("", "1.2.3", *conn, "")
    33  		assert.Error(t, err)
    34  	})
    35  	t.Run("Factory Version too long", func(t *testing.T) {
    36  		err := vers.constructVersionable("DummyComp", "1.0.0.0", *conn, "")
    37  		assert.Error(t, err)
    38  	})
    39  	t.Run("Factory Version too short", func(t *testing.T) {
    40  
    41  		err := vers.constructVersionable("DummyComp", "1.0", *conn, "")
    42  		assert.Error(t, err)
    43  	})
    44  	t.Run("ComponentVersion NEXT Release Existing", func(t *testing.T) {
    45  		mc.AddData(testDataAakaasCVGetReleaseExisting)
    46  		err := vers.constructVersionable("DummyComp", wildCard+".0.0", *conn, cvQueryURL)
    47  		assert.NoError(t, err)
    48  		err = vers.resolveNext(statusFilterCV)
    49  		assert.NoError(t, err)
    50  		assert.Equal(t, "2", vers.TechRelease)
    51  		assert.Equal(t, "0000", vers.TechSpLevel)
    52  		assert.Equal(t, "0000", vers.TechPatchLevel)
    53  		assert.Equal(t, "2.0.0", vers.Version)
    54  	})
    55  	t.Run("ComponentVersion NEXT Release Non Existing", func(t *testing.T) {
    56  		mc.AddData(testDataAakaasCVGetReleaseNonExisting)
    57  		err := vers.constructVersionable("DummyComp", wildCard+".0.0", *conn, cvQueryURL)
    58  		assert.NoError(t, err)
    59  		err = vers.resolveNext(statusFilterCV)
    60  		assert.NoError(t, err)
    61  		assert.Equal(t, "1", vers.TechRelease)
    62  		assert.Equal(t, "0000", vers.TechSpLevel)
    63  		assert.Equal(t, "0000", vers.TechPatchLevel)
    64  		assert.Equal(t, "1.0.0", vers.Version)
    65  	})
    66  	t.Run("ComponentVersion NEXT SP Level Existing", func(t *testing.T) {
    67  		mc.AddData(testDataAakaasCVGetSpLevelExisting)
    68  		err := vers.constructVersionable("DummyComp", "1."+wildCard+".0", *conn, cvQueryURL)
    69  		assert.NoError(t, err)
    70  		err = vers.resolveNext(statusFilterCV)
    71  		assert.NoError(t, err)
    72  		assert.Equal(t, "1", vers.TechRelease)
    73  		assert.Equal(t, "0008", vers.TechSpLevel)
    74  		assert.Equal(t, "0000", vers.TechPatchLevel)
    75  		assert.Equal(t, "1.8.0", vers.Version)
    76  	})
    77  	t.Run("ComponentVersion NEXT SP Level Non Existing", func(t *testing.T) {
    78  		//This one should lead to an error later on as AOI is needed - anyway we can't just produce a differen package then customized...
    79  		mc.AddData(testDataAakaasCVGetSpLevelNonExisting)
    80  		err := vers.constructVersionable("DummyComp", "1."+wildCard+".0", *conn, cvQueryURL)
    81  		assert.NoError(t, err)
    82  		err = vers.resolveNext(statusFilterCV)
    83  		assert.NoError(t, err)
    84  		assert.Equal(t, "1", vers.TechRelease)
    85  		assert.Equal(t, "0001", vers.TechSpLevel)
    86  		assert.Equal(t, "0000", vers.TechPatchLevel)
    87  		assert.Equal(t, "1.1.0", vers.Version)
    88  	})
    89  	t.Run("ComponentVersion NEXT Patch Level Existing", func(t *testing.T) {
    90  		mc.AddData(testDataAakaasCVGetPatchLevelExisting)
    91  		err := vers.constructVersionable("DummyComp", "1.3."+wildCard, *conn, cvQueryURL)
    92  		assert.NoError(t, err)
    93  		err = vers.resolveNext(statusFilterCV)
    94  		assert.NoError(t, err)
    95  		assert.Equal(t, "1", vers.TechRelease)
    96  		assert.Equal(t, "0003", vers.TechSpLevel)
    97  		assert.Equal(t, "0047", vers.TechPatchLevel)
    98  		assert.Equal(t, "1.3.47", vers.Version)
    99  	})
   100  	t.Run("ComponentVersion NEXT Patch Level Non Existing", func(t *testing.T) {
   101  		//This one should lead to an error later on as AOI is needed - anyway we can't just produce a differen package then customized...
   102  		mc.AddData(testDataAakaasCVGetPatchLevelNonExisting)
   103  		err := vers.constructVersionable("DummyComp", "1.3."+wildCard, *conn, cvQueryURL)
   104  		assert.NoError(t, err)
   105  		err = vers.resolveNext(statusFilterCV)
   106  		assert.NoError(t, err)
   107  		assert.Equal(t, "1", vers.TechRelease)
   108  		assert.Equal(t, "0003", vers.TechSpLevel)
   109  		assert.Equal(t, "0001", vers.TechPatchLevel)
   110  		assert.Equal(t, "1.3.1", vers.Version)
   111  	})
   112  	t.Run("Product Version NEXT Release Existing", func(t *testing.T) {
   113  		mc.AddData(testDataAakaasPVGetReleaseExisting)
   114  		err := vers.constructVersionable("DummyProd", wildCard+".0.0", *conn, pvQueryURL)
   115  		assert.NoError(t, err)
   116  		err = vers.resolveNext(statusFilterPV)
   117  		assert.NoError(t, err)
   118  		assert.Equal(t, "2", vers.TechRelease)
   119  		assert.Equal(t, "0000", vers.TechSpLevel)
   120  		assert.Equal(t, "0000", vers.TechPatchLevel)
   121  		assert.Equal(t, "2.0.0", vers.Version)
   122  	})
   123  	t.Run("Product Version NEXT Release Non Existing", func(t *testing.T) {
   124  		mc.AddData(testDataAakaasPVGetReleaseNonExisting)
   125  		err := vers.constructVersionable("DummyProd", wildCard+".0.0", *conn, pvQueryURL)
   126  		assert.NoError(t, err)
   127  		err = vers.resolveNext(statusFilterPV)
   128  		assert.NoError(t, err)
   129  		assert.Equal(t, "1", vers.TechRelease)
   130  		assert.Equal(t, "0000", vers.TechSpLevel)
   131  		assert.Equal(t, "0000", vers.TechPatchLevel)
   132  		assert.Equal(t, "1.0.0", vers.Version)
   133  	})
   134  }