github.com/oinume/lekcije@v0.0.0-20231017100347-5b4c5eb6ab24/backend/interface/http/server_test.go (about)

     1  package http
     2  
     3  import (
     4  	"context"
     5  	"io"
     6  	"os"
     7  	"testing"
     8  
     9  	rollbar_go "github.com/rollbar/rollbar-go"
    10  	"go.uber.org/zap/zapcore"
    11  
    12  	"github.com/oinume/lekcije/backend/infrastructure/ga_measurement"
    13  	"github.com/oinume/lekcije/backend/infrastructure/mysql"
    14  	"github.com/oinume/lekcije/backend/infrastructure/rollbar"
    15  	interfaces "github.com/oinume/lekcije/backend/interface"
    16  	"github.com/oinume/lekcije/backend/logger"
    17  	"github.com/oinume/lekcije/backend/usecase"
    18  )
    19  
    20  func TestMain(m *testing.M) {
    21  	db := helper.DB(nil)
    22  	defer func() { _ = db.Close() }()
    23  	helper.TruncateAllTables(nil)
    24  	_ = os.Chdir("../..")
    25  	os.Exit(m.Run())
    26  }
    27  
    28  func newTestServer(t *testing.T, accessLog io.Writer, appLog io.Writer) *server {
    29  	appLogger := logger.NewAppLogger(appLog, zapcore.InfoLevel)
    30  	gormDB := helper.DB(t)
    31  	rollbarClientMock := &rollbar.ClientMock{
    32  		ErrorWithStackSkipWithExtrasAndContextFunc: func(ctx context.Context, level string, err error, skip int, extras map[string]interface{}) {
    33  			// nop
    34  		},
    35  		SetStackTracerFunc: func(stackTracer rollbar_go.StackTracerFunc) {
    36  			// nop
    37  		},
    38  	}
    39  	return NewServer(
    40  		&interfaces.ServerArgs{
    41  			AccessLogger:        logger.NewAccessLogger(accessLog),
    42  			AppLogger:           appLogger,
    43  			GormDB:              gormDB,
    44  			GAMeasurementClient: ga_measurement.NewFakeClient(),
    45  		},
    46  		usecase.NewErrorRecorder(appLogger, rollbar.NewErrorRecorderRepository(rollbarClientMock)),
    47  		usecase.NewUserAPIToken(mysql.NewUserAPITokenRepository(gormDB.DB())),
    48  	)
    49  }