HamQTH joins the Confirmations page with a sent side only — the site publishes no confirmation feed, so there is nothing to receive — and it defaults to R, the same 'still to upload' the other online services get. That default could not have worked as written. HamQTH and HAMLOG.online keep their sent state in an ADIF extra, and eligibility blocked on the key being PRESENT — so an operator setting the natural R default would have stamped every new QSO 'already gone' and silently disabled the very auto-upload the default arms. Eligibility now reads the VALUE: the ADIF pending statuses mean pending, anything else means sent. Guard-tested both ways.
39 lines
1.1 KiB
Go
39 lines
1.1 KiB
Go
package main
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"hamlog/internal/qso"
|
|
)
|
|
|
|
// A Confirmations default of "R" means "I intend to upload this", not "it has
|
|
// gone" — reading it as sent would silently disable the auto-upload the default
|
|
// was set to arm. Only a real stamp blocks.
|
|
func TestExtrasSaysSent(t *testing.T) {
|
|
pending := []string{"", " ", "R", "r", "N", "Q", "I"}
|
|
for _, v := range pending {
|
|
if extrasSaysSent(v) {
|
|
t.Errorf("extrasSaysSent(%q) = true, want false (still to upload)", v)
|
|
}
|
|
}
|
|
sent := []string{"Y", "y", "20260831"} // "Y" today, a date in older builds
|
|
for _, v := range sent {
|
|
if !extrasSaysSent(v) {
|
|
t.Errorf("extrasSaysSent(%q) = false, want true (already uploaded)", v)
|
|
}
|
|
}
|
|
}
|
|
|
|
// The HamQTH default lands on the extras key the uploader reads, and must leave
|
|
// the QSO eligible.
|
|
func TestHamQTHDefaultStaysUploadable(t *testing.T) {
|
|
q := &qso.QSO{Callsign: "F4BPO"}
|
|
applyQSLDefaultsTo(q, defaultQSLDefaults())
|
|
if got := q.Extras[hamqthSentKey]; got != "R" {
|
|
t.Fatalf("HamQTH sent extra = %q, want %q", got, "R")
|
|
}
|
|
if extrasSaysSent(q.Extras[hamqthSentKey]) {
|
|
t.Error("a freshly logged QSO reads as already uploaded to HamQTH")
|
|
}
|
|
}
|