package lookup
import (
"encoding/xml"
"strings"
"testing"
)
// QRZ sends the island reference and OpsLog read past it.
//
// It matters more for IOTA than it would for another award: unlike POTA there
// is no live "who is on an island right now" feed anywhere, so the callbook
// record is the practical source — and it is known BEFORE the contact is
// logged, which is when it is useful.
func TestQRZCallsignCarriesIOTA(t *testing.T) {
const body = `
F5IRH
Max
France
IN87ki
14
EU-048
abc
`
var resp qrzDB
if err := xml.Unmarshal([]byte(body), &resp); err != nil {
t.Fatalf("unmarshal: %v", err)
}
if resp.Callsign.IOTA != "EU-048" {
t.Fatalf("the tag decoded as %q — the field is not being read", resp.Callsign.IOTA)
}
// And a record with no island must not invent one.
var none qrzDB
if err := xml.Unmarshal([]byte(strings.Replace(body, "EU-048", "", 1)), &none); err != nil {
t.Fatalf("unmarshal: %v", err)
}
if none.Callsign.IOTA != "" {
t.Errorf("IOTA = %q for a record without one", none.Callsign.IOTA)
}
}