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 }