package consenttool

import (
	"os"
	"path/filepath"
	"testing"
)

func TestCollectConsentedNames(t *testing.T) {
	rows := []map[string]string{
		{"display_name": "Alice", "consent": "true"},
		{"display_name": "Bob", "consent": "false"},
		{"display_name": "Alice", "consent": "yes"},
	}

	names := collectConsentedNames(rows, ConsentConfig{})
	if len(names) != 1 || names[0] != "Alice" {
		t.Fatalf("unexpected names: %#v", names)
	}
}

func TestExtractLog(t *testing.T) {
	dir := t.TempDir()
	cfg := &Config{
		Log: LogConfig{
			InputPath:    "input.log",
			OutputPath:   "out.log",
			IncludeRegex: `ID:[0-9]+`,
		},
	}
	if err := os.WriteFile(filepath.Join(dir, "input.log"), []byte("x\nID:1 hello\nnope\n"), 0o600); err != nil {
		t.Fatalf("WriteFile: %v", err)
	}
	if err := extractLog(cfg, dir); err != nil {
		t.Fatalf("extractLog: %v", err)
	}
	out, err := os.ReadFile(filepath.Join(dir, "out.log"))
	if err != nil {
		t.Fatalf("ReadFile: %v", err)
	}
	if string(out) != "ID:1 hello\n" {
		t.Fatalf("unexpected output: %q", string(out))
	}
}
