summaryrefslogtreecommitdiffstats
path: root/pkg/commands/sync_test.go
diff options
context:
space:
mode:
authorEmiliano Ruiz Carletti <contact@eruizc.dev>2021-04-22 12:06:04 -0300
committerJesse Duffield <jessedduffield@gmail.com>2021-06-15 08:31:07 +1000
commit01e4467d76d1916ae6c495efa6930bb16b9b3a67 (patch)
tree7b908a7729f8593a74e34ae3d2793b36739a4a47 /pkg/commands/sync_test.go
parentb4e6850f98987d23a0211cb5b9b91d173c1e7210 (diff)
Add test cases for pull mode
Diffstat (limited to 'pkg/commands/sync_test.go')
-rw-r--r--pkg/commands/sync_test.go125
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)
+ },
+ },
+ }
+}