github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/worker/uniter/runner/jujuc/jujuctesting/relationhook.go (about) 1 // Copyright 2015 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package jujuctesting 5 6 import ( 7 "github.com/juju/errors" 8 9 "github.com/juju/juju/worker/uniter/runner/jujuc" 10 ) 11 12 // RelationHook holds the values for the hook context. 13 type RelationHook struct { 14 HookRelation jujuc.ContextRelation 15 RemoteUnitName string 16 } 17 18 // Reset clears the RelationHook's data. 19 func (rh *RelationHook) Reset() { 20 rh.HookRelation = nil 21 rh.RemoteUnitName = "" 22 } 23 24 // ContextRelationHook is a test double for jujuc.RelationHookContext. 25 type ContextRelationHook struct { 26 contextBase 27 info *RelationHook 28 } 29 30 // HookRelation implements jujuc.RelationHookContext. 31 func (c *ContextRelationHook) HookRelation() (jujuc.ContextRelation, error) { 32 c.stub.AddCall("HookRelation") 33 var err error 34 if c.info.HookRelation == nil { 35 err = errors.NotFoundf("hook relation") 36 } 37 38 return c.info.HookRelation, err 39 } 40 41 // RemoteUnitName implements jujuc.RelationHookContext. 42 func (c *ContextRelationHook) RemoteUnitName() (string, error) { 43 c.stub.AddCall("RemoteUnitName") 44 c.stub.NextErr() 45 var err error 46 if c.info.RemoteUnitName == "" { 47 err = errors.NotFoundf("remote unit") 48 } 49 50 return c.info.RemoteUnitName, err 51 }