package webhook_test

import (
	"testing"
	"time"

	"bit.admedia.com/scm/ad/adpilot-indexing-repo-sync.com/internal/webhook"
)

func TestDedupeBlocksDuplicate(t *testing.T) {
	d := webhook.NewDedupe(time.Minute)
	if !d.TryRecord("ad/repo", "abc123") {
		t.Fatal("expected first record to succeed")
	}
	if d.TryRecord("ad/repo", "abc123") {
		t.Fatal("expected duplicate to be blocked")
	}
}

func TestDedupeAllowsDifferentCommit(t *testing.T) {
	d := webhook.NewDedupe(time.Minute)
	if !d.TryRecord("ad/repo", "abc123") {
		t.Fatal("expected first record to succeed")
	}
	if !d.TryRecord("ad/repo", "def456") {
		t.Fatal("expected different commit to succeed")
	}
}

func TestDedupeExpires(t *testing.T) {
	d := webhook.NewDedupe(time.Millisecond)
	if !d.TryRecord("ad/repo", "abc123") {
		t.Fatal("expected first record to succeed")
	}
	time.Sleep(2 * time.Millisecond)
	if !d.TryRecord("ad/repo", "abc123") {
		t.Fatal("expected record after TTL expiry")
	}
}
