package connector_inbound

import (
	"testing"

	contractmodels "github.com/pingcap-inc/nexuscrm-contract/pkg/models"
)

func TestFlowOutcomeFromModelPreservesTypedDependencyRequest(t *testing.T) {
	dependency, err := contractmodels.NewFlowIdentityConvergenceDependencyRequest(
		"Lead", "00Q000000000001AAA", "owner", "slot",
	)
	if err != nil {
		t.Fatal(err)
	}
	got := FlowDependencyOutcomeFromModel(&contractmodels.FlowExecutionTypedOutcome{
		Result:     &contractmodels.FlowExecutionResult{IsSuccess: true},
		Dependency: &dependency,
	})
	if got.Result == nil || !got.Result.IsSuccess || got.Dependency == nil || *got.Dependency != dependency {
		t.Fatalf("FlowDependencyOutcomeFromModel = %#v, want dependency %#v", got, dependency)
	}
}

func TestFlowDependencyOutcomeFromModelNilIsWorkerSafe(t *testing.T) {
	got := FlowDependencyOutcomeFromModel(nil)
	if got == nil || got.FlowOutcome == nil || got.Result == nil || got.Result.IsSuccess || got.Dependency != nil {
		t.Fatalf("FlowDependencyOutcomeFromModel(nil) = %#v, want non-nil unsuccessful dependency-free outcome", got)
	}
}
