package wbutton

import (
	"testing"
)

type tester struct {
	t      *testing.T
	chCall chan string
}

func TestWuiButton(t *testing.T) {
	sf := &tester{
		t:      t,
		chCall: make(chan string, 2),
	}
	sf.new()
}

// Создание кнопки
func (sf *tester) new() {
	sf.t.Log("new")
	btn := NewWuiButton("test_val", sf.fnBack)
	if btn == nil {
		sf.t.Fatalf("new(): WuiButton==nil")
	}
	if txt := btn.Text(); txt == nil {
		sf.t.Fatalf("new(): IWuiText==nil")
	}
	if html := btn.Html(); html == "" {
		sf.t.Fatalf("new(): html is empty")
	}
	if hx := btn.Hx(); hx == nil {
		sf.t.Fatalf("new(): IWuiHx==nil")
	}
	btn.Click(map[string]string{})
	if str := <-sf.chCall; str != "test" {
		sf.t.Fatalf("new(): bad called")
	}
}

// Функция обратного вызова
func (sf *tester) fnBack(dict map[string]string) string {
	sf.chCall <- "test"
	return "test_click"
}
