diff options
author | Emiliano Ruiz Carletti <contact@eruizc.dev> | 2021-04-22 12:06:04 -0300 |
---|---|---|
committer | Jesse Duffield <jessedduffield@gmail.com> | 2021-06-15 08:31:07 +1000 |
commit | 01e4467d76d1916ae6c495efa6930bb16b9b3a67 (patch) | |
tree | 7b908a7729f8593a74e34ae3d2793b36739a4a47 /pkg | |
parent | b4e6850f98987d23a0211cb5b9b91d173c1e7210 (diff) |
Add test cases for pull mode
Diffstat (limited to 'pkg')
-rw-r--r-- | pkg/commands/sync_test.go | 125 |
1 files changed, 125 insertions, 0 deletions
diff --git a/pkg/commands/sync_test.go b/pkg/commands/sync_test.go index b6a52fe63..9f7ed1b01 100644 --- a/pkg/commands/sync_test.go +++ b/pkg/commands/sync_test.go @@ -96,3 +96,128 @@ func TestGitCommandPush(t *testing.T) { }) } } + +type getPullModeScenario struct { + testName string + getGitConfigValueMock func(string) (string, error) + configPullModeValue string + test func(string) +} + +func TestGetPullMode(t *testing.T) { + + scenarios := getPullModeScenarios(t) + + for _, s := range scenarios { + t.Run(s.testName, func(t *testing.T) { + gitCmd := NewDummyGitCommand() + gitCmd.getGitConfigValue = s.getGitConfigValueMock + s.test(gitCmd.GetPullMode(s.configPullModeValue)) + }) + } +} + +func getPullModeScenarios(t *testing.T) []getPullModeScenario { + return []getPullModeScenario{ + { + testName: "Merge is default", + getGitConfigValueMock: func(s string) (string, error) { + return "", nil + }, + configPullModeValue: "auto", + test: func(actual string) { + assert.Equal(t, "merge", actual) + }, + }, { + testName: "Reads rebase when pull.rebase is true", + getGitConfigValueMock: func(s string) (string, error) { + if s == "pull.rebase" { + return "true", nil + } + return "", nil + }, + configPullModeValue: "auto", + test: func(actual string) { + assert.Equal(t, "rebase", actual) + }, + }, { + testName: "Reads ff-only when pull.ff is only", + getGitConfigValueMock: func(s string) (string, error) { + if s == "pull.ff" { + return "only", nil + } + return "", nil + }, + configPullModeValue: "auto", + test: func(actual string) { + assert.Equal(t, "ff-only", actual) + }, + }, { + testName: "Reads rebase when rebase is true and ff is only", + getGitConfigValueMock: func(s string) (string, error) { + if s == "pull.rebase" { + return "true", nil + } + if s == "pull.ff" { + return "only", nil + } + return "", nil + }, + configPullModeValue: "auto", + test: func(actual string) { + assert.Equal(t, "rebase", actual) + }, + }, { + testName: "Reads rebase when pull.rebase is true", + getGitConfigValueMock: func(s string) (string, error) { + if s == "pull.rebase" { + return "true", nil + } + return "", nil + }, + configPullModeValue: "auto", + test: func(actual string) { + assert.Equal(t, "rebase", actual) + }, + }, { + testName: "Reads ff-only when pull.ff is only", + getGitConfigValueMock: func(s string) (string, error) { + if s == "pull.ff" { + return "only", nil + } + return "", nil + }, + configPullModeValue: "auto", + test: func(actual string) { + assert.Equal(t, "ff-only", actual) + }, + }, { + testName: "Respects merge config", + getGitConfigValueMock: func(s string) (string, error) { + return "", nil + }, + configPullModeValue: "merge", + test: func(actual string) { + assert.Equal(t, "merge", actual) + }, + }, { + testName: "Respects rebase config", + getGitConfigValueMock: func(s string) (string, error) { + return "", nil + }, + configPullModeValue: "rebase", + test: func(actual string) { + assert.Equal(t, "rebase", actual) + }, + }, { + testName: "Respects ff-only config", + getGitConfigValueMock: func(s string) (string, error) { + return "", nil + }, + configPullModeValue: "ff-only", + test: func(actual string) { + assert.Equal(t, "ff-only", actual) + }, + }, + } +} |