refactor(diffview): refactor tests to be table driven

Andrey Nering created

Change summary

internal/exp/diffview/diffview_test.go                                                  | 155 
internal/exp/diffview/testdata/TestDiffView/Unified/CustomContextLines/DarkMode.golden  |   0 
internal/exp/diffview/testdata/TestDiffView/Unified/CustomContextLines/LightMode.golden |   0 
internal/exp/diffview/testdata/TestDiffView/Unified/Default/DarkMode.golden             |   0 
internal/exp/diffview/testdata/TestDiffView/Unified/Default/LightMode.golden            |   0 
internal/exp/diffview/testdata/TestDiffView/Unified/MultipleHunks/DarkMode.golden       |   0 
internal/exp/diffview/testdata/TestDiffView/Unified/MultipleHunks/LightMode.golden      |   0 
internal/exp/diffview/testdata/TestDiffView/Unified/Narrow/DarkMode.golden              |   0 
internal/exp/diffview/testdata/TestDiffView/Unified/Narrow/LightMode.golden             |   0 
internal/exp/diffview/testdata/TestDiffView/Unified/NoLineNumbers/DarkMode.golden       |   0 
internal/exp/diffview/testdata/TestDiffView/Unified/NoLineNumbers/LightMode.golden      |   0 
11 files changed, 77 insertions(+), 78 deletions(-)

Detailed changes

internal/exp/diffview/diffview_test.go 🔗

@@ -26,84 +26,83 @@ var TestNarrowBefore string
 //go:embed testdata/TestNarrow.after
 var TestNarrowAfter string
 
-func TestDefault(t *testing.T) {
-	dv := diffview.New().
-		Before("main.go", TestDefaultBefore).
-		After("main.go", TestDefaultAfter)
-
-	t.Run("LightMode", func(t *testing.T) {
-		dv = dv.Style(diffview.DefaultLightStyle)
-		golden.RequireEqual(t, []byte(dv.String()))
-	})
-
-	t.Run("DarkMode", func(t *testing.T) {
-		dv = dv.Style(diffview.DefaultDarkStyle)
-		golden.RequireEqual(t, []byte(dv.String()))
-	})
-}
-
-func TestNoLineNumbers(t *testing.T) {
-	dv := diffview.New().
-		Before("main.go", TestDefaultBefore).
-		After("main.go", TestDefaultAfter).
-		LineNumbers(false)
-
-	t.Run("LightMode", func(t *testing.T) {
-		dv = dv.Style(diffview.DefaultLightStyle)
-		golden.RequireEqual(t, []byte(dv.String()))
-	})
-
-	t.Run("DarkMode", func(t *testing.T) {
-		dv = dv.Style(diffview.DefaultDarkStyle)
-		golden.RequireEqual(t, []byte(dv.String()))
-	})
-}
-
-func TestMultipleHunks(t *testing.T) {
-	dv := diffview.New().
-		Before("main.go", TestMultipleHunksBefore).
-		After("main.go", TestMultipleHunksAfter)
-
-	t.Run("LightMode", func(t *testing.T) {
-		dv = dv.Style(diffview.DefaultLightStyle)
-		golden.RequireEqual(t, []byte(dv.String()))
-	})
-
-	t.Run("DarkMode", func(t *testing.T) {
-		dv = dv.Style(diffview.DefaultDarkStyle)
-		golden.RequireEqual(t, []byte(dv.String()))
-	})
-}
-
-func TestCustomContextLines(t *testing.T) {
-	dv := diffview.New().
-		Before("main.go", TestMultipleHunksBefore).
-		After("main.go", TestMultipleHunksAfter).
-		ContextLines(4)
-
-	t.Run("LightMode", func(t *testing.T) {
-		dv = dv.Style(diffview.DefaultLightStyle)
-		golden.RequireEqual(t, []byte(dv.String()))
-	})
-
-	t.Run("DarkMode", func(t *testing.T) {
-		dv = dv.Style(diffview.DefaultDarkStyle)
-		golden.RequireEqual(t, []byte(dv.String()))
-	})
-}
-
-func TestNarrow(t *testing.T) {
-	dv := diffview.New().
-		Before("text.txt", TestNarrowBefore).
-		After("text.txt", TestNarrowAfter)
+type (
+	TestFunc  func(dv *diffview.DiffView) *diffview.DiffView
+	TestFuncs map[string]TestFunc
+)
 
-	t.Run("LightMode", func(t *testing.T) {
-		dv = dv.Style(diffview.DefaultLightStyle)
-		golden.RequireEqual(t, []byte(dv.String()))
-	})
+var (
+	UnifiedFunc = func(dv *diffview.DiffView) *diffview.DiffView {
+		return dv.Unified()
+	}
+
+	DefaultFunc = func(dv *diffview.DiffView) *diffview.DiffView {
+		return dv.
+			Before("main.go", TestDefaultBefore).
+			After("main.go", TestDefaultAfter)
+	}
+	NoLineNumbersFunc = func(dv *diffview.DiffView) *diffview.DiffView {
+		return dv.
+			Before("main.go", TestDefaultBefore).
+			After("main.go", TestDefaultAfter).
+			LineNumbers(false)
+	}
+	MultipleHunksFunc = func(dv *diffview.DiffView) *diffview.DiffView {
+		return dv.
+			Before("main.go", TestMultipleHunksBefore).
+			After("main.go", TestMultipleHunksAfter)
+	}
+	CustomContextLinesFunc = func(dv *diffview.DiffView) *diffview.DiffView {
+		return dv.
+			Before("main.go", TestMultipleHunksBefore).
+			After("main.go", TestMultipleHunksAfter).
+			ContextLines(4)
+	}
+	NarrowFunc = func(dv *diffview.DiffView) *diffview.DiffView {
+		return dv.
+			Before("text.txt", TestNarrowBefore).
+			After("text.txt", TestNarrowAfter)
+	}
+
+	LightModeFunc = func(dv *diffview.DiffView) *diffview.DiffView {
+		return dv.Style(diffview.DefaultLightStyle)
+	}
+	DarkModeFunc = func(dv *diffview.DiffView) *diffview.DiffView {
+		return dv.Style(diffview.DefaultDarkStyle)
+	}
+
+	LayoutFuncs = TestFuncs{
+		"Unified": UnifiedFunc,
+	}
+	BehaviorFuncs = TestFuncs{
+		"Default":            DefaultFunc,
+		"NoLineNumbers":      NoLineNumbersFunc,
+		"MultipleHunks":      MultipleHunksFunc,
+		"CustomContextLines": CustomContextLinesFunc,
+		"Narrow":             NarrowFunc,
+	}
+	ThemeFuncs = TestFuncs{
+		"LightMode": LightModeFunc,
+		"DarkMode":  DarkModeFunc,
+	}
+)
 
-	t.Run("DarkMode", func(t *testing.T) {
-		dv = dv.Style(diffview.DefaultDarkStyle)
-		golden.RequireEqual(t, []byte(dv.String()))
-	})
+func TestDiffView(t *testing.T) {
+	for layoutName, layoutFunc := range LayoutFuncs {
+		t.Run(layoutName, func(t *testing.T) {
+			for behaviorName, behaviorFunc := range BehaviorFuncs {
+				t.Run(behaviorName, func(t *testing.T) {
+					for themeName, themeFunc := range ThemeFuncs {
+						t.Run(themeName, func(t *testing.T) {
+							dv := diffview.New()
+							dv = layoutFunc(dv)
+							dv = behaviorFunc(dv)
+							dv = themeFunc(dv)
+							golden.RequireEqual(t, []byte(dv.String()))
+						})
+					}
+				})
+			}
+		})
+	}
 }