about summary refs log tree commit diff stats
path: root/gomponents_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'gomponents_test.go')
-rw-r--r--gomponents_test.go29
1 files changed, 29 insertions, 0 deletions
diff --git a/gomponents_test.go b/gomponents_test.go
index 32304f3..df5da4f 100644
--- a/gomponents_test.go
+++ b/gomponents_test.go
@@ -284,3 +284,32 @@ func ExampleIf() {
 	_ = e.Render(os.Stdout)
 	// Output: <div><span>You lost your hat!</span></div>
 }
+
+func TestIff(t *testing.T) {
+	t.Run("returns node if condition is true", func(t *testing.T) {
+		n := g.El("div", g.Iff(true, func() g.Node {
+			return g.El("span")
+		}))
+		assert.Equal(t, "<div><span></span></div>", n)
+	})
+
+	t.Run("returns nil if condition is false", func(t *testing.T) {
+		n := g.El("div", g.Iff(false, func() g.Node {
+			return g.El("span")
+		}))
+		assert.Equal(t, "<div></div>", n)
+	})
+}
+
+func ExampleIff() {
+	var nillableVariable *struct {
+		str string
+	}
+	e := g.El("div",
+		g.Iff(nillableVariable != nil, func() g.Node {
+			return g.Text(nillableVariable.str)
+		}),
+	)
+	_ = e.Render(os.Stdout)
+	// Output: <div></div>
+}