github.com/juju/juju@v0.0.0-20240430160146-1752b71fcf00/state/migrations/offerconnections_test.go (about)

     1  // Copyright 2019 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package migrations
     5  
     6  import (
     7  	"github.com/juju/description/v5"
     8  	"github.com/juju/errors"
     9  	jc "github.com/juju/testing/checkers"
    10  	"go.uber.org/mock/gomock"
    11  	gc "gopkg.in/check.v1"
    12  )
    13  
    14  type OfferConnectionsExportSuite struct{}
    15  
    16  var _ = gc.Suite(&OfferConnectionsExportSuite{})
    17  
    18  func (s *OfferConnectionsExportSuite) TestExportOfferConnection(c *gc.C) {
    19  	ctrl := gomock.NewController(c)
    20  	defer ctrl.Finish()
    21  
    22  	entities := []MigrationOfferConnection{
    23  		s.migrationOfferConnection(ctrl, func(expect *MockMigrationOfferConnectionMockRecorder) {
    24  			expect.OfferUUID().Return("offer-uuid")
    25  			expect.RelationId().Return(1)
    26  			expect.RelationKey().Return("relation-key")
    27  			expect.SourceModelUUID().Return("source-model-uuid")
    28  			expect.UserName().Return("fred")
    29  		}),
    30  	}
    31  
    32  	offerConnection := NewMockOfferConnection(ctrl)
    33  
    34  	source := NewMockOfferConnectionSource(ctrl)
    35  	source.EXPECT().AllOfferConnections().Return(entities, nil)
    36  
    37  	model := NewMockOfferConnectionModel(ctrl)
    38  	model.EXPECT().AddOfferConnection(description.OfferConnectionArgs{
    39  		OfferUUID:       "offer-uuid",
    40  		RelationID:      1,
    41  		RelationKey:     "relation-key",
    42  		SourceModelUUID: "source-model-uuid",
    43  		UserName:        "fred",
    44  	}).Return(offerConnection)
    45  
    46  	migration := ExportOfferConnections{}
    47  	err := migration.Execute(source, model)
    48  	c.Assert(err, jc.ErrorIsNil)
    49  }
    50  
    51  func (s *OfferConnectionsExportSuite) TestExportOfferConnectionFailsGettingEntities(c *gc.C) {
    52  	ctrl := gomock.NewController(c)
    53  	defer ctrl.Finish()
    54  
    55  	entities := []MigrationOfferConnection{
    56  		NewMockMigrationOfferConnection(ctrl),
    57  	}
    58  
    59  	source := NewMockOfferConnectionSource(ctrl)
    60  	source.EXPECT().AllOfferConnections().Return(entities, errors.New("fail"))
    61  
    62  	model := NewMockOfferConnectionModel(ctrl)
    63  
    64  	migration := ExportOfferConnections{}
    65  	err := migration.Execute(source, model)
    66  	c.Assert(err, gc.ErrorMatches, "fail")
    67  }
    68  
    69  func (s *OfferConnectionsExportSuite) migrationOfferConnection(ctrl *gomock.Controller, fn func(expect *MockMigrationOfferConnectionMockRecorder)) *MockMigrationOfferConnection {
    70  	entity := NewMockMigrationOfferConnection(ctrl)
    71  	fn(entity.EXPECT())
    72  	return entity
    73  }