feat: ground competitive insights in peer metrics
This commit is contained in:
@@ -3,6 +3,8 @@ package insight
|
||||
import (
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"git.amiirkhl.ir/starcoach-hackathon/zarinpal-analytics-backend/internal/peercomparison"
|
||||
)
|
||||
|
||||
func TestDeterministicTransactionCopyDistinguishesPaymentStatesWithoutCausalClaims(t *testing.T) {
|
||||
@@ -27,6 +29,22 @@ func TestDeterministicTransactionCopyDistinguishesPaymentStatesWithoutCausalClai
|
||||
}
|
||||
}
|
||||
|
||||
func TestDeterministicPeerCopyNamesStrongestWeakestAndAction(t *testing.T) {
|
||||
result := peercomparison.Result{State: peercomparison.StateReady, Metrics: []peercomparison.Metric{
|
||||
{MetricID: "payment_success_rate", MerchantPerformancePercentile: "85.00"},
|
||||
{MetricID: "verification_completion_rate", MerchantPerformancePercentile: "40.00"},
|
||||
}}
|
||||
copy := deterministicPeerCopy(&result, "مرداد ۱۴۰۵")
|
||||
for _, expected := range []string{"مرداد ۱۴۰۵", "موفقیت پرداخت", "صدک 85.00", "تکمیل تأیید", "صدک 40.00"} {
|
||||
if !strings.Contains(copy.LatestObserved.Body, expected) {
|
||||
t.Fatalf("peer summary missing %q: %s", expected, copy.LatestObserved.Body)
|
||||
}
|
||||
}
|
||||
if !strings.Contains(copy.Options[0].Description, "تکمیل تأیید") {
|
||||
t.Fatalf("peer action did not target weakest category: %+v", copy.Options)
|
||||
}
|
||||
}
|
||||
|
||||
func TestDeterministicTransactionCopyHandlesEmptyPeriod(t *testing.T) {
|
||||
copy := deterministicTransactionCopy(
|
||||
PeriodScope{JalaliLabelFA: "امروز"},
|
||||
|
||||
Reference in New Issue
Block a user