added vendor example
This commit is contained in:
187
pkg/moq/moq_test.go
Normal file
187
pkg/moq/moq_test.go
Normal file
@@ -0,0 +1,187 @@
|
||||
package moq
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"log"
|
||||
"strings"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestMoq(t *testing.T) {
|
||||
m, err := New("testdata/example", "")
|
||||
if err != nil {
|
||||
t.Fatalf("moq.New: %s", err)
|
||||
}
|
||||
var buf bytes.Buffer
|
||||
err = m.Mock(&buf, "PersonStore")
|
||||
if err != nil {
|
||||
t.Errorf("m.Mock: %s", err)
|
||||
}
|
||||
s := buf.String()
|
||||
// assertions of things that should be mentioned
|
||||
var strs = []string{
|
||||
"package example",
|
||||
"type PersonStoreMock struct",
|
||||
"CreateFunc func(ctx context.Context, person *Person, confirm bool) error",
|
||||
"GetFunc func(ctx context.Context, id string) (*Person, error)",
|
||||
"func (mock *PersonStoreMock) Create(ctx context.Context, person *Person, confirm bool) error",
|
||||
"func (mock *PersonStoreMock) Get(ctx context.Context, id string) (*Person, error)",
|
||||
"panic(\"moq: PersonStoreMock.CreateFunc is nil but was just called\")",
|
||||
"panic(\"moq: PersonStoreMock.GetFunc is nil but was just called\")",
|
||||
"mock.CallsTo.lockGet.Lock()",
|
||||
"mock.CallsTo.Get = append(mock.CallsTo.Get, struct{",
|
||||
"mock.CallsTo.lockGet.Unlock()",
|
||||
}
|
||||
for _, str := range strs {
|
||||
if !strings.Contains(s, str) {
|
||||
t.Errorf("expected but missing: \"%s\"", str)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
func TestMoqExplicitPackage(t *testing.T) {
|
||||
m, err := New("testdata/example", "different")
|
||||
if err != nil {
|
||||
t.Fatalf("moq.New: %s", err)
|
||||
}
|
||||
var buf bytes.Buffer
|
||||
err = m.Mock(&buf, "PersonStore")
|
||||
if err != nil {
|
||||
t.Errorf("m.Mock: %s", err)
|
||||
}
|
||||
s := buf.String()
|
||||
// assertions of things that should be mentioned
|
||||
var strs = []string{
|
||||
"package different",
|
||||
"type PersonStoreMock struct",
|
||||
"CreateFunc func(ctx context.Context, person *example.Person, confirm bool) error",
|
||||
"GetFunc func(ctx context.Context, id string) (*example.Person, error)",
|
||||
"func (mock *PersonStoreMock) Create(ctx context.Context, person *example.Person, confirm bool) error",
|
||||
"func (mock *PersonStoreMock) Get(ctx context.Context, id string) (*example.Person, error)",
|
||||
}
|
||||
for _, str := range strs {
|
||||
if !strings.Contains(s, str) {
|
||||
t.Errorf("expected but missing: \"%s\"", str)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// TestVeradicArguments tests to ensure variadic work as
|
||||
// expected.
|
||||
// see https://github.com/matryer/moq/issues/5
|
||||
func TestVariadicArguments(t *testing.T) {
|
||||
m, err := New("testdata/variadic", "")
|
||||
if err != nil {
|
||||
t.Fatalf("moq.New: %s", err)
|
||||
}
|
||||
var buf bytes.Buffer
|
||||
err = m.Mock(&buf, "Greeter")
|
||||
if err != nil {
|
||||
t.Errorf("m.Mock: %s", err)
|
||||
}
|
||||
s := buf.String()
|
||||
// assertions of things that should be mentioned
|
||||
var strs = []string{
|
||||
"package variadic",
|
||||
"type GreeterMock struct",
|
||||
"GreetFunc func(ctx context.Context, names ...string) string",
|
||||
"return mock.GreetFunc(ctx, names...)",
|
||||
}
|
||||
for _, str := range strs {
|
||||
if !strings.Contains(s, str) {
|
||||
t.Errorf("expected but missing: \"%s\"", str)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestNothingToReturn(t *testing.T) {
|
||||
m, err := New("testdata/example", "")
|
||||
if err != nil {
|
||||
t.Fatalf("moq.New: %s", err)
|
||||
}
|
||||
var buf bytes.Buffer
|
||||
err = m.Mock(&buf, "PersonStore")
|
||||
if err != nil {
|
||||
t.Errorf("m.Mock: %s", err)
|
||||
}
|
||||
s := buf.String()
|
||||
if strings.Contains(s, `return mock.ClearCacheFunc(id)`) {
|
||||
t.Errorf("should not have return for items that have no return arguments")
|
||||
}
|
||||
// assertions of things that should be mentioned
|
||||
var strs = []string{
|
||||
"mock.ClearCacheFunc(id)",
|
||||
}
|
||||
for _, str := range strs {
|
||||
if !strings.Contains(s, str) {
|
||||
t.Errorf("expected but missing: \"%s\"", str)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestChannelNames(t *testing.T) {
|
||||
m, err := New("testdata/channels", "")
|
||||
if err != nil {
|
||||
t.Fatalf("moq.New: %s", err)
|
||||
}
|
||||
var buf bytes.Buffer
|
||||
err = m.Mock(&buf, "Queuer")
|
||||
if err != nil {
|
||||
t.Errorf("m.Mock: %s", err)
|
||||
}
|
||||
s := buf.String()
|
||||
var strs = []string{
|
||||
"func (mock *QueuerMock) Sub(topic string) (<-chan Queue, error)",
|
||||
}
|
||||
for _, str := range strs {
|
||||
if !strings.Contains(s, str) {
|
||||
t.Errorf("expected but missing: \"%s\"", str)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestImports(t *testing.T) {
|
||||
m, err := New("testdata/imports/two", "")
|
||||
if err != nil {
|
||||
t.Fatalf("moq.New: %s", err)
|
||||
}
|
||||
var buf bytes.Buffer
|
||||
err = m.Mock(&buf, "DoSomething")
|
||||
if err != nil {
|
||||
t.Errorf("m.Mock: %s", err)
|
||||
}
|
||||
s := buf.String()
|
||||
var strs = []string{
|
||||
` "sync"`,
|
||||
` "github.com/matryer/moq/pkg/moq/testdata/imports/one"`,
|
||||
}
|
||||
for _, str := range strs {
|
||||
if !strings.Contains(s, str) {
|
||||
t.Errorf("expected but missing: \"%s\"", str)
|
||||
}
|
||||
if len(strings.Split(s, str)) > 2 {
|
||||
t.Errorf("more than one: \"%s\"", str)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestTemplateFuncs(t *testing.T) {
|
||||
fn := templateFuncs["Exported"].(func(string) string)
|
||||
if fn("var") != "Var" {
|
||||
t.Errorf("exported didn't work: %s", fn("var"))
|
||||
}
|
||||
}
|
||||
|
||||
func TestVendoredPackages(t *testing.T) {
|
||||
m, err := New("testdata/vendoring/user", "")
|
||||
if err != nil {
|
||||
t.Fatalf("moq.New: %s", err)
|
||||
}
|
||||
var buf bytes.Buffer
|
||||
err = m.Mock(&buf, "Service")
|
||||
if err != nil {
|
||||
t.Errorf("mock error: %s", err)
|
||||
}
|
||||
log.Println(buf.String())
|
||||
}
|
Reference in New Issue
Block a user