package whx

import (
	"testing"
)

type tester struct {
	t  *testing.T
	hx *WuiHx
}

func TestWhx(t *testing.T) {
	sf := &tester{
		t: t,
	}
	sf.new()
	sf.str()
}

// Получает строку атрибутов
func (sf *tester) str() {
	sf.t.Log("str")
	sf.hx.Url().Method().Set("hx-put")
	sf.hx.Trigger().Set("load")
	sf.hx.Target().Set("#main")
	sf.hx.Swap().Set("before")
	sf.hx.Oob().Set("true")
	sf.hx.Vals().Set("test", 3)
	str := sf.hx.String()
	_str := `hx-put="/wui/click/123" hx-trigger="load" hx-target="#main" hx-swap="before" hx-swap-oob="true" hx-vals='{"test":3}'`
	if str != _str {
		sf.t.Fatalf("str(): \n\t%v\n\t%v", str, _str)
	}
}

// Создаёт новые тэги HTMX
func (sf *tester) new() {
	sf.t.Log("new")
	hx := NewWuiHx("/wui/click/123")
	if hx == nil {
		sf.t.Fatalf("new(): IWuiHx==nil")
	}
	if vals := hx.Vals(); vals == nil {
		sf.t.Fatalf("new(): vals==nil")
	}
	if url := hx.Url(); url == nil {
		sf.t.Fatalf("new(): url==nil")
	}
	if trig := hx.Trigger(); trig == nil {
		sf.t.Fatalf("trig(): trig==nil")
	}
	if targ := hx.Target(); targ == nil {
		sf.t.Fatalf("trig(): targ==nil")
	}
	if targ := hx.Target(); targ == nil {
		sf.t.Fatalf("trig(): targ==nil")
	}
	if oob := hx.Oob(); oob == nil {
		sf.t.Fatalf("trig(): oob==nil")
	}
	if swap := hx.Swap(); swap == nil {
		sf.t.Fatalf("trig(): swap==nil")
	}
	sf.hx = hx
}
