github.com/PentoHQ/moq@v0.0.0-20190507125140-c45c141f300b/pkg/moq/template.go (about)

     1  package moq
     2  
     3  // moqImports are the imports all moq files get.
     4  var moqImports = []string{}
     5  
     6  // moqTemplate is the template for mocked code.
     7  var moqTemplate = `package {{.PackageName}}
     8  
     9  {{ range $i, $obj := .Objects -}}
    10  const {{.InterfaceName}}ErrorMessage = "{{.InterfaceName}}-error"
    11  
    12  type {{.InterfaceName}}Opts struct {
    13  	{{- range .Methods }}
    14  	Is{{.Name}}Error bool
    15  {{- end }}
    16  }
    17  
    18  type Mock{{.InterfaceName}} struct {
    19  {{- range .Methods }}
    20  	Mock{{.Name}} func({{ .Arglist }}) {{.ReturnArglist}}
    21  	{{.SmallName}}Calls int
    22  	{{.SmallName}}Chan chan int
    23  {{- end }}
    24  }
    25  {{ range .Methods }}
    26  
    27  func (mock *Mock{{$obj.InterfaceName}}) SetMock{{.Name}}(mockFunc func({{ .Arglist }}) {{.ReturnArglist}}) (*Mock{{$obj.InterfaceName}}) {
    28  	mock.Mock{{.Name}} = mockFunc
    29  	return mock
    30  }
    31  
    32  func (mock *Mock{{$obj.InterfaceName}}) {{.Name}}({{.Arglist}}) {{.ReturnArglist}} {
    33  	mock.{{.SmallName}}Calls++{{if .HasReturnArgs}}
    34  	select {
    35      case mock.{{.SmallName}}Chan <- 1:
    36      default:
    37      }
    38  	return mock.Mock{{.Name}}({{ .ArgCallList }}){{end}}
    39  }
    40  
    41  func (mock *Mock{{$obj.InterfaceName}}) {{.Name}}Calls() int {
    42  	return mock.{{.SmallName}}Calls
    43  }
    44  
    45  func (mock *Mock{{$obj.InterfaceName}}) {{.Name}}Chan() chan int {
    46  	return mock.{{.SmallName}}Chan
    47  }
    48  {{- end}}
    49  
    50  func (mock *Mock{{$obj.InterfaceName}}) SetOpts (opts {{.InterfaceName}}Opts) {
    51  	{{- range .Methods }}
    52  	mock.Mock{{.Name}} = func({{ .Arglist }}) {{.ReturnArglist}} {
    53  		if opts.Is{{.Name}}Error {
    54  			return {{.ReturnValuelist false}}
    55  		}
    56  		return {{.ReturnValuelist true}}
    57  	}
    58  	mock.{{.SmallName}}Chan = make(chan int)
    59  	{{- end }}
    60  }
    61  
    62  func NewMock{{.InterfaceName}}(opts {{.InterfaceName}}Opts) *Mock{{.InterfaceName}} {
    63  	mock := new(Mock{{.InterfaceName}})
    64  	mock.SetOpts(opts)
    65  	return mock
    66  }
    67  {{ end -}}`