2023-05-03 18:02:11 +02:00
//go:build unit
// +build unit
2022-01-11 11:01:15 +02:00
package cnbutils_test
2021-09-14 16:14:50 +02:00
import (
"fmt"
"testing"
2022-01-11 11:01:15 +02:00
"github.com/SAP/jenkins-library/pkg/cnbutils"
2021-09-14 16:14:50 +02:00
"github.com/SAP/jenkins-library/pkg/mock"
"github.com/stretchr/testify/assert"
)
func TestOrderSave ( t * testing . T ) {
2021-10-01 13:30:06 +02:00
t . Run ( "successfully Encode struct to toml format (multiple buildpacks)" , func ( t * testing . T ) {
2022-01-11 11:01:15 +02:00
mockUtils := & cnbutils . MockUtils {
2021-09-14 16:14:50 +02:00
ExecMockRunner : & mock . ExecMockRunner { } ,
FilesMock : & mock . FilesMock { } ,
}
2021-10-01 13:30:06 +02:00
2022-01-11 11:01:15 +02:00
testBuildpacks := [ ] cnbutils . BuildPackMetadata {
2021-10-01 13:30:06 +02:00
{
ID : "paketo-buildpacks/sap-machine" ,
Version : "1.1.1" ,
} ,
{
ID : "paketo-buildpacks/java" ,
Version : "2.2.2" ,
} ,
}
2022-01-11 11:01:15 +02:00
testOrder := cnbutils . Order {
2021-09-14 16:14:50 +02:00
Utils : mockUtils ,
}
2022-01-11 11:01:15 +02:00
var testEntry cnbutils . OrderEntry
2021-10-01 13:30:06 +02:00
testEntry . Group = append ( testEntry . Group , testBuildpacks ... )
2022-01-11 11:01:15 +02:00
testOrder . Order = [ ] cnbutils . OrderEntry { testEntry }
2021-10-01 13:30:06 +02:00
2021-09-14 16:14:50 +02:00
err := testOrder . Save ( "/tmp/order.toml" )
assert . NoError ( t , err )
assert . True ( t , mockUtils . HasWrittenFile ( "/tmp/order.toml" ) )
result , err := mockUtils . FileRead ( "/tmp/order.toml" )
assert . NoError ( t , err )
2021-10-01 13:30:06 +02:00
assert . Equal ( t , "\n[[order]]\n\n [[order.group]]\n id = \"paketo-buildpacks/sap-machine\"\n version = \"1.1.1\"\n\n [[order.group]]\n id = \"paketo-buildpacks/java\"\n version = \"2.2.2\"\n" , string ( result ) )
2021-09-14 16:14:50 +02:00
} )
t . Run ( "raises an error if unable to write the file" , func ( t * testing . T ) {
2022-01-11 11:01:15 +02:00
mockUtils := & cnbutils . MockUtils {
2021-09-14 16:14:50 +02:00
ExecMockRunner : & mock . ExecMockRunner { } ,
FilesMock : & mock . FilesMock { } ,
}
mockUtils . FileWriteErrors = map [ string ] error {
"/tmp/order.toml" : fmt . Errorf ( "unable to write to file" ) ,
}
2022-01-11 11:01:15 +02:00
testOrder := cnbutils . Order {
2021-09-14 16:14:50 +02:00
Utils : mockUtils ,
}
err := testOrder . Save ( "/tmp/order.toml" )
assert . Error ( t , err , "unable to write to file" )
assert . False ( t , mockUtils . HasWrittenFile ( "/tmp/order.toml" ) )
} )
}