Files
sendico/api/pkg/mutil/helpers/integration_test.go
Stephan D 62a6631b9a
All checks were successful
ci/woodpecker/push/db Pipeline was successful
ci/woodpecker/push/nats Pipeline was successful
service backend
2025-11-07 18:35:26 +01:00

129 lines
4.5 KiB
Go

package helpers
import (
"context"
"testing"
factory "github.com/tech/sendico/pkg/mlogger/factory"
"github.com/tech/sendico/pkg/model"
"go.mongodb.org/mongo-driver/bson/primitive"
)
// TestInterfaceImplementation verifies that the concrete types implement the expected interfaces
func TestInterfaceImplementation(t *testing.T) {
logger := factory.NewLogger(true)
// Test TaskManager interface implementation
taskManager := NewTaskManager(logger, nil, nil)
var _ TaskManager = taskManager
// Test AccountManager interface implementation
accountManager := NewAccountManager(
logger,
nil, nil, nil, nil,
)
var _ AccountManager = accountManager
}
// TestInterfaceMethodSignatures ensures all interface methods have correct signatures
func TestInterfaceMethodSignatures(t *testing.T) {
logger := factory.NewLogger(true)
projectRef := primitive.NewObjectID()
statusRef := primitive.NewObjectID()
// Test TaskManager interface methods exist and have correct signatures
taskManager := NewTaskManager(logger, nil, nil)
task := &model.Task{
ProjectRef: projectRef,
StatusRef: statusRef,
}
task.SetID(primitive.NewObjectID())
// Verify method signatures exist (don't call them to avoid nil pointer panics)
var _ func(context.Context, primitive.ObjectID, primitive.ObjectID, *model.Task) error = taskManager.CreateTask
var _ func(context.Context, primitive.ObjectID, primitive.ObjectID, primitive.ObjectID, primitive.ObjectID, primitive.ObjectID) error = taskManager.MoveTask
var _ func(context.Context, primitive.ObjectID, primitive.ObjectID, primitive.ObjectID, primitive.ObjectID, primitive.ObjectID) error = taskManager.MoveTasks
var _ func(context.Context, primitive.ObjectID, primitive.ObjectID) error = taskManager.DeleteTask
// Test AccountManager interface methods exist and have correct signatures
accountManager := NewAccountManager(
logger,
nil, nil, nil, nil,
)
// Verify method signatures exist (don't call them to avoid nil pointer panics)
var _ func(context.Context, primitive.ObjectID) error = accountManager.DeleteAccount
var _ func(context.Context, primitive.ObjectID) error = accountManager.DeleteOrganization
var _ func(context.Context, primitive.ObjectID, primitive.ObjectID) error = accountManager.DeleteAll
}
// TestFactoryFunctionConsistency ensures factory functions return consistent types
func TestFactoryFunctionConsistency(t *testing.T) {
logger := factory.NewLogger(true)
// Create multiple instances to ensure consistency
for i := 0; i < 3; i++ {
taskManager := NewTaskManager(logger, nil, nil)
if taskManager == nil {
t.Fatalf("NewTaskManager returned nil on iteration %d", i)
}
accountManager := NewAccountManager(
logger,
nil, nil, nil, nil,
)
if accountManager == nil {
t.Fatalf("NewAccountManager returned nil on iteration %d", i)
}
}
}
// TestErrorHandlingWithNilDependencies ensures helpers handle nil dependencies gracefully
func TestErrorHandlingWithNilDependencies(t *testing.T) {
logger := factory.NewLogger(true)
// Test that creating helpers with nil dependencies doesn't panic
taskManager := NewTaskManager(logger, nil, nil)
if taskManager == nil {
t.Fatal("TaskManager should not be nil even with nil dependencies")
}
accountManager := NewAccountManager(
logger,
nil, nil, nil, nil,
)
if accountManager == nil {
t.Fatal("AccountManager should not be nil even with nil dependencies")
}
// The actual method calls would panic with nil dependencies,
// but that's expected behavior - the constructors should handle nil gracefully
t.Log("Helper managers created successfully with nil dependencies")
}
// TestHelperManagersDocumentedBehavior verifies expected behavior from documentation/comments
func TestHelperManagersDocumentedBehavior(t *testing.T) {
logger := factory.NewLogger(true)
// TaskManager is documented to handle task operations with proper ordering and numbering
taskManager := NewTaskManager(logger, nil, nil)
if taskManager == nil {
t.Fatal("TaskManager should be created successfully")
}
// AccountManager is documented to handle account management operations with cascade deletion
accountManager := NewAccountManager(
logger,
nil, nil, nil, nil,
)
if accountManager == nil {
t.Fatal("AccountManager should be created successfully")
}
// Both should be transaction-aware (caller responsible for transactions according to comments)
// This is more of a documentation test than a functional test
t.Log("TaskManager and AccountManager created successfully - transaction handling is caller's responsibility")
}