package paymentstatus_test import ( "strings" "testing" "gitea.futuresens.co.uk/futuresens/hardlink/paymentstatus" ) func TestFixedStatusValues(t *testing.T) { statuses := []struct { name string value string want string }{ {"Starting", paymentstatus.Starting, "PAYMENT_STARTING"}, {"Started", paymentstatus.Started, "PAYMENT_STARTED"}, {"RequestSent", paymentstatus.RequestSent, "PAYMENT_REQUEST_SENT"}, {"Accepted", paymentstatus.Accepted, "PAYMENT_ACCEPTED"}, {"PresentCard", paymentstatus.PresentCard, "PAYMENT_PRESENT_CARD"}, {"InsertCard", paymentstatus.InsertCard, "PAYMENT_INSERT_CARD"}, {"SwipeCard", paymentstatus.SwipeCard, "PAYMENT_SWIPE_CARD"}, {"EnterPIN", paymentstatus.EnterPIN, "PAYMENT_ENTER_PIN"}, {"EnterPINAgain", paymentstatus.EnterPINAgain, "PAYMENT_ENTER_PIN_AGAIN"}, {"PleaseWait", paymentstatus.PleaseWait, "PAYMENT_PLEASE_WAIT"}, {"DoNotRemoveCard", paymentstatus.DoNotRemoveCard, "PAYMENT_DO_NOT_REMOVE_CARD"}, {"RemoveCard", paymentstatus.RemoveCard, "PAYMENT_REMOVE_CARD"}, {"TryAnotherInterface", paymentstatus.TryAnotherInterface, "PAYMENT_TRY_ANOTHER_INTERFACE"}, {"Processing", paymentstatus.Processing, "PAYMENT_PROCESSING"}, {"Authorized", paymentstatus.Authorized, "PAYMENT_AUTHORIZED"}, {"Approved", paymentstatus.Approved, "PAYMENT_APPROVED"}, {"Cancelling", paymentstatus.Cancelling, "PAYMENT_CANCELLING"}, {"Cancelled", paymentstatus.Cancelled, "PAYMENT_CANCELLED"}, {"Declined", paymentstatus.Declined, "PAYMENT_DECLINED"}, {"Expired", paymentstatus.Expired, "PAYMENT_EXPIRED"}, {"Timeout", paymentstatus.Timeout, "PAYMENT_TIMEOUT"}, {"SignatureRequired", paymentstatus.SignatureRequired, "PAYMENT_SIGNATURE_REQUIRED"}, {"SignatureRejecting", paymentstatus.SignatureRejecting, "PAYMENT_SIGNATURE_REJECTING"}, {"SignatureRejected", paymentstatus.SignatureRejected, "PAYMENT_SIGNATURE_REJECTED"}, {"Voided", paymentstatus.Voided, "PAYMENT_VOIDED"}, {"DailyLimitExceeded", paymentstatus.DailyLimitExceeded, "PAYMENT_DAILY_LIMIT_EXCEEDED"}, {"VoidFailed", paymentstatus.VoidFailed, "PAYMENT_VOID_FAILED"}, {"LimitValidationError", paymentstatus.LimitValidationError, "PAYMENT_LIMIT_VALIDATION_ERROR"}, {"Error", paymentstatus.Error, "PAYMENT_ERROR"}, {"TerminalUnavailable", paymentstatus.TerminalUnavailable, "PAYMENT_TERMINAL_UNAVAILABLE"}, } seen := make(map[string]string, len(statuses)) for _, status := range statuses { t.Run(status.name, func(t *testing.T) { if status.value != status.want { t.Fatalf("got %q, want %q", status.value, status.want) } if !strings.HasPrefix(status.value, "PAYMENT_") { t.Fatalf("status %q does not have PAYMENT_ prefix", status.value) } }) if previous, exists := seen[status.value]; exists { t.Errorf("%s and %s have duplicate value %q", previous, status.name, status.value) } seen[status.value] = status.name } } func TestDojoPrefixes(t *testing.T) { if paymentstatus.DojoNotificationPrefix != "PAYMENT_DOJO_NOTIFICATION_" { t.Fatalf( "DojoNotificationPrefix = %q, want %q", paymentstatus.DojoNotificationPrefix, "PAYMENT_DOJO_NOTIFICATION_", ) } if paymentstatus.DojoStatusPrefix != "PAYMENT_DOJO_STATUS_" { t.Fatalf( "DojoStatusPrefix = %q, want %q", paymentstatus.DojoStatusPrefix, "PAYMENT_DOJO_STATUS_", ) } if paymentstatus.DojoNotificationPrefix == paymentstatus.DojoStatusPrefix { t.Fatal("Dojo prefixes must differ") } }