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 }