Просмотр исходного кода

Implemented add tag to release functions and tests

jnfrati 4 лет назад
Родитель
Сommit
19cc6a5263

+ 14 - 0
internal/repository/gorm/tag.go

@@ -77,3 +77,17 @@ func (repo *TagRepository) DeleteTag(id uint) error {
 
 	return nil
 }
+
+func (repo *TagRepository) AddTagToRelease(release *models.Release, tag *models.Tag) error {
+	err := repo.db.Model(&release).Association("tags").Append(tag)
+
+	if err != nil {
+		return err
+	}
+
+	return nil
+}
+
+func (repo *TagRepository) RemoveTagFromRelease(release *models.Release, tag *models.Tag) error {
+	return nil
+}

+ 28 - 0
internal/repository/gorm/tag_test.go

@@ -75,8 +75,36 @@ func TestAddTagToRelease(t *testing.T) {
 	}
 
 	setupTestEnv(tester, t)
+	initProject(tester, t)
+	initRelease(tester, t)
 	defer cleanup(tester, t)
 
+	release, err := tester.repo.Release().ReadRelease(1, "denver-meister-dakota", "default")
+
+	if err != nil {
+		t.Fatalf("%v\n", err)
+	}
+
+	initialTagCount := len(release.Tags)
+
+	err = tester.repo.Tag().AddTagToRelease(release, &models.Tag{
+		Name:  "some-tag",
+		Color: "#ffffff",
+	})
+
+	if err != nil {
+		t.Fatalf("%v\n", err)
+	}
+
+	release, err = tester.repo.Release().ReadRelease(1, "denver-meister-dakota", "default")
+
+	if err != nil {
+		t.Fatalf("%v\n", err)
+	}
+
+	if initialTagCount > len(release.Tags) {
+		t.Fatal("Tag wasn't added to the release")
+	}
 }
 
 func TestRemoveTagFromRelease(t *testing.T) {

+ 2 - 0
internal/repository/tag.go

@@ -10,4 +10,6 @@ type TagRepository interface {
 	ListTagsByProjectId(projectId uint) ([]*models.Tag, error)
 	UpdateTag(tag *models.Tag) (*models.Tag, error)
 	DeleteTag(id uint) error
+	AddTagToRelease(release *models.Release, tag *models.Tag) error
+	RemoveTagFromRelease(release *models.Release, tag *models.Tag) error
 }

+ 7 - 0
internal/repository/test/tag.go

@@ -27,3 +27,10 @@ func (repo *TagRepository) UpdateTag(tag *models.Tag) (*models.Tag, error) {
 func (repo *TagRepository) DeleteTag(id uint) error {
 	panic("not implemented")
 }
+func (repo *TagRepository) AddTagToRelease(release *models.Release, tag *models.Tag) error {
+	panic("not implemented")
+}
+
+func (repo *TagRepository) RemoveTagFromRelease(release *models.Release, tag *models.Tag) error {
+	panic("not implemented")
+}