internal/tui/view/table_test.go

package view

import (
	"testing"
	"time"

	"github.com/mercemay/portr/internal/check/result"
	"github.com/mercemay/portr/internal/config/target"
)

func sample() []result.Result {
	return []result.Result{
		result.Success(target.Target{Host: "alpha", Port: 22}, 5*time.Millisecond, 1),
		result.Success(target.Target{Host: "bravo", Port: 80}, 8*time.Millisecond, 1),
		result.Failure(target.Target{Host: "charlie", Port: 22}, nil, 0, 2),
	}
}

func TestTable_FilterAll(t *testing.T) {
	tbl := NewTable()
	tbl.Load(sample())
	if got := len(tbl.visible()); got != 3 {
		t.Errorf("visible=%d, want 3", got)
	}
}

func TestTable_FilterMatch(t *testing.T) {
	tbl := NewTable()
	tbl.Load(sample())
	tbl.Filter("bra")
	if got := len(tbl.visible()); got != 1 {
		t.Errorf("visible=%d, want 1", got)
	}
}

func TestTable_FilterEmpty(t *testing.T) {
	tbl := NewTable()
	tbl.Load(sample())
	tbl.Filter("zzz")
	if got := len(tbl.visible()); got != 0 {
		t.Errorf("visible=%d, want 0", got)
	}
}