package el_test
import (
"testing"
g "github.com/maragudk/gomponents"
"github.com/maragudk/gomponents/assert"
"github.com/maragudk/gomponents/el"
)
func TestDocument(t *testing.T) {
t.Run("returns doctype and children", func(t *testing.T) {
assert.Equal(t, `
`, el.Document(g.El("html")))
})
}
func TestHTML(t *testing.T) {
t.Run("returns an html element", func(t *testing.T) {
assert.Equal(t, "", el.HTML(g.El("div"), g.El("span")))
})
}
func TestHead(t *testing.T) {
t.Run("returns a head element", func(t *testing.T) {
assert.Equal(t, "", el.Head(g.El("title"), g.El("link")))
})
}
func TestBody(t *testing.T) {
t.Run("returns a body element", func(t *testing.T) {
assert.Equal(t, "", el.Body(g.El("div"), g.El("span")))
})
}
func TestTitle(t *testing.T) {
t.Run("returns a title element with text content", func(t *testing.T) {
assert.Equal(t, "hat", el.Title("hat"))
})
}
func TestMeta(t *testing.T) {
t.Run("returns a meta element", func(t *testing.T) {
assert.Equal(t, ``, el.Meta(g.Attr("charset", "utf-8")))
})
}
func TestLink(t *testing.T) {
t.Run("returns a link element", func(t *testing.T) {
assert.Equal(t, ``, el.Link(g.Attr("rel", "stylesheet")))
})
}
func TestStyle(t *testing.T) {
t.Run("returns a style element", func(t *testing.T) {
assert.Equal(t, ``, el.Style(g.Attr("type", "text/css")))
})
}
func TestDiv(t *testing.T) {
t.Run("returns a div element", func(t *testing.T) {
assert.Equal(t, `
`, el.Div(el.Span()))
})
}
func TestSpan(t *testing.T) {
t.Run("returns a span element", func(t *testing.T) {
assert.Equal(t, `hat`, el.Span(g.Text("hat")))
})
}
func TestA(t *testing.T) {
t.Run("returns an a element with a href attribute", func(t *testing.T) {
assert.Equal(t, `hat`, el.A("#", g.Text("hat")))
})
}
func TestP(t *testing.T) {
t.Run("returns a p element", func(t *testing.T) {
assert.Equal(t, `hat
`, el.P(g.Text("hat")))
})
}
func TestH1(t *testing.T) {
t.Run("returns an h1 element", func(t *testing.T) {
assert.Equal(t, `hat
`, el.H1("hat"))
})
}
func TestH2(t *testing.T) {
t.Run("returns an h2 element", func(t *testing.T) {
assert.Equal(t, `hat
`, el.H2("hat"))
})
}
func TestH3(t *testing.T) {
t.Run("returns an h3 element", func(t *testing.T) {
assert.Equal(t, `hat
`, el.H3("hat"))
})
}
func TestH4(t *testing.T) {
t.Run("returns an h4 element", func(t *testing.T) {
assert.Equal(t, `hat
`, el.H4("hat"))
})
}
func TestH5(t *testing.T) {
t.Run("returns an h5 element", func(t *testing.T) {
assert.Equal(t, `hat
`, el.H5("hat"))
})
}
func TestH6(t *testing.T) {
t.Run("returns an h6 element", func(t *testing.T) {
assert.Equal(t, `hat
`, el.H6("hat"))
})
}
func TestOl(t *testing.T) {
t.Run("returns an ol element", func(t *testing.T) {
assert.Equal(t, `
`, el.Ol(el.Li()))
})
}
func TestUl(t *testing.T) {
t.Run("returns a ul element", func(t *testing.T) {
assert.Equal(t, ``, el.Ul(el.Li()))
})
}
func TestLi(t *testing.T) {
t.Run("returns an li element", func(t *testing.T) {
assert.Equal(t, `hat`, el.Li(g.Text("hat")))
})
}
func TestB(t *testing.T) {
t.Run("returns a b element", func(t *testing.T) {
assert.Equal(t, `hat`, el.B("hat"))
})
}
func TestStrong(t *testing.T) {
t.Run("returns a strong element", func(t *testing.T) {
assert.Equal(t, `hat`, el.Strong("hat"))
})
}
func TestI(t *testing.T) {
t.Run("returns an i element", func(t *testing.T) {
assert.Equal(t, `hat`, el.I("hat"))
})
}
func TestEm(t *testing.T) {
t.Run("returns an em element", func(t *testing.T) {
assert.Equal(t, `hat`, el.Em("hat"))
})
}
func TestImg(t *testing.T) {
t.Run("returns an img element with href and alt attributes", func(t *testing.T) {
assert.Equal(t, `
`, el.Img("hat.png", "hat"))
})
}