package runtimeworker

import (
	"database/sql"
	"errors"
	"testing"

	database "github.com/nexuscrm/db"
)

func TestWorkerAuxiliaryPoolTrackerRecordsOpenFailure(t *testing.T) {
	tracker := &workerAuxiliaryPoolTracker{}
	wantErr := errors.New("open failed")
	_, _, err := tracker.open(func(database.PoolOptions) (*sql.DB, error) {
		return nil, wantErr
	}, runtimeWorkerObservationPool())
	if !errors.Is(err, wantErr) {
		t.Fatalf("open error=%v", err)
	}
	if snapshot := tracker.snapshot(); snapshot.Active || snapshot.OpenAttempts != 1 || snapshot.OpenFailures != 1 || snapshot.Closes != 0 {
		t.Fatalf("failure snapshot=%+v", snapshot)
	}
}
