package persistence

import (
	"context"
	"testing"

	"github.com/nexuscrm/kernel/pkg/schemautil"
	"github.com/nexuscrm/shared/pkg/models"
)

type decimalFidelitySchemaProvider struct {
	schema *models.ObjectMetadata
}

func (p decimalFidelitySchemaProvider) GetSchema(context.Context, string) *models.ObjectMetadata {
	return p.schema
}

func assertExactDecimalParts(t *testing.T, record models.SObject, field, wantCoefficient string, wantScale uint32) {
	t.Helper()
	decimal, ok := schemautil.ExactDecimalForField(record, field)
	if !ok {
		t.Fatalf("ExactDecimalForField(%s) missing", field)
	}
	coefficient, scale, valid := decimal.CoefficientAndScale()
	if !valid || coefficient != wantCoefficient || scale != wantScale {
		t.Fatalf("%s exact parts = %q, %d, %v; want %q, %d", field, coefficient, scale, valid, wantCoefficient, wantScale)
	}
}
