Files
template-blueprint/internal/database/database_test.go
2025-03-07 11:12:53 +07:00

62 lines
1.2 KiB
Go

package database
import (
"context"
"log"
"testing"
"github.com/testcontainers/testcontainers-go/modules/mongodb"
)
func mustStartMongoContainer() (func(context.Context) error, error) {
dbContainer, err := mongodb.Run(context.Background(), "mongo:latest")
if err != nil {
return nil, err
}
dbHost, err := dbContainer.Host(context.Background())
if err != nil {
return dbContainer.Terminate, err
}
dbPort, err := dbContainer.MappedPort(context.Background(), "27017/tcp")
if err != nil {
return dbContainer.Terminate, err
}
host = dbHost
port = dbPort.Port()
return dbContainer.Terminate, err
}
func TestMain(m *testing.M) {
teardown, err := mustStartMongoContainer()
if err != nil {
log.Fatalf("could not start mongodb container: %v", err)
}
m.Run()
if teardown != nil && teardown(context.Background()) != nil {
log.Fatalf("could not teardown mongodb container: %v", err)
}
}
func TestNew(t *testing.T) {
srv := New()
if srv == nil {
t.Fatal("New() returned nil")
}
}
func TestHealth(t *testing.T) {
srv := New()
stats := srv.Health()
if stats["message"] != "It's healthy" {
t.Fatalf("expected message to be 'It's healthy', got %s", stats["message"])
}
}