bridge/github: add getNewTitle tests

Amine Hilaly created

Change summary

bridge/gitlab/export_test.go       |  1 
bridge/gitlab/import.go            | 12 +++---
bridge/gitlab/import_notes.go      |  2 +
bridge/gitlab/import_notes_test.go | 56 ++++++++++++++++++++++++++++++++
bridge/gitlab/iterator.go          |  1 
5 files changed, 66 insertions(+), 6 deletions(-)

Detailed changes

bridge/gitlab/import.go 🔗

@@ -138,11 +138,6 @@ func (gi *gitlabImporter) ensureNote(repo *cache.RepoCache, b *cache.BugCache, n
 		return err
 	}
 
-	hash, errResolve := b.ResolveOperationWithMetadata(keyGitlabId, id)
-	if errResolve != cache.ErrNoMatchingOp {
-		return errResolve
-	}
-
 	noteType, body := GetNoteType(note)
 	switch noteType {
 	case NOTE_CLOSED:
@@ -189,6 +184,10 @@ func (gi *gitlabImporter) ensureNote(repo *cache.RepoCache, b *cache.BugCache, n
 		}
 
 	case NOTE_COMMENT:
+		hash, errResolve := b.ResolveOperationWithMetadata(keyGitlabId, id)
+		if errResolve != cache.ErrNoMatchingOp {
+			return errResolve
+		}
 
 		cleanText, err := text.Cleanup(body)
 		if err != nil {
@@ -226,7 +225,7 @@ func (gi *gitlabImporter) ensureNote(repo *cache.RepoCache, b *cache.BugCache, n
 			_, err = b.EditCommentRaw(
 				author,
 				note.UpdatedAt.Unix(),
-				hash,
+				git.Hash(comment.Id()),
 				cleanText,
 				nil,
 			)
@@ -327,6 +326,7 @@ func (gi *gitlabImporter) ensurePerson(repo *cache.RepoCache, id int) (*cache.Id
 		user.Username,
 		user.AvatarURL,
 		map[string]string{
+			// because Gitlab
 			keyGitlabId:    strconv.Itoa(id),
 			keyGitlabLogin: user.Username,
 		},

bridge/gitlab/import_notes.go 🔗

@@ -30,6 +30,7 @@ const (
 func GetNoteType(n *gitlab.Note) (NoteType, string) {
 	// when a note is a comment system is set to false
 	// when a note is a different event system is set to true
+	// because Gitlab
 	if !n.System {
 		return NOTE_COMMENT, n.Body
 	}
@@ -88,6 +89,7 @@ func GetNoteType(n *gitlab.Note) (NoteType, string) {
 // getNewTitle parses body diff given by gitlab api and return it final form
 // examples: "changed title from **fourth issue** to **fourth issue{+ changed+}**"
 //           "changed title from **fourth issue{- changed-}** to **fourth issue**"
+// because Gitlab
 func getNewTitle(diff string) string {
 	newTitle := strings.Split(diff, "** to **")[1]
 	newTitle = strings.Replace(newTitle, "{+", "", -1)

bridge/gitlab/import_notes_test.go 🔗

@@ -0,0 +1,56 @@
+package gitlab
+
+import (
+	"testing"
+
+	"github.com/stretchr/testify/assert"
+)
+
+func TestGetNewTitle(t *testing.T) {
+	type args struct {
+		diff string
+	}
+	type want struct {
+		title string
+	}
+	tests := []struct {
+		name string
+		args args
+		want want
+	}{
+		{
+			name: "addition diff",
+			args: args{
+				diff: "**first issue** to **first issue{+ edited+}**",
+			},
+			want: want{
+				title: "first issue edited",
+			},
+		},
+		{
+			name: "deletion diff",
+			args: args{
+				diff: "**first issue{- edited-}** to **first issue**",
+			},
+			want: want{
+				title: "first issue",
+			},
+		},
+		{
+			name: "mixed diff",
+			args: args{
+				diff: "**first {-issue-}** to **first {+bug+}**",
+			},
+			want: want{
+				title: "first bug",
+			},
+		},
+	}
+
+	for _, tt := range tests {
+		t.Run(tt.name, func(t *testing.T) {
+			title := getNewTitle(tt.args.diff)
+			assert.Equal(t, tt.want.title, title)
+		})
+	}
+}

bridge/gitlab/iterator.go 🔗

@@ -218,6 +218,7 @@ func (i *iterator) getNextLabelEvents() bool {
 	return true
 }
 
+// because Gitlab
 func (i *iterator) NextLabelEvent() bool {
 	if i.err != nil {
 		return false