github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/worker/caasmodelupgrader/worker_test.go (about) 1 // Copyright 2017 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package caasmodelupgrader_test 5 6 import ( 7 "github.com/juju/testing" 8 jc "github.com/juju/testing/checkers" 9 gc "gopkg.in/check.v1" 10 "gopkg.in/juju/names.v2" 11 "gopkg.in/juju/worker.v1/workertest" 12 13 "github.com/juju/juju/core/status" 14 coretesting "github.com/juju/juju/testing" 15 "github.com/juju/juju/worker/caasmodelupgrader" 16 ) 17 18 type WorkerSuite struct { 19 testing.IsolationSuite 20 } 21 22 var _ = gc.Suite(&WorkerSuite{}) 23 24 func (*WorkerSuite) TestNewWorkerValidatesConfig(c *gc.C) { 25 _, err := caasmodelupgrader.NewWorker(caasmodelupgrader.Config{}) 26 c.Assert(err, gc.ErrorMatches, "nil Facade not valid") 27 } 28 29 func (*WorkerSuite) TestNewWorker(c *gc.C) { 30 mockFacade := mockFacade{} 31 mockGateUnlocker := mockGateUnlocker{} 32 w, err := caasmodelupgrader.NewWorker(caasmodelupgrader.Config{ 33 Facade: &mockFacade, 34 GateUnlocker: &mockGateUnlocker, 35 ModelTag: coretesting.ModelTag, 36 }) 37 c.Assert(err, jc.ErrorIsNil) 38 workertest.CheckKill(c, w) 39 mockFacade.CheckCalls(c, []testing.StubCall{ 40 {"SetModelStatus", []interface{}{coretesting.ModelTag, status.Available, "", nilData}}, 41 }) 42 mockGateUnlocker.CheckCallNames(c, "Unlock") 43 } 44 45 type mockFacade struct { 46 testing.Stub 47 } 48 49 var nilData map[string]interface{} 50 51 func (f *mockFacade) SetModelStatus(tag names.ModelTag, status status.Status, info string, data map[string]interface{}) error { 52 f.MethodCall(f, "SetModelStatus", tag, status, info, data) 53 return f.NextErr() 54 } 55 56 type mockGateUnlocker struct { 57 testing.Stub 58 } 59 60 func (g *mockGateUnlocker) Unlock() { 61 g.MethodCall(g, "Unlock") 62 g.PopNoErr() 63 }