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 -}}`