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  }