From a947f597388efb57b755099b4e57b2f020eee646 Mon Sep 17 00:00:00 2001 From: Andrey Nering Date: Fri, 6 Jun 2025 13:53:59 -0300 Subject: [PATCH] refactor(diffview): refactor tests to be table driven --- internal/exp/diffview/diffview_test.go | 155 +++++++++--------- .../CustomContextLines}/DarkMode.golden | 0 .../CustomContextLines}/LightMode.golden | 0 .../Unified/Default}/DarkMode.golden | 0 .../Unified/Default}/LightMode.golden | 0 .../Unified/MultipleHunks}/DarkMode.golden | 0 .../Unified/MultipleHunks}/LightMode.golden | 0 .../Unified/Narrow}/DarkMode.golden | 0 .../Unified/Narrow}/LightMode.golden | 0 .../Unified/NoLineNumbers}/DarkMode.golden | 0 .../Unified/NoLineNumbers}/LightMode.golden | 0 11 files changed, 77 insertions(+), 78 deletions(-) rename internal/exp/diffview/testdata/{TestCustomContextLines => TestDiffView/Unified/CustomContextLines}/DarkMode.golden (100%) rename internal/exp/diffview/testdata/{TestCustomContextLines => TestDiffView/Unified/CustomContextLines}/LightMode.golden (100%) rename internal/exp/diffview/testdata/{TestDefault => TestDiffView/Unified/Default}/DarkMode.golden (100%) rename internal/exp/diffview/testdata/{TestDefault => TestDiffView/Unified/Default}/LightMode.golden (100%) rename internal/exp/diffview/testdata/{TestMultipleHunks => TestDiffView/Unified/MultipleHunks}/DarkMode.golden (100%) rename internal/exp/diffview/testdata/{TestMultipleHunks => TestDiffView/Unified/MultipleHunks}/LightMode.golden (100%) rename internal/exp/diffview/testdata/{TestNarrow => TestDiffView/Unified/Narrow}/DarkMode.golden (100%) rename internal/exp/diffview/testdata/{TestNarrow => TestDiffView/Unified/Narrow}/LightMode.golden (100%) rename internal/exp/diffview/testdata/{TestNoLineNumbers => TestDiffView/Unified/NoLineNumbers}/DarkMode.golden (100%) rename internal/exp/diffview/testdata/{TestNoLineNumbers => TestDiffView/Unified/NoLineNumbers}/LightMode.golden (100%) diff --git a/internal/exp/diffview/diffview_test.go b/internal/exp/diffview/diffview_test.go index ebfa2f99f808c29b4393ae1e6214add8734cb335..7d5abeab92444c32822642decb87108310fb826a 100644 --- a/internal/exp/diffview/diffview_test.go +++ b/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())) + }) + } + }) + } + }) + } } diff --git a/internal/exp/diffview/testdata/TestCustomContextLines/DarkMode.golden b/internal/exp/diffview/testdata/TestDiffView/Unified/CustomContextLines/DarkMode.golden similarity index 100% rename from internal/exp/diffview/testdata/TestCustomContextLines/DarkMode.golden rename to internal/exp/diffview/testdata/TestDiffView/Unified/CustomContextLines/DarkMode.golden diff --git a/internal/exp/diffview/testdata/TestCustomContextLines/LightMode.golden b/internal/exp/diffview/testdata/TestDiffView/Unified/CustomContextLines/LightMode.golden similarity index 100% rename from internal/exp/diffview/testdata/TestCustomContextLines/LightMode.golden rename to internal/exp/diffview/testdata/TestDiffView/Unified/CustomContextLines/LightMode.golden diff --git a/internal/exp/diffview/testdata/TestDefault/DarkMode.golden b/internal/exp/diffview/testdata/TestDiffView/Unified/Default/DarkMode.golden similarity index 100% rename from internal/exp/diffview/testdata/TestDefault/DarkMode.golden rename to internal/exp/diffview/testdata/TestDiffView/Unified/Default/DarkMode.golden diff --git a/internal/exp/diffview/testdata/TestDefault/LightMode.golden b/internal/exp/diffview/testdata/TestDiffView/Unified/Default/LightMode.golden similarity index 100% rename from internal/exp/diffview/testdata/TestDefault/LightMode.golden rename to internal/exp/diffview/testdata/TestDiffView/Unified/Default/LightMode.golden diff --git a/internal/exp/diffview/testdata/TestMultipleHunks/DarkMode.golden b/internal/exp/diffview/testdata/TestDiffView/Unified/MultipleHunks/DarkMode.golden similarity index 100% rename from internal/exp/diffview/testdata/TestMultipleHunks/DarkMode.golden rename to internal/exp/diffview/testdata/TestDiffView/Unified/MultipleHunks/DarkMode.golden diff --git a/internal/exp/diffview/testdata/TestMultipleHunks/LightMode.golden b/internal/exp/diffview/testdata/TestDiffView/Unified/MultipleHunks/LightMode.golden similarity index 100% rename from internal/exp/diffview/testdata/TestMultipleHunks/LightMode.golden rename to internal/exp/diffview/testdata/TestDiffView/Unified/MultipleHunks/LightMode.golden diff --git a/internal/exp/diffview/testdata/TestNarrow/DarkMode.golden b/internal/exp/diffview/testdata/TestDiffView/Unified/Narrow/DarkMode.golden similarity index 100% rename from internal/exp/diffview/testdata/TestNarrow/DarkMode.golden rename to internal/exp/diffview/testdata/TestDiffView/Unified/Narrow/DarkMode.golden diff --git a/internal/exp/diffview/testdata/TestNarrow/LightMode.golden b/internal/exp/diffview/testdata/TestDiffView/Unified/Narrow/LightMode.golden similarity index 100% rename from internal/exp/diffview/testdata/TestNarrow/LightMode.golden rename to internal/exp/diffview/testdata/TestDiffView/Unified/Narrow/LightMode.golden diff --git a/internal/exp/diffview/testdata/TestNoLineNumbers/DarkMode.golden b/internal/exp/diffview/testdata/TestDiffView/Unified/NoLineNumbers/DarkMode.golden similarity index 100% rename from internal/exp/diffview/testdata/TestNoLineNumbers/DarkMode.golden rename to internal/exp/diffview/testdata/TestDiffView/Unified/NoLineNumbers/DarkMode.golden diff --git a/internal/exp/diffview/testdata/TestNoLineNumbers/LightMode.golden b/internal/exp/diffview/testdata/TestDiffView/Unified/NoLineNumbers/LightMode.golden similarity index 100% rename from internal/exp/diffview/testdata/TestNoLineNumbers/LightMode.golden rename to internal/exp/diffview/testdata/TestDiffView/Unified/NoLineNumbers/LightMode.golden