github.com/brycereitano/goa@v0.0.0-20170315073847-8ffa6c85e265/goatest/testing.go (about)

     1  package goatest
     2  
     3  import (
     4  	"bytes"
     5  	"io"
     6  	"log"
     7  
     8  	"github.com/goadesign/goa"
     9  	"github.com/goadesign/goa/middleware"
    10  )
    11  
    12  // TInterface is an interface for go's testing.T
    13  type TInterface interface {
    14  	Errorf(format string, args ...interface{})
    15  	Fatalf(format string, args ...interface{})
    16  }
    17  
    18  // ResponseSetterFunc func
    19  type ResponseSetterFunc func(resp interface{})
    20  
    21  // Encode implements a dummy encoder that returns the value being encoded
    22  func (r ResponseSetterFunc) Encode(v interface{}) error {
    23  	r(v)
    24  	return nil
    25  }
    26  
    27  // Service provide a general goa.Service used for testing purposes
    28  func Service(logBuf *bytes.Buffer, respSetter ResponseSetterFunc) *goa.Service {
    29  	s := goa.New("test")
    30  	logger := log.New(logBuf, "", log.Ltime)
    31  	s.WithLogger(goa.NewLogger(logger))
    32  	s.Use(middleware.LogRequest(true))
    33  	s.Use(middleware.LogResponse())
    34  	newEncoder := func(io.Writer) goa.Encoder {
    35  		return respSetter
    36  	}
    37  	s.Decoder.Register(goa.NewJSONDecoder, "*/*")
    38  	s.Encoder.Register(newEncoder, "*/*")
    39  	return s
    40  }