summaryrefslogtreecommitdiffstats
path: root/pkg/cheatsheet/generate_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/cheatsheet/generate_test.go')
-rw-r--r--pkg/cheatsheet/generate_test.go281
1 files changed, 281 insertions, 0 deletions
diff --git a/pkg/cheatsheet/generate_test.go b/pkg/cheatsheet/generate_test.go
new file mode 100644
index 000000000..94b571454
--- /dev/null
+++ b/pkg/cheatsheet/generate_test.go
@@ -0,0 +1,281 @@
+package cheatsheet
+
+import (
+ "testing"
+
+ "github.com/jesseduffield/lazygit/pkg/gui/types"
+ "github.com/jesseduffield/lazygit/pkg/i18n"
+ "github.com/stretchr/testify/assert"
+)
+
+func TestGetBindingSections(t *testing.T) {
+ tr := i18n.EnglishTranslationSet()
+
+ tests := []struct {
+ testName string
+ bindings []*types.Binding
+ expected []*bindingSection
+ }{
+ {
+ testName: "no bindings",
+ bindings: []*types.Binding{},
+ expected: []*bindingSection{},
+ },
+ {
+ testName: "one binding",
+ bindings: []*types.Binding{
+ {
+ ViewName: "files",
+ Description: "stage file",
+ },
+ },
+ expected: []*bindingSection{
+ {
+ title: "Files Panel",
+ bindings: []*types.Binding{
+ {
+ ViewName: "files",
+ Description: "stage file",
+ },
+ },
+ },
+ },
+ },
+ {
+ testName: "one binding with context",
+ bindings: []*types.Binding{
+ {
+ ViewName: "files",
+ Description: "stage file",
+ Contexts: []string{"submodules"},
+ },
+ },
+ expected: []*bindingSection{
+ {
+ title: "Files Panel (Submodules)",
+ bindings: []*types.Binding{
+ {
+ ViewName: "files",
+ Description: "stage file",
+ Contexts: []string{"submodules"},
+ },
+ },
+ },
+ },
+ },
+ {
+ testName: "global binding",
+ bindings: []*types.Binding{
+ {
+ ViewName: "",
+ Description: "quit",
+ },
+ },
+ expected: []*bindingSection{
+ {
+ title: "Global Keybindings",
+ bindings: []*types.Binding{
+ {
+ ViewName: "",
+ Description: "quit",
+ },
+ },
+ },
+ },
+ },
+ {
+ testName: "grouped bindings",
+ bindings: []*types.Binding{
+ {
+ ViewName: "files",
+ Description: "stage file",
+ Contexts: []string{"files"},
+ },
+ {
+ ViewName: "files",
+ Description: "unstage file",
+ Contexts: []string{"files"},
+ },
+ {
+ ViewName: "files",
+ Description: "drop submodule",
+ Contexts: []string{"submodules"},
+ },
+ {
+ ViewName: "commits",
+ Description: "revert commit",
+ },
+ },
+ expected: []*bindingSection{
+ {
+ title: "Commits Panel",
+ bindings: []*types.Binding{
+ {
+ ViewName: "commits",
+ Description: "revert commit",
+ },
+ },
+ },
+ {
+ title: "Files Panel (Files)",
+ bindings: []*types.Binding{
+ {
+ ViewName: "files",
+ Description: "stage file",
+ Contexts: []string{"files"},
+ },
+ {
+ ViewName: "files",
+ Description: "unstage file",
+ Contexts: []string{"files"},
+ },
+ },
+ },
+ {
+ title: "Files Panel (Submodules)",
+ bindings: []*types.Binding{
+ {
+ ViewName: "files",
+ Description: "drop submodule",
+ Contexts: []string{"submodules"},
+ },
+ },
+ },
+ },
+ },
+ {
+ testName: "with navigation bindings",
+ bindings: []*types.Binding{
+ {
+ ViewName: "files",
+ Description: "stage file",
+ },
+ {
+ ViewName: "files",
+ Description: "unstage file",
+ },
+ {
+ ViewName: "files",
+ Description: "scroll",
+ Tag: "navigation",
+ },
+ {
+ ViewName: "commits",
+ Description: "revert commit",
+ },
+ },
+ expected: []*bindingSection{
+ {
+ title: "List Panel Navigation",
+ bindings: []*types.Binding{
+ {
+ ViewName: "files",
+ Description: "scroll",
+ Tag: "navigation",
+ },
+ },
+ },
+ {
+ title: "Commits Panel",
+ bindings: []*types.Binding{
+ {
+ ViewName: "commits",
+ Description: "revert commit",
+ },
+ },
+ },
+ {
+ title: "Files Panel",
+ bindings: []*types.Binding{
+ {
+ ViewName: "files",
+ Description: "stage file",
+ },
+ {
+ ViewName: "files",
+ Description: "unstage file",
+ },
+ },
+ },
+ },
+ },
+ {
+ testName: "with duplicate navigation bindings",
+ bindings: []*types.Binding{
+ {
+ ViewName: "files",
+ Description: "stage file",
+ },
+ {
+ ViewName: "files",
+ Description: "unstage file",
+ },
+ {
+ ViewName: "files",
+ Description: "scroll",
+ Tag: "navigation",
+ },
+ {
+ ViewName: "commits",
+ Description: "revert commit",
+ },
+ {
+ ViewName: "commits",
+ Description: "scroll",
+ Tag: "navigation",
+ },
+ {
+ ViewName: "commits",
+ Description: "page up",
+ Tag: "navigation",
+ },
+ },
+ expected: []*bindingSection{
+ {
+ title: "List Panel Navigation",
+ bindings: []*types.Binding{
+ {
+ ViewName: "files",
+ Description: "scroll",
+ Tag: "navigation",
+ },
+ {
+ ViewName: "commits",
+ Description: "page up",
+ Tag: "navigation",
+ },
+ },
+ },
+ {
+ title: "Commits Panel",
+ bindings: []*types.Binding{
+ {
+ ViewName: "commits",
+ Description: "revert commit",
+ },
+ },
+ },
+ {
+ title: "Files Panel",
+ bindings: []*types.Binding{
+ {
+ ViewName: "files",
+ Description: "stage file",
+ },
+ {
+ ViewName: "files",
+ Description: "unstage file",
+ },
+ },
+ },
+ },
+ },
+ }
+
+ for _, test := range tests {
+ t.Run(test.testName, func(t *testing.T) {
+ actual := getBindingSections(test.bindings, &tr)
+ assert.EqualValues(t, test.expected, actual)
+ })
+ }
+}