package roller

import (
	"testing"

	"github.com/stretchr/testify/require"
	metrics2_testutils "go.skia.org/infra/go/metrics2/testutils"
	"go.skia.org/infra/go/mockhttpclient"
)

const testRollerName = "fake-roller"

func checkSuccessMetric(t *testing.T, source string, expectSuccess bool) {
	tags := map[string]string{
		"roller":          testRollerName,
		"reviewer_source": source,
	}
	expect := "0"
	if expectSuccess {
		expect = "1"
	}
	require.Equal(t, expect, metrics2_testutils.GetRecordedMetric(t, measurementGetReviewersSuccess, tags), source)
}

func checkSourceFailed(t *testing.T, source string) {
	checkSuccessMetric(t, source, false)
}

func checkSourceSucceeded(t *testing.T, source string) {
	checkSuccessMetric(t, source, true)
}

func checkNonEmptyMetric(t *testing.T, expectNonEmpty bool) {
	tags := map[string]string{
		"roller": testRollerName,
	}
	expect := "0"
	if expectNonEmpty {
		expect = "1"
	}
	require.Equal(t, expect, metrics2_testutils.GetRecordedMetric(t, measurementGetReviewersNonEmpty, tags))
}

func checkReviewersEmpty(t *testing.T) {
	checkNonEmptyMetric(t, false)
}

func checkReviewersNonEmpty(t *testing.T) {
	checkNonEmptyMetric(t, true)
}

func TestGetReviewers(t *testing.T) {

	urlMock := mockhttpclient.NewURLMock()
	urlMock.MockOnce("https://reviewers.com/fake", mockhttpclient.MockGetDialogue([]byte(`{"emails": ["you@google.com", "me@google.com"]}`)))
	reviewersSources := []string{
		"https://reviewers.com/fake",
		"explicit-reviewer@google.com",
		"https://unknown-url.com",
	}
	backupReviewers := []string{"backup-reviewer@google.com"}

	gotReviewers := GetReviewers(urlMock.Client(), testRollerName, reviewersSources, backupReviewers)
	require.Equal(t, []string{"explicit-reviewer@google.com", "me@google.com", "you@google.com"}, gotReviewers)
	checkSourceSucceeded(t, "https://reviewers.com/fake")
	checkSourceSucceeded(t, "explicit-reviewer@google.com")
	checkSourceFailed(t, "https://unknown-url.com")
	checkReviewersNonEmpty(t)
}

func TestGetReviewers_Backup(t *testing.T) {

	backupReviewers := []string{"backup-reviewer@google.com"}
	gotReviewers := GetReviewers(nil, testRollerName, []string{"bad-source"}, backupReviewers)
	require.Equal(t, backupReviewers, gotReviewers)
	checkSourceFailed(t, "bad-source")
	checkReviewersEmpty(t)
}
