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  }