about summary refs log tree commit diff stats
path: root/gomponents_generic_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'gomponents_generic_test.go')
-rw-r--r--gomponents_generic_test.go34
1 files changed, 34 insertions, 0 deletions
diff --git a/gomponents_generic_test.go b/gomponents_generic_test.go
new file mode 100644
index 0000000..0492ae3
--- /dev/null
+++ b/gomponents_generic_test.go
@@ -0,0 +1,34 @@
+//go:build go1.18
+// +build go1.18
+
+package gomponents_test
+
+import (
+	"os"
+	"testing"
+
+	g "github.com/maragudk/gomponents"
+	"github.com/maragudk/gomponents/internal/assert"
+)
+
+func TestMap(t *testing.T) {
+	t.Run("maps slices to nodes", func(t *testing.T) {
+		items := []string{"hat", "partyhat", "turtlehat"}
+		lis := g.Map(items, func(i string) g.Node {
+			return g.El("li", g.Text(i))
+		})
+
+		list := g.El("ul", lis...)
+
+		assert.Equal(t, `<ul><li>hat</li><li>partyhat</li><li>turtlehat</li></ul>`, list)
+	})
+}
+
+func ExampleMap() {
+	items := []string{"party hat", "super hat"}
+	e := g.El("ul", g.Group(g.Map(items, func(i string) g.Node {
+		return g.El("li", g.Text(i))
+	})))
+	_ = e.Render(os.Stdout)
+	// Output: <ul><li>party hat</li><li>super hat</li></ul>
+}