package metrics

import (
	"testing"

	"github.com/sony/gobreaker"
)

func TestUpdateCircuitBreakerMetrics(t *testing.T) {
	name := "test-circuit"

	// Test état Closed
	counts := gobreaker.Counts{
		Requests:             10,
		TotalSuccesses:       8,
		TotalFailures:        2,
		ConsecutiveSuccesses: 5,
		ConsecutiveFailures:  0,
	}
	// Vérifier qu'il n'y a pas d'erreur lors de la mise à jour
	UpdateCircuitBreakerMetrics(name, counts, gobreaker.StateClosed)

	// Test état HalfOpen
	UpdateCircuitBreakerMetrics(name, counts, gobreaker.StateHalfOpen)

	// Test état Open
	counts.ConsecutiveFailures = 5
	UpdateCircuitBreakerMetrics(name, counts, gobreaker.StateOpen)

	// Si on arrive ici sans erreur, c'est bon
}

func TestRecordCircuitBreakerRequest(t *testing.T) {
	name := "test-request"

	// Enregistrer différents types de résultats
	RecordCircuitBreakerRequest(name, "success")
	RecordCircuitBreakerRequest(name, "failure")
	RecordCircuitBreakerRequest(name, "rejected")
	RecordCircuitBreakerRequest(name, "success")

	// Les métriques sont enregistrées, on vérifie juste qu'il n'y a pas d'erreur
	// (les valeurs exactes dépendent de l'état global du registre Prometheus)
	// Si on arrive ici sans erreur, c'est bon
}
