github.com/juju/juju@v0.0.0-20240430160146-1752b71fcf00/core/base/validate_test.go (about)

     1  // Copyright 2019 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package base
     5  
     6  import (
     7  	"fmt"
     8  
     9  	"github.com/juju/testing"
    10  	gc "gopkg.in/check.v1"
    11  )
    12  
    13  type BaseValidateSuite struct {
    14  	testing.IsolationSuite
    15  }
    16  
    17  var _ = gc.Suite(&BaseValidateSuite{})
    18  
    19  func (*BaseValidateSuite) TestValidate(c *gc.C) {
    20  	expected := MustParseBaseFromString("ubuntu@20.04")
    21  
    22  	result, err := ValidateBase([]Base{
    23  		MustParseBaseFromString("ubuntu@18.04"),
    24  		expected,
    25  	}, expected, MustParseBaseFromString("ubuntu@22.04"))
    26  	c.Assert(err, gc.IsNil)
    27  	c.Assert(result, gc.Equals, expected)
    28  }
    29  
    30  func (*BaseValidateSuite) TestValidateError(c *gc.C) {
    31  	expected := MustParseBaseFromString("ubuntu@16.04")
    32  
    33  	result, err := ValidateBase([]Base{
    34  		MustParseBaseFromString("ubuntu@18.04"),
    35  		MustParseBaseFromString("ubuntu@20.04"),
    36  	}, expected, MustParseBaseFromString("ubuntu@22.04"))
    37  	c.Assert(err, gc.ErrorMatches, fmt.Sprintf("%s not supported", expected.String()))
    38  	c.Assert(result, gc.Equals, expected)
    39  }
    40  
    41  func (*BaseValidateSuite) TestFallbackValidateError(c *gc.C) {
    42  	expected := MustParseBaseFromString("ubuntu@22.04")
    43  
    44  	result, err := ValidateBase([]Base{
    45  		MustParseBaseFromString("ubuntu@18.04"),
    46  		MustParseBaseFromString("ubuntu@20.04"),
    47  	}, Base{}, expected)
    48  	c.Assert(err, gc.ErrorMatches, fmt.Sprintf("%s not supported", expected.String()))
    49  	c.Assert(result, gc.Equals, expected)
    50  }