package main

import (
	"testing"

	"hamlog/internal/qso"
)

// A bulk-editable field passes through THREE tables: the field list in the UI,
// bulkFieldColumns here, and bulkEditableCols in internal/qso. Mode and RST were
// added to the first and the third and not the second, so the dialog offered
// them and the save failed with "unknown field" — reported from the field.
//
// Nothing warns about that: each table is valid on its own. This is the check.
func TestEveryMappedBulkFieldIsWhitelisted(t *testing.T) {
	for id, col := range bulkFieldColumns {
		if !qso.BulkEditable(col) {
			t.Errorf("bulk field %q maps to column %q, which internal/qso refuses to write", id, col)
		}
	}
}

// And the reverse: a column the qso layer allows but nothing maps to is dead
// weight — it looks supported from the inside and cannot be reached from outside.
func TestNoUnreachableBulkColumn(t *testing.T) {
	mapped := map[string]bool{}
	for _, col := range bulkFieldColumns {
		mapped[col] = true
	}
	for _, col := range qso.BulkEditableColumns() {
		if !mapped[col] {
			t.Errorf("column %q is bulk-writable but no field maps to it — unreachable", col)
		}
	}
}
